菜鸟追梦

代码审计方法与准备

2017-09-19  本文已影响230人  xaviershun

代码审计环境准备

本地测试环境:php + mysql 环境。如:phpstudy,wamp等
文档编辑器:sublime text 2, UltraEdit, notepad++
Sublime Text 2 还需要一些插件来辅助审计:
Package Control,CTags,PHPTidy ,Alignment,ConvertToUTF8
浏览器:Firefox
Firefox 插件:FoxyProxy、Hackbar、ModifyHeaders、Use Agent Switcher、Firebug
其他工具:Burp Suit、XDebug、vMysqlMonitoring、WEB编码转换工具
vMysqlMonitoring:提取自Seay法师的审计工具,一款mysql语句直接日志记录工具

审计前的准备和方法

基础准备

把握大局

把握大局-网站结构

网站目录结构:

审计方法:

通读全文法:通读全文发作为一种最麻烦的方法也是最全面的审计方法。特别是针对大型程序,源码成千上万行,这要读到什么时候。但是该方法也是一种必要的方法。了解整个应用的业务逻辑,才能挖掘到更多更有价值的漏洞。这种方法一般是企业对自身产品的审计,当然,对于小型应用,未尝不可以读一读。
前面的把把握大局也包含在通读全文法里面。
可以通过 把握大局,了解整体结构,再通过入口文件,进入各功能进行审计。

敏感函数参数回溯法:根据敏感函数,逆向追踪参数传递的过程。这个方法是最高效,最常用的方法。
大多数漏洞的产生是因为函数的使用不当导致的。我们只要找到这样的一些使用不当的函数,就可以快速挖掘想要的漏洞。
宣传一款神器—— Seay源代码审计系统,主要是利用正则匹配一些高危函数、关键函数以及敏感关键字。
然后,我们就可以分析判断敏感函数的上下文,追踪参数源头。尝试控制可控的参数变量。

定向功能分析法:根据程序的业务逻辑审计。
首先是用浏览器逐个访问浏览,看看这套程序有那些功能。根据相关功能,大概推测可能存在那些漏洞。
常见功能漏洞:包括但不限于:

总结:
实际应用中,通常是一套组合拳,要灵活应用。一般先把握大局,考虑是否通读全文,再根据定向功能法针对每一项功能进行审计;最后,敏感函数参数回溯。

代码审计推荐

i春秋平台 Virink老师的《PHP代码审计实战》课程
Seay法师的《代码审计:企业级web代码安全架构》,法师的博客:http://www.cnseay.com/

上一篇 下一篇

猜你喜欢

热点阅读