摘要:在代碼審計(jì)中,按業(yè)務(wù)流程審計(jì)當(dāng)然是必須的,人工的流程審計(jì)的優(yōu)點(diǎn)是能夠更加全面的發(fā)現(xiàn)漏洞,但是缺點(diǎn)是查找漏洞效率低下。代碼審計(jì)學(xué)習(xí)之旅總有人問我代碼審計(jì)該怎么學(xué)習(xí),該從哪學(xué)習(xí),現(xiàn)在統(tǒng)一回復(fù),表示我也不知道。。。
在代碼審計(jì)中,按業(yè)務(wù)流程審計(jì)當(dāng)然是必須的,人工的流程審計(jì)的優(yōu)點(diǎn)是能夠更加全面的發(fā)現(xiàn)漏洞,但是缺點(diǎn)是查找漏洞效率低下。如果要定向的查找漏洞,逆向跟蹤變量技術(shù)就顯得更加突出,如查找XSS、SQL注入、命令執(zhí)行……等等,逆向查找變量能夠快速定位漏洞是否存在,本次已SQL注入為例。
本文作者:黑客小平哥,i春秋首發(fā)
前言
本篇文章原本是個(gè)PPT,但是一直放著沒有分享,想著閑著也是閑著,那就改成文章發(fā)布吧。其實(shí)本篇重點(diǎn)在于兩個(gè)知識(shí)點(diǎn),一個(gè)是代碼審計(jì)的逆向思維,另一個(gè)是二次攻擊漏洞,其他的我都省略了,就寫幾個(gè)重要的吧。對于二次攻擊我也是最近才研究的,研究了點(diǎn)皮毛,錯(cuò)誤之處還請廣大圈友指正,謝謝。
代碼審計(jì)學(xué)習(xí)之旅
總有人問我代碼審計(jì)該怎么學(xué)習(xí),該從哪學(xué)習(xí),現(xiàn)在統(tǒng)一回復(fù),表示我也不知道。。。
但是對于個(gè)人的學(xué)習(xí)路線來說,路程是漫長而艱辛的,建議學(xué)習(xí)如下(直接截圖了):
上面我寫的是“熟悉”,這只是對剛?cè)胄械耐瑢W(xué)說的,作為代碼審計(jì)來說,熟練編寫代碼程序是必須的,要想深度化發(fā)展,精通一門語言是必經(jīng)之路。
知識(shí)一-變量逆向跟蹤
在代碼審計(jì)中,按業(yè)務(wù)流程審計(jì)當(dāng)然是必須的,人工的流程審計(jì)的優(yōu)點(diǎn)是能夠更加全面的發(fā)現(xiàn)漏洞,但是缺點(diǎn)是查找漏洞效率低下。如果要定向的查找漏洞,逆向跟蹤變量技術(shù)就顯得更加突出,如查找XSS、SQL注入、命令執(zhí)行……等等,逆向查找變量能夠快速定位漏洞是否存在,本次已SQL注入為例。
什么是逆向跟蹤 顧名思義,逆向跟蹤就是對變量的逆向查找,開始全局查找出可能存在漏洞的觸發(fā)點(diǎn),然后回溯參數(shù)到前端,查看參數(shù)來源已經(jīng)參數(shù)傳遞過程中的處理過程。
逆向跟蹤流程 怎樣才能快速定位呢?下面我們一起看下流程。
1、 查看全局文件web.xml
Web.xml主要是配置web項(xiàng)目啟動(dòng)時(shí)加載的信息,比如
2、 尋找漏洞觸發(fā)點(diǎn)
本次以SQL注入為例,SQL注入我就不說了,相關(guān)文檔一堆。當(dāng)我們看到如下形勢的SQL語句,就可能存在SQL注入:
因?yàn)榘踩膶懛ㄊ沁@樣的:
那么,參數(shù)“word”可能存在SQL注入漏洞,那我們就回溯“word”參數(shù),看看“word”值到底是怎么傳進(jìn)來的,回溯到控制層,發(fā)現(xiàn)該“word”參數(shù):
追蹤到控制層基本可以確定漏洞存在,并且沒有做相應(yīng)的過濾,但是為防止“search”方法只是內(nèi)部調(diào)用,繼續(xù)回溯“searchword”值,查看是否從前端頁面?zhèn)魅氲模?/p>
發(fā)現(xiàn)該“searchword”是從前端頁面?zhèn)魅耄虼丝梢源_定漏洞存在,SQLmap截圖如下:
以上就是簡單的逆向跟蹤變量小技巧,什么?太low?沒辦法,就這水平。
方面的資料網(wǎng)上很少,我自己研究了一陣子,發(fā)現(xiàn)二次攻擊形勢有很多,也沒明白多少,這次就談?wù)勅菀酌靼椎亩蚊罟袈┒矗幌参饑姟?/p>
二次漏洞定義:
攻擊者提交的惡意的代碼不是直接通過一個(gè)變量提交漏洞函數(shù)而是通過變量轉(zhuǎn)化或者中轉(zhuǎn),最終提交到漏洞函數(shù)。
二次漏洞特點(diǎn):
1、常常存在漏洞類型的轉(zhuǎn)換。
2、常常存在變量中轉(zhuǎn)。
二次漏洞類型:
1、通過SQL注射漏洞轉(zhuǎn)化。
2、通過編碼/解碼中轉(zhuǎn)變量。
3、其它方式。
二次命令攻擊
二次注入漏洞是一種在Web應(yīng)用程序中廣泛存在的安全漏洞形式。相對于一次注入漏洞而言,二次注入漏洞更難以被發(fā)現(xiàn),但是它卻具有與一次注入攻擊漏洞相同的攻擊威力。
基本流程如下:
1、 構(gòu)造參數(shù)
在數(shù)據(jù)庫正常的插入、更新等操作中,構(gòu)造特殊的命令,存儲(chǔ)在數(shù)據(jù)庫中:
此處只是方便展示漏洞原理,真實(shí)代碼中的情況可能復(fù)雜的多,此處構(gòu)造了“cmd”參數(shù)為“ipconfig”存儲(chǔ)在數(shù)據(jù)庫中。
2、 提取變量
當(dāng)系統(tǒng)內(nèi)部某處主動(dòng)調(diào)用該參數(shù)時(shí),經(jīng)過了相對應(yīng)的命令執(zhí)行參數(shù),就會(huì)產(chǎn)生命令攻擊。
經(jīng)過Runtime函數(shù),執(zhí)行命令執(zhí)行:
看到這里肯定有人一臉懵逼,精明的小伙伴就看出問題了,這二次攻擊不是和存儲(chǔ)型跨站一樣么,沒啥區(qū)別???
然而嚴(yán)格來說存儲(chǔ)型跨站并不屬于二次攻擊漏洞,存儲(chǔ)型跨站雖然也是以數(shù)據(jù)庫作為中轉(zhuǎn),但是它執(zhí)行的方式還是靠人為去點(diǎn)擊才能生效,但是二次攻擊是存儲(chǔ)后主動(dòng)攻擊,這就是根本的區(qū)別。
結(jié)論
上面兩點(diǎn)純屬個(gè)人理解,有什么錯(cuò)誤的地方請多多指教。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67561.html
摘要:基礎(chǔ)知識(shí)復(fù)習(xí)后端掘金的作用表示靜態(tài)修飾符,使用修飾的變量,在中分配內(nèi)存后一直存在,直到程序退出才釋放空間。將對象編碼為字節(jié)流稱之為序列化,反之將字節(jié)流重建成對象稱之為反序列化。 Java 學(xué)習(xí)過程|完整思維導(dǎo)圖 - 后端 - 掘金JVM 1. 內(nèi)存模型( 內(nèi)存分為幾部分? 堆溢出、棧溢出原因及實(shí)例?線上如何排查?) 2. 類加載機(jī)制 3. 垃圾回收 Java基礎(chǔ) 什么是接口?什么是抽象...
摘要:非內(nèi)部類通過一個(gè)特殊的鏈接到其外圍類的對象,而類型的內(nèi)部類無此引用。 showImg(https://segmentfault.com/img/remote/1460000012925199); 用thinkpad打字確實(shí)很爽?。? Thinking in java系列博文目錄: Java編程思想學(xué)習(xí)錄(連載之:一切都是對象) Java編程思想學(xué)習(xí)錄(連載之:初始化與清理) Java...
摘要:系列博文目錄編程思想學(xué)習(xí)錄連載之一切都是對象編程思想學(xué)習(xí)錄連載之初始化與清理編程思想學(xué)習(xí)錄連載之內(nèi)部類編程思想學(xué)習(xí)錄連載之異常本篇文章將講述關(guān)于異常的相關(guān)知識(shí)注本文首發(fā)于公眾號(hào),可長按或掃描下面的小心心來訂閱基本概念使用異常來提供一致性的錯(cuò) showImg(https://segmentfault.com/img/remote/1460000013228854); Thinking ...
摘要:刷面試題偶然看到這類問題中含有時(shí)的執(zhí)行順序,覺得挺有意思于是小小的研究了一下,希望經(jīng)過我添油加醋天馬行空之后,能給你帶來一定的幫助原題里有一個(gè)語句,那么緊跟在這個(gè)后的里的代碼會(huì)不會(huì)被執(zhí)行什么時(shí)候被執(zhí)行在前還是后乍一看題目很簡單嘛,規(guī)范都說了 刷java面試題偶然看到這類問題(try/finally中含有return時(shí)的執(zhí)行順序),覺得挺有意思于是小小的研究了一下,希望經(jīng)過我添油加醋天馬...
閱讀 2132·2021-09-06 15:02
閱讀 1748·2021-08-13 15:02
閱讀 2314·2019-08-29 14:14
閱讀 1472·2019-08-26 13:55
閱讀 558·2019-08-26 13:46
閱讀 3411·2019-08-26 11:41
閱讀 528·2019-08-26 10:27
閱讀 3274·2019-08-23 15:28