本文已参与「新人创作礼」活动,一起开启掘金创作之路。
RCE分为远程命令执行ping和远程代码执行evel。
漏洞出现的原因:没有在输入口做输入处理。
我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。
一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。其实这就是一个接口,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统,这就是RCE漏洞。
这里涉及到一个ping命令:
Ping是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。
Windows系统支持的管道符如下:
-
“|”:直接执行后面的语句。
-
“||”:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。
-
“&”:两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。
-
“&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。
Linux系统支持的管道符如下:
-
“;”:执行完前面的语句再执行后面的语句。
-
“|”:显示后面语句的执行结果。
-
“||”:当前面的语句执行出错时,执行后面的语句。
-
“&”:两条命令都执行,如果前面的语句为假则执行执行后面的语句,前面的语句可真可假。
-
“&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。
1,eval执行
通过这段代码可以看到,这就是典型的web后门
可以通过蚁剑连接
\
?cmd=system("ls");
?cmd=system("ls ../"); 查找上级目录
?cmd=system("ls ../../"); 在这一层找到flag
?cmd=system("ls /"); 也可以直接在根目录中找到 ls/ 显示的是根目录
?cmd=system("cat%20/flag_21353");
\
2,文件包含
\
strpos() 函数
#函数查找字符串在另一字符串中第一次出现的位置(区分大小写)
strpos("You love php, I love php too!","php");
$_REQUEST
php中$_REQUEST可以获取以POST方法和GET方法提交的数据,缺点:速度比较慢 。
._POST、$_GET 的区别和联系
_POST["参数"] _REQUEST["参数"]比较慢。
通过post和get方法提交的所有数据都可以通过$_REQUEST数组["参数"]获得
3,php://input
if ( substr($_GET["file"], 0, 6) === "php://" ) {
include($_GET["file"]);
的目的是限制只能使用php开头的伪协议。。。截取字符串前六个字符需要 与 php://相等,也就是file变量的值 的前六个字符需要与 php://相等。
所以写个题应该是要用到php伪协议。