代碼審計(jì)之論

代碼審計(jì)現(xiàn)狀

?? ?隨著開發(fā)人員的安全意識(shí)逐步提高错敢,導(dǎo)致漏洞挖掘的難度逐年遞增比驻。而代碼審計(jì)檀咙,逐漸出現(xiàn)在大家的視野里棋蚌,方便了安全人員能夠更易挖掘到很多黑盒測(cè)試不容易發(fā)現(xiàn)的漏洞威脅嫁佳。但是由于系列代碼審計(jì)從0到1的資料比較稀缺,導(dǎo)致懂代碼審計(jì)的人相對(duì)屬于少數(shù)人員谷暮,而大部分web安全人員還徘徊在已知漏洞利用階段蒿往。

代碼審計(jì)之問

?? ?有大部分小伙伴沒有真正接觸代碼審計(jì),沒有具體去實(shí)踐代碼審計(jì)的肯定會(huì)有這樣的疑問湿弦。要做代碼審計(jì)需要懂哪些知識(shí)叭柯?給一套程序如何下手颊埃?我看得懂別人的代碼審計(jì)案例蔬充,但是到自己下手時(shí)就沒了思路了呢?找到漏洞不會(huì)構(gòu)造POC 怎么辦等等班利。筆者認(rèn)為問這些問題的主要原因是不知道代碼審計(jì)的流程饥漫。如果你知道代碼審計(jì)的流程,你就知道哪個(gè)環(huán)節(jié)需要學(xué)習(xí)掌握哪些知識(shí)罗标;如何下手審計(jì)代碼庸队;選擇什么樣的方式去下手积蜻;如何構(gòu)造Payload,編寫POC來驗(yàn)證漏洞的存在彻消。

筆者認(rèn)為代碼審計(jì)的流程是:審計(jì)前的準(zhǔn)備->定位漏洞產(chǎn)生點(diǎn)->URL鏈接構(gòu)造訪問漏洞產(chǎn)生點(diǎn)->payload構(gòu)造突破各種防御/編碼轉(zhuǎn)換->證實(shí)漏洞存在竿拆。下面我們以php代碼審計(jì)為例來進(jìn)行分析。

審計(jì)前的準(zhǔn)備

?? ?環(huán)境搭建+調(diào)試工具

? 別人給我們一套php程序讓我們做代碼審計(jì)证膨,通過漏洞挖掘驗(yàn)證漏洞的存在如输。我們?cè)谀玫匠绦蛑螅紫纫龅氖黔h(huán)境搭建央勒,讓程序運(yùn)行起來方便我們調(diào)試不见,驗(yàn)證。這就要求懂得windows版的php環(huán)境搭建或者linux版的php環(huán)境搭建崔步。筆者推薦一款集成開發(fā)環(huán)境phpstudy稳吮。這款集成環(huán)境不論是windows還是linux安裝方便,php版本切換一鍵搞定井濒。環(huán)境搭建完畢后灶似,我們要使用編輯器去修改代碼調(diào)試程序,這里推薦使用IDE瑞你,phpstrom酪惭。該款編輯器美化精致,功能強(qiáng)大者甲,可在phpstrom上配置xdebug 來進(jìn)行調(diào)試方便漏洞挖掘春感。所以這里我們要學(xué)習(xí)phpstrom的簡單使用及關(guān)鍵詞搜索與xdebug的配置。?? ?

定位漏洞發(fā)生點(diǎn)

?尋找定位漏洞發(fā)生點(diǎn)一般有如下幾種方式虏缸。

1全文通讀正向?qū)徲?jì)

2功能點(diǎn)審計(jì)

3關(guān)鍵詞定位逆向追蹤

4灰盒+白盒審計(jì)

?? ?在進(jìn)行代碼審計(jì)的時(shí)候鲫懒,各種方式進(jìn)行組合使用是比較高效的,當(dāng)然這是對(duì)有審計(jì)經(jīng)驗(yàn)的人來說的刽辙,沒有的還是慢慢針對(duì)一種方式練習(xí)一下窥岩。

在尋找漏洞定位漏洞發(fā)生點(diǎn)之前,審計(jì)者首先要清楚自己的定位宰缤,想要挖單種類型的漏洞颂翼,常規(guī)類型漏洞,還是業(yè)務(wù)類型邏輯漏洞撵溃,是想挖掘哪些比較難發(fā)現(xiàn)的漏洞疚鲤,還是想挖掘比較容易挖掘的漏洞。挖掘什么樣的漏洞缘挑,你就要熟悉什么樣的漏洞類型產(chǎn)生原理集歇,知道哪些函數(shù)利用不當(dāng)或本身的脆弱性或未過濾/有效過濾造成的漏洞威脅。 比如涉及到sql注入時(shí)语淘,因?yàn)樗漠a(chǎn)生是可控參數(shù)在與數(shù)據(jù)庫交互的時(shí)沒有有效過濾與原有SQL語句拼接在一起造成的注入漏洞诲宇,這時(shí)你就要專門查找與數(shù)據(jù)庫交互的功能际歼;又比如XSS, 它是在瀏覽器渲染的時(shí)候姑蓝,可控參數(shù)被當(dāng)做js代碼執(zhí)行造成的鹅心,這時(shí)候你就要查找在輸出端時(shí),可控參數(shù)會(huì)不會(huì)被導(dǎo)致js執(zhí)行纺荧。其他常規(guī)類型漏洞挖掘時(shí)旭愧,可直接定位關(guān)鍵詞來回溯。 挖掘單種類型漏洞或者常規(guī)類型漏洞宙暇,可以使用自動(dòng)化審計(jì)工具如國際流行的rips输枯,國內(nèi)seay大牛的源代碼審計(jì)工具,進(jìn)行關(guān)鍵詞定位搜索占贫,然后在去驗(yàn)證漏洞的存在及可用性桃熄。

?? ?全文通讀正向?qū)徲?jì)并非代碼全讀,且屬于正向追蹤型奥。審計(jì)框架級(jí)的程序瞳收,先找出開發(fā)手冊(cè)來熟悉一下,然后在根據(jù)手冊(cè)挑出有可控點(diǎn)的方法往下追代碼厢汹,如帶入了哪個(gè)方法螟深,調(diào)用了哪個(gè)函數(shù),一直追到不能追了或者追到有漏洞點(diǎn)位置為止烫葬,這樣的好處是漏洞發(fā)現(xiàn)的覆蓋率高血崭,追蹤好追蹤,url鏈接好構(gòu)造厘灼;審計(jì)沒有手冊(cè)的程序,就專門找URL鏈接可直接請(qǐng)求到的方法咽瓷,且該方法中代碼有帶可控點(diǎn)方法調(diào)用设凹,然后如上追代碼。例如請(qǐng)求的url鏈接是localhost/user/updatePassword,這個(gè)鏈接映射的代碼位置是user模塊的updatePassword方法茅姜,該方法中有代碼$User->where('id='.$_GET['id'])->save(); 我們看到where()方法中有帶入可控參數(shù)id闪朱,那我們就繼續(xù)往下追蹤where方法去尋找漏洞發(fā)生點(diǎn)。

? 功能點(diǎn)審計(jì)適用于常規(guī)類型漏洞钻洒,也適用于邏輯類型漏洞奋姿。為什么這么說呢?比如一個(gè)忘記密碼找回的功能點(diǎn)素标,我們猜測(cè)該功能點(diǎn)可能會(huì)有SQL注入称诗,驗(yàn)證碼繞過,爆破重置密碼头遭,越權(quán)等漏洞寓免,所以我們?cè)趯徲?jì)功能點(diǎn)的時(shí)候癣诱,就會(huì)著重進(jìn)行預(yù)測(cè)漏洞類型的審計(jì)。一般有了一定代碼審計(jì)經(jīng)驗(yàn)的人在做SDL的威脅建模時(shí)袜香,效率就會(huì)高很多撕予。

URL鏈接構(gòu)造訪問漏洞產(chǎn)生點(diǎn)

? 到了這個(gè)環(huán)節(jié),必不可少的要熟悉程序的目錄文件結(jié)構(gòu)蜈首,URL路由实抡。一般訪問漏洞產(chǎn)生點(diǎn)會(huì)有兩種方式,一種是通過URL連接構(gòu)造直接訪問和間接訪問欢策。直接訪問是漏洞產(chǎn)生點(diǎn)在可通過URL直接映射到的方法中吆寨,間接方法是漏洞點(diǎn)在直接映射的方法內(nèi)所調(diào)用的其他方法(可多級(jí)遞歸)中。想要學(xué)會(huì)URL構(gòu)造猬腰,一般有三種方式鸟废,①網(wǎng)站鏈接點(diǎn)擊+目錄結(jié)構(gòu)尋找控制器方法。隨便點(diǎn)擊搭建起來的目標(biāo)網(wǎng)站鏈接姑荷,通過對(duì)比鏈接盒延,和目錄文件結(jié)構(gòu)來模仿構(gòu)造URL鏈接②看手冊(cè)找到URL路由結(jié)構(gòu)的映射方式③是看代碼+經(jīng)驗(yàn)。

PAYLOAD構(gòu)造

一般可控參數(shù)在到漏洞發(fā)生點(diǎn)時(shí)鼠冕,可能會(huì)遇到代碼防御過濾添寺,類型轉(zhuǎn)換,編碼轉(zhuǎn)換等懈费。所以在可控參數(shù)到漏洞發(fā)生點(diǎn)期間计露,進(jìn)行了哪些,防御憎乙,轉(zhuǎn)換票罐,編碼等做一個(gè)流程圖,在最后漏洞發(fā)生點(diǎn)想要執(zhí)行什么樣的結(jié)果泞边,寫出來该押,然后拿著最后執(zhí)行的效果往上推,一直推到可控參數(shù)傳參的位置阵谚。在這個(gè)環(huán)節(jié)蚕礼,必不可少的要掌握一些滲透技巧,跟payload編寫技巧梢什,方便在用到的時(shí)候能真正做到靈活運(yùn)用奠蹬。

其他

在代碼審計(jì)時(shí),我們不光要注意到代碼的問題嗡午,還要注意到php.ini配置問題囤躁,中間件結(jié)合的問題等各種影響因素,而且在審計(jì)一套你未曾審計(jì)的源碼時(shí),可查閱一下前輩們審計(jì)的該套目標(biāo)程序的漏洞產(chǎn)生情況割以,熟悉開發(fā)人員的開發(fā)安全意識(shí)及漏洞忽略點(diǎn)來進(jìn)行漏洞預(yù)測(cè)挖掘金度。

總結(jié)一下,通過上面簡單的論述严沥,對(duì)代碼審計(jì)已經(jīng)有了一個(gè)初步的了解猜极,掌握了代碼審計(jì),你不光熟悉了編程語言消玄,滲透測(cè)試技巧跟伏,更學(xué)會(huì)了漏洞挖掘,也就是說你同時(shí)掌握了三種技術(shù)翩瓜。

喜歡就點(diǎn)個(gè)關(guān)注唄~謝謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末受扳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子兔跌,更是在濱河造成了極大的恐慌勘高,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坟桅,死亡現(xiàn)場(chǎng)離奇詭異华望,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)仅乓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門赖舟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夸楣,你說我怎么就攤上這事宾抓。” “怎么了豫喧?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵石洗,是天一觀的道長。 經(jīng)常有香客問我紧显,道長劲腿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任鸟妙,我火速辦了婚禮,結(jié)果婚禮上挥吵,老公的妹妹穿的比我還像新娘重父。我一直安慰自己,他們只是感情好忽匈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布房午。 她就那樣靜靜地躺著,像睡著了一般丹允。 火紅的嫁衣襯著肌膚如雪郭厌。 梳的紋絲不亂的頭發(fā)上袋倔,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音折柠,去河邊找鬼宾娜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扇售,可吹牛的內(nèi)容都是我干的前塔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼承冰,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼华弓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起困乒,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤寂屏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后娜搂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迁霎,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年涌攻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了欧引。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恳谎,死狀恐怖芝此,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情因痛,我是刑警寧澤婚苹,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站鸵膏,受9級(jí)特大地震影響膊升,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谭企,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一廓译、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧债查,春花似錦非区、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春管怠,著一層夾襖步出監(jiān)牢的瞬間淆衷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國打工渤弛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留祝拯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓暮芭,卻偏偏與公主長得像鹿驼,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辕宏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容