抛砖引玉 BMZCTF渗透测试公开赛WP复现学习
背景:上周末参加了BMZCTF的渗透测试公开赛,比赛是解BMZCTF靶场中综合渗透的一道题,比赛后官方发了WP,跟着做了一遍,出现了一些问题,写出来抛砖引玉,求指导。
思路:1.官方预期解法(这……我做出来的和解法效果不一样,求大佬指点)
2.非预期解法——广州航海学院 HhhM(成功,感谢HhhM大佬的思路,学习了)
3.非预期解法——0day(等级太高了,已非我所能触及的)
题目:http://www.bmzclub.cn/ -> 综合渗透 -> 伟大宝宝的宝藏
wp:https://mp.weixin.qq.com/s/sLwDF7c8bqpB6629dGytYg
学习者:Kant
题目预览
综合渗透区——《伟大宝宝的宝藏》 题目将在比赛开始前10分钟开放 题目场景:初出茅庐的程序员伟大宝宝给公司做了一个网站,由于采用了通用的CMS所以他把存在的漏洞给修复好了,顺便做了些二次开发。 在他认为网站非常坚固的情况下,网站上线的第一天服务器就被黑客拿下来了,并且还打穿了公司内网导致公司损失重大。 他所在的公司立刻找到了你并给了你一个渗透测试项目,需要你来寻找黑客入侵的途径,并找到黑客是如何获取/root/目录下的flag文件信息的。 项目要求:请通过常规渗透测试手段对该目标进行测试。 题目提示:本题目无需扫描服务器端口、也无需目录扫描,因为是开源CMS,目录信息均可查到,可通过代码审计挖掘0day或寻找已存在的漏洞解决本题目。
预期解法
解题思路:通过二次注入拿到salt以及密码的md5值进行爆破得到后台登录密码、或者通过提示来爆破 or 猜解密码,通过文件泄露获得源码,审计通过反序列化拿到webshell、最后使用guid提权读取flag。
1.首先注册用户进行登录。发现个人中心有两个我的文件。
根据比赛时的场景提示,得知该系统被二次开发过,那么新增的功能就可能存在漏洞。
(比赛的时候完全没有注意到……心得一:看题目背景)
2.在发布文章那里尝试上传一个文件。
3.然后分别查看那两个我的文件栏目,发现都显示了自己的附件。(啊这……它不对劲。暂且略过它,继续)
4.退出当前账号,进行多次注册并尝试注入。
(1)将邮箱栏中插入一个单引号进行注册。
1111.@qq.com'
(2)再试试||
2222@22.com'||1=1#
5.每注册一次就用新账户上传一个附件。然后再去查看我的文件,发现这次其中一个没有显示文件。所以判断可能存在二次注入。(我这绝对不对劲,怎么都一样,真心看不出来有二次注入)
5.构造注入脚本来获取表名、字段名、salt、admin用户密码……
(我改了改wp里面的脚本跑了跑,果然什么都没得到 ;^( )
之后应该能得到密码的加密值为:404b56ed2dd87ed0e43bf13f8f0b0cdd,但在md5网站中无法解密。
6.因为查看个人主页发现路径都为:/?u/用户名.html
所以在个人中心中修改url地址为admin.html去访问Admin用户的空间(我比赛中为数不多的有效操作)
官方WP说在Admin用户空间点击聊天会发现提示,这里同样是题目设置的一个降低难度的提示。
然而我比赛时没注意(心得二:菜不是没有原因的),复现时发现没有聊天功能???这???
但登录admin账户后发现确实有提示
7.估计只能爆破,或者弱密码猜测。得到后9位(9个?)数字为123456789
完整密码为baobao123456789
登录admin账户并进入后台
官方解法的思路学习了,然而得到的效果不一样的太多,没办法复现,求指导。
HhhM师傅的非预期解法
1.注册账号 -> 查看个人主页路径 -> 尝试进入了admin的个人主页 -> 发现了admin的签名:md5(md5(baobao???).salt) -> 弱密码猜测
(每步的方法如预期解法)
2.搜索hybbs getshell
参考:https://www.freebuf.com/vuls/243833.html
可知插件处可以写shell。
burp抓包改包
将
name=&gn=add&name=&name2=&user=&mess=
这行改为
name=&gn=add&name=111',eval($_POST[1]),//&name2=3&user=1&mess=1
3.菜刀连接一句话木马
四处看看,查找FLAG
参考:https://www.freebuf.com/articles/system/209638.html
xxd "/root/flag" | xxd -r
.(img-gzl37aqv-1605605547164)]
四处看看,查找FLAG
参考:https://www.freebuf.com/articles/system/209638.html
xxd "/root/flag" | xxd -r