@Dukebf
2017-07-12T00:16:39.000000Z
字数 814
阅读 1103
代码审计
代码审计要有纵观全局的意识,拿到源码后,要先理清代码的结构,阅读几个比较比较重要的文件,如首页文件,配置信息文件等。
一般分为三种方法:
定向功能分析法
通读全文法:是指对整个程序的代码阅读,从而发现问题。这种方法是最全面,但也是最麻烦,最容易出错的。
如果是大型程序代码,代码量非常大,相当耗费时间,这种方法一般是企业对自己自身产品进行审计。不过,这种方法对挖掘漏洞非常有效。通过阅读得到整个应用的业务逻辑,可以挖掘到更多具有价值的漏洞。
函数回溯法: 大多数的漏洞是因为函数的使用不当造成的,只要找到这些使用不当的函数,就可以快速发现想要挖掘的漏洞。
这种方法相对比较快速和高效,也可以使用工具进行审计,工具的原理是利用正则表达式,匹配一些危险的函数,敏感关键字,然后得到这些函数,就可以分析阅读上下文,追踪源头。
定向功能分析法: 该方法主要是根据程序的业务逻辑和业务功能进行审计。首先,大概浏览网站的页面,比如上传功能,浏览功能,,可以猜测这个程序有哪些漏洞,如上传漏洞,XSS漏洞等,然后再针对猜测的结果进行定向分析。 常见的功能漏洞:
函数回溯法中,查找漏洞可以通过bash语言来快速查找,如查找src文件夹下所有未经过滤就执行的SQL语句:
查找
mssql_query()
,mysql_query()
,mysql_db_query()
且直接将用户输入插入到SQL语句中的文件,并打印出匹配内容的文件名和行号。
$ grep -r -n "\(mssql\|mysql\|mysql_db\)_query\(.*\$\GET\|\POST\) .*\)" src/ awk -F: '{print "filename: "$1"\nlines: "$2"\nmatch: "$3"\n\n}'