代碼審計必備知識點:
1、代碼審計開始前準備:
環(huán)境搭建使用,工具插件安裝使用,掌握各種漏洞原理及利用,代碼開發(fā)類知識點。
2、代碼審計前信息收集:
審計目標的程序名,版本,當前環(huán)境(系統(tǒng),中間件,腳本語言等信息),各種插件等。
3、代碼審計挖掘漏洞根本:
可控變量及特定函數(shù),不存在過濾或過濾不嚴謹可以繞過導致的安全漏洞。
4、代碼審計展開計劃:
審計項目漏洞原理->審計思路->完整源碼->應用框架->驗證并利用漏洞。
代碼審計兩種方法:
1.根據(jù)關(guān)鍵字找到敏感函數(shù)
2.根據(jù)目標功能判斷可能存在的漏洞
案例:審計- Bluecms 1.6源碼系統(tǒng)存在sql注入漏洞-正則表達式
1.搭建好環(huán)境
2.將源碼導入到phpstorm代碼審計工具中
3.使用正則表達式 全局搜索(Ctrl+Shift+F) sql注入關(guān)鍵字
正則表達式:(update|select|insert|delete|).*?where.*=
4.根據(jù)正則表達式搜索到的信息成功找到一處sql查詢語句,且語句中有變量可控
5.查看getone函數(shù)的聲明,發(fā)現(xiàn)是用來執(zhí)行sql語句的。說明這段sql語句會被執(zhí)行。
6.通關(guān)追蹤(Ctrl+F)可控變量,發(fā)現(xiàn)對其沒有進行過濾。說明存在sql注入漏洞
7.網(wǎng)站訪問出現(xiàn)漏洞的文件路徑并且傳遞參數(shù),驗證漏洞是否可用。測試后發(fā)現(xiàn)無回顯
8.到getone函數(shù)聲明處將sql語句輸出,看看$ad_id變量是否和代碼中表現(xiàn)的一樣可控
訪問地址,傳遞參數(shù)為1。發(fā)現(xiàn)$ad_id變量成功接收了傳遞的參數(shù)值變?yōu)榱?/span>1,變量可控
9.確認了變量確實可控,因為無回顯需要使用延時盲注或者布爾盲注,為了不浪費時間直接使用sqlmap進行檢測
輸入:python sqlmap.py -u 注入點地址 -p 注入點
成功檢測出目標數(shù)據(jù)庫信息——漏洞存在?。?!
輸入:python sqlmap.py -u 注入點地址 -p 注入點 --dbs
成功檢測出目標數(shù)據(jù)庫名:
案例:文件對比技術(shù)-確認漏洞產(chǎn)生位置
在cnvd等漏洞信息共享平臺經(jīng)常會發(fā)布一些某某cms爆出了某某漏洞,但是就是不公開漏洞具體信息。
如下:夢想cms后臺存在sql注入漏洞。只爆出了產(chǎn)生漏洞的版本信息,并沒有漏洞具體產(chǎn)生位置。
我們就可以使用存在漏洞的版本和更新的版本進行對比,因為更新的目的就是解決之前的問題。
查看cms官網(wǎng)更新情況,可以看到漏洞版本后又更新了一個版本,就可以下載漏洞版本和更新版本進行對比。
使用文件對比工具Beyond_Compare進行對比
工具下載:https://www.beyondcomparepro.com/download
打開工具,選擇文件夾對比,拖入兩個版本的cms。有顏色標識的就是更新后作出過更改的文件
打開有顏色表示的文件,可以看到更新后修改代碼的情況。我們就可以根據(jù)代碼的修改情況確認漏洞的產(chǎn)生位置。
聯(lián)系客服