学习代码审计要熟悉三种技术,分四部分走
一:编程语言
1:前端语言 html/javascript/dom元素使用 主要是为了挖掘xss漏洞 jquery 主要写一些涉及到CSRF脚本使用的或者DOM型XSS,JSON劫持等
2:后端语言 基础语法要知道例如 变量类型,常量,数组(python 是列表,元组,字典),对象,类的调用,引用等, MVC设计模式要清楚,因为大部分目标程序都是基于MVC写的,包括不限于php,python,java。不用会写,但是一定能看懂,而且要看懂逻辑,知道哪些功能点会用什么方式去写,可能会出现什么类型漏洞,方便挖掘常规类型漏洞,更方便挖掘逻辑漏洞
二:渗透技巧
1:工具渗透 例如sqlmap, awvs,burpsuite等 为什么使用 能用工具挖掘到你还人工审计干什么,及辅助调试
2: 手工渗透
3: 原因
为什么要懂渗透技巧 其一在于你找到漏洞的时候,通常的开发功底是不足以构造PAYLOAD的,需要一些特殊的PADYLOAD构造方式。其二你在找漏洞时,可以辅助你更快的去挖掘漏洞
三:辅助技术
1:协议 例如HTTP传输方式,dict:// file://等,懂得Header头如何伪造 比如XFF注入时的x-forward-for,cookie注入,CRLF身份请求伪造等。
2:程序搭建 你审计时要学会程序搭建,不然静态审计时,无法进行动态调试,方便你更快更高效挖掘漏洞
3:URL链接构造或者URL路由
4:SQL语句及数据库特性 这个主要涉及到SQL注入及sql注入的payload构造绕过
5:中间件及服务器特性 有的代码漏洞 是基于中间件及服务器特性造成的 例如IIS6.0的解析 nginx的解析漏洞等
6:审计辅助工具 ①IDE,phpstrom 审计工具追踪代码时用到,可与xdebug绑定使用方便调试②源代码审计工具 rips,seay审计工具,辅助你更快的找到漏洞产生点
四:漏洞挖掘
1:懂得漏洞类型产生原理
2:懂得危险函数的参数不当使用可造成的漏洞威胁 例如涉及到命令执行代码执行的eval,assert,array_map,usort等,例如本身函数的脆弱性,is_numeric,md5等
3:晓得php函数的脆弱性 比如==与=== ,===并不是强大无比不可绕过的,也要结合代码设计逻辑
4:php的淫技技巧
5:php版本及配置不当结合函数不当利用造成的漏洞威胁
6:成长阶段:demo案例练习->已出漏洞代码审计案例分析->小型cms单一漏洞实例练习->小型cms漏洞多种类型漏洞实例挖掘练习->框架漏洞挖掘实例练习->技巧挖掘
不要觉得代码审计很容易,也不要觉得代码审计很难。重在坚持,重在分析,你做到了,0day就在眼前,我们先以文字分享代码审计0到1的系列课程,在以视频图书辅助,让跟上节奏的同学人人都能代码审计。