116197402307870697
前言
任意命令执行(Arbitrary Command Execution)
远程命令执行(Remote Command Execution)
漏洞原理
- 代码中出现了可以执行Shell命令的代码,且被执行的Shell命令可以通过参数传递
利用前提
常见业务
漏洞利用
打断符号,用于末尾拼接自定义命令
;(Linux Shell、Windows PowerShell)、&(Windows CMD):无论前序命令是否执行成功,都会执行后续命令
|:管道符,将前序命令的输出作为后续命令的输入
&&:逻辑与,前序命令执行成功才会继续执行后续命令
||:逻辑或,前序命令执行失败才会继续执行后续命令
1
| ping 127.0.0.1 | <shell>
|
- Linux Shell 中强制将命令执行,然后作为上一个命令的参数,从报错中获取结果
绕过
关键词过滤
改用字符串拼接
改用Base64编码
1
| echo "Y2F0IC9ldGMvcGFzc3dk" | base64 -d | bash
|
空格过滤
改用内部域分隔符
- 内部域分隔符(IFS, Internal Field Separator),也就是 Linux Shell 中内置的分隔符变量
- 改为使用
$IFS作为分隔符
完成
参考文献
哔哩哔哩——千锋教育网络安全学院