一、RCE概念学习
RCE英文全称:remote command/code execute,分为远程命令执行ping和远程代码执行evel。
漏洞出现的原因:没有在输入口做输入处理。
我们常见的路由器、防火墙、入侵检测等设备的web管理界面上,一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。其实这就是一个接口,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统,这就是RCE漏洞。
Ping是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。
eval是Python的一个内置函数,功能十分强大,这个函数的作用是,返回传入字符串的表达式的结果。就是说:将字符串当成有效的表达式 来求值并返回计算结果。eval函数就是实现list、dict、tuple与str之间的转化,同样str函数把list,dict,tuple转为为字符串。
后端代码:
远程命令执行ping:
$result.=shell_exec('ping '.$ip);//直接将变量拼接进来,没做处理
远程代码执行evel:
if(@!eval($_POST['txt']))
可以看出没有做处理,和上面(远程命令执行ping)不同的是,这里是PHP代码,而上面(远程命令执行ping)执行的是命令行。
二、练习记录
1、远程命令执行ping
尝试127.0.0.1 $ systeminfo,可以多尝试一下其他命令,如net user查看一下有哪些用户;net start查看一下开启哪些服务。
2、远程代码执行evel
参考: