代码审计之如何通过Grep命令寻找脆弱点

好的代码注释规范

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* @author root 作者 E-mail:
* @date 创建时间:2018年7月28日 上午10:46:03
* @version 1.0
* @parameter @param mapping
* @parameter @param form
* @parameter @param request
* @parameter @param response
* @parameter @return
* @parameter @throws Exception
* @since
* @return
*/

所有的代码审计工具只能辅助我们进行漏洞发现,由于现在代码审计工具逻辑漏洞是无法发现,只能靠人工进行源代码审计。审计套路网上也比较多。大概方法 分为以下几种:
工具+人工法审计 主要是根据代码审计工具进行函数遍历正则匹配,另加上人工对漏洞敏感度进行查找。
代码通读法 主要是根据代码整体逻辑进行漏洞挖掘,这样耗费时间比较大,但是可以挖到比 较有价值的漏洞。还有一些商业化工具,这里暂且不讲。讲一下本漏洞经常用的 几款比较免费功能强大的工具。

  • Seay
  • Cobra
  • Rips
  • Burp
  • BadCode(subline3)

手工查XSS

1
2
3
4
5
grep -Ri "echo" .
grep -Ri "\$_" . | grep "echo"
grep -Ri "\$_GET" . | grep "echo"
grep -Ri "\$_POST" . | grep "echo"
grep -Ri "\$_REQUEST" . | grep "echo"

命令执行

1
2
3
4
5
6
7
grep -Ri "shell_exec(" .
grep -Ri "system(" .
grep -Ri "exec(" .
grep -Ri "popen(" .
grep -Ri "passthru(" .
grep -Ri "proc_open(" .
grep -Ri "pcntl_exec(" .

代码注入

1
2
3
4
grep -Ri "eval(" .
grep -Ri "assert(" .
grep -Ri "preg_replace" . | grep "/e"
grep -Ri "create_function(" .

SQL注入

1
2
grep -Ri "\$sql" .
grep -Ri "\$sql" . | grep "\$_"

信息泄露

1
grep -Ri "phpinfo" .

Debug调式

1
2
3
grep -Ri "debug" .
grep -Ri "\$_GET['debug']" .
grep -Ri "\$_GET['test']" .

RFI/LFI

1
2
3
4
5
6
7
grep -Ri "file_include" .
grep -Ri "include(" .
grep -Ri "require(" .
grep -Ri "require(\$file)" .
grep -Ri "include_once(" .
grep -Ri "require_once(" .
grep -Ri "require_once(" . | grep "\$_"

Misc

1
2
grep -Ri "header(" . | grep "\$_"
grep -Ri '$_SERVER["HTTP_USER_AGENT"]' .

文件类型

1
grep -Ri file_get_contents .