什么是RCE
这里涉及到一个概念:ping
Ping是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。应用格式:ping空格IP地址,如下图:
image-20211224164019276
RCE英文全称:remote command/code execute 分为远程命令执行ping和远程代码执行evel。漏洞出现的原因:没有在输入口做输入处理。我们常见的路由器、防火墙、入侵检测等设备的web管理界面上 一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。其实这就是一个接口,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统,这就是RCE漏洞。具体后端代码如下:
$result.=shell_exec('ping '.$ip);//直接将变量拼接进来,没做处理
具体案例(远程命令执行ping):
image-20211224164139187
下图说明开发者想让用户输入的只有IP地址:
但是如果没有做严格的处理,我们就可以拼接其他的语句上去,比如:net start 查看开启了哪些服务
image-20211224164236763
image-20211224164254754
从上可以看出,相当于直接操控服务器电脑的cmd命令行!高危漏洞!
具体案例(远程代码执行evel):
后端代码:
if(@!eval($_POST['txt']))
可以看出没有做处理,和上面(远程命令执行ping)不同的是,这里是PHP代码,而上面(远程命令执行ping)执行的是命令行。
image-20211224164440884
执行后效果图
image-20211224164508372
命令执行漏洞小结
https://mp.weixin.qq.com/s/l1d1hrmLFNRdylyW-QldWQ
thinkphp5 RCE
thinkphp5最出名的就是rce,于是写了一个检测的工具,版本v1.0,后续会添加更多的功能和验证方式,大佬轻喷。
影响范围:
ThinkPHP 5.0 - 5.1版本
危害:
远程代码执行
检测工具
image-20211224170102246
修复
升级ThinkPHP5至安全版本