RCE(一)

34 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

 RCE分为远程命令执行ping和远程代码执行evel。

  漏洞出现的原因:没有在输入口做输入处理。

  我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。

  一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。其实这就是一个接口,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统,这就是RCE漏洞。

 

  这里涉及到一个ping命令:

  Ping是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。

 Windows系统支持的管道符如下:

 

  1. “|”:直接执行后面的语句。

  2. “||”:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。

  3. “&”:两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。

  4. “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

 

 

  Linux系统支持的管道符如下:

  1. “;”:执行完前面的语句再执行后面的语句。

  2. “|”:显示后面语句的执行结果。

  3. “||”:当前面的语句执行出错时,执行后面的语句。

  4. “&”:两条命令都执行,如果前面的语句为假则执行执行后面的语句,前面的语句可真可假。

  5. “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

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方法提交的数据,缺点:速度比较慢 。

.REQUEST_REQUEST、_POST、$_GET 的区别和联系

REQUEST["参数"]具用_REQUEST["参数"]具用_POST["参数"] GET["参数"]的功能,但是_GET["参数"]的功能,但是_REQUEST["参数"]比较慢。

通过post和get方法提交的所有数据都可以通过$_REQUEST数组["参数"]获得

3,php://input

if ( substr($_GET["file"], 0, 6) === "php://" ) {

include($_GET["file"]);

的目的是限制只能使用php开头的伪协议。。。截取字符串前六个字符需要 与 php://相等,也就是file变量的值 的前六个字符需要与 php://相等。

所以写个题应该是要用到php伪协议。