github在2021年推出了全新的代码搜索服务 cs.github.com 。此服务在2022年5月27日的今天似乎还是测试版本。
如上图所见,新版的代码搜索服务除了language
或者 path
等原本就有的搜索标签,还添加了逻辑关键字 OR
或者 NOT
来处理复杂的筛选条件,最最重量级的是支持通过正则搜索代码。
在早期的一些代码审计工具,如 seay代码审计工具
等软件中,审计代码的方式可谓十分简单粗暴——直接使用正则匹配代码文本,但这种简单手法确实有一定效果。如果我们使用新的代码搜素的正则匹配,是不是也可以搜到一些漏洞?
我在上一年的12月通过申请获得了内测权限,但因为期末考试的原因没有使用,然后便忘记了。而在最近我又想起了这一想法,并成功找到(捡漏)了一个SQL注入漏洞。
想要通过正则来搜索到有漏洞的代码,需要我们对漏洞模式有很深的了解。我们需要知道什么样的代码会有什么样的洞,才能写出对应的正则来搜素代码。
这算是一个代码及其固定的一个洞了,简单来说就是存在下面的代码时:
location /i {
alias /data/w3/images/;
}
我们只需要访问/i../something
便会导致其拼接为 /data/w3/images/../something
的路径,导致目录穿越。
我们可以尝试搜素开源项目中的 docker
或者其他配置来寻找漏洞,这里我们可以简单的写出正则加以匹配。
/location (\\/[\\w\\d\\/]*)(\\/[\\w\\d]+?) \\{[\\w\\s]+alias [\\w\\d\\s\\/]+\\/;/ NOT path:*.md
# 匹配location
[ location ]
# 匹配location后的路由,路由最后没有`/`
[ (\\/[\\w\\d\\/]*)(\\/[\\w\\d]+?) ]
# 匹配`{`
[ \\{[\\w\\s]+ ]
# 匹配alias及之后的路由,路由最后有`/`
[ alias [\\w\\d\\s\\/]+\\/; ]
搜素结果如下