成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

漏洞挖掘的高級(jí)方法

安全 漏洞
本篇文章首先我會(huì)從一個(gè)較高的角度總結(jié)于我眼中何謂漏洞挖掘;然后詳細(xì)討論在軟件漏洞挖掘過(guò)程中我們需要掌握的技能以及需要的知識(shí)和工具等;最后我將談?wù)勔恍┪艺J(rèn)為有利于漏洞挖掘但是卻并非純技術(shù)性的想法。

前言

在此文中我將講述我在軟件漏洞挖掘的實(shí)踐中學(xué)到的技術(shù)及方法,不過(guò)這些內(nèi)容并非那些前沿的技術(shù),大多是基礎(chǔ)類(lèi)型的技術(shù)及方法。對(duì)于初學(xué)者而言,希望能夠給予入門(mén)的指導(dǎo),對(duì)于經(jīng)驗(yàn)豐富的漏洞挖掘工作者而言,我認(rèn)為也可以從中獲得一些啟發(fā)。

[[208681]]

受限于我個(gè)人的知識(shí)水平及能力,這篇文章并不可能做到面面俱到,也希望閱讀者能夠與我積極交流,對(duì)于其中的錯(cuò)誤不吝賜教。

我將會(huì)把此文分為三個(gè)章節(jié),分別闡述我的觀點(diǎn)。首先我會(huì)從一個(gè)較高的角度總結(jié)于我眼中何謂漏洞挖掘;然后詳細(xì)討論在軟件漏洞挖掘過(guò)程中我們需要掌握的技能以及需要的知識(shí)和工具等;最后我將談?wù)勔恍┪艺J(rèn)為有利于漏洞挖掘但是卻并非純技術(shù)性的想法。

一、什么是漏洞挖掘

[[208682]]

從某個(gè)角度來(lái)講,我們可以將漏洞挖掘工作比作玩迷宮游戲,不同的是,這個(gè)迷宮與我們平時(shí)所見(jiàn)的游戲中的迷宮略有不同:

  1. 你無(wú)法立即看到它整體的外觀
  2. 隨著漏洞挖掘工作的深入,這個(gè)迷宮的形狀逐漸擴(kuò)大
  3. 你將會(huì)擁有多個(gè)起點(diǎn)及終點(diǎn),但是無(wú)法確定這些點(diǎn)具體在哪里
  4. 最終這個(gè)迷宮可能永遠(yuǎn)也無(wú)法100%的完整,但是卻能夠弄清楚A點(diǎn)至B點(diǎn)的一條完整路徑

可以用下面這張圖來(lái)進(jìn)行描述:

[[208683]]

具體一點(diǎn)的描述,我們可以將漏洞挖掘工作歸結(jié)為三個(gè)步驟:

  1. 枚舉程序入口點(diǎn)(例如:與程序交互的接口)
  2. 思考可能出現(xiàn)的不安全狀態(tài)(即漏洞)
  3. 設(shè)法使用識(shí)別的入口點(diǎn)到達(dá)不安全狀態(tài)

即是說(shuō),在這個(gè)過(guò)程中,迷宮是我們研究的應(yīng)用程序,地圖是我們堆程序的理解程度,起點(diǎn)是我們的入口點(diǎn)(交互接口),終點(diǎn)為程序的不安全狀態(tài)。

所謂入口點(diǎn),既可以是UI界面上直觀可見(jiàn)的交互接口,也可以是非常模糊與透明的交互接口(例如IPC),以下是部分安全研究員較為感興趣的關(guān)注點(diǎn):

  1. 應(yīng)用程序中比較古老的代碼段,并且這一部分隨著時(shí)間的推移并沒(méi)有太大的變化。
  2. 應(yīng)用程序中用于連接由不同開(kāi)發(fā)團(tuán)隊(duì)或者開(kāi)發(fā)者開(kāi)發(fā)的程序模塊的接口部分
  3. 應(yīng)用程序中那些調(diào)試和測(cè)試的部分代碼,這部分代碼本應(yīng)在形成Release版本時(shí)去除,但由于某些原因不小心遺留在程序中。
  4. C-S模式(帶客戶(hù)端和服務(wù)端)的應(yīng)用中客戶(hù)端及服務(wù)端調(diào)用API的差異部分(例如網(wǎng)頁(yè)表單中的hide屬性字段)
  5. 不受終端用戶(hù)直接影響的內(nèi)部請(qǐng)求(如IPC)

我認(rèn)為從攻擊面上來(lái)劃分可以講漏洞分為兩大類(lèi),通用漏洞(General)和上下文漏洞(contextual)。通用型漏洞是指在我們對(duì)應(yīng)用的業(yè)務(wù)邏輯不是非常熟悉的情況下能夠找出的漏洞,例如一些RCE(遠(yuǎn)程代碼執(zhí)行)、SQLi(sql注入)、XSS(跨站)等。上下文漏洞是指需要在對(duì)應(yīng)用的業(yè)務(wù)邏輯、認(rèn)證方式等非常熟悉的情況下才能找到的漏洞,例如權(quán)限繞過(guò)等。

在漏洞挖掘的過(guò)程中,我首先會(huì)根據(jù)經(jīng)驗(yàn)優(yōu)先考慮研究測(cè)試那些可能會(huì)對(duì)應(yīng)用產(chǎn)生巨大威脅的部分。一些輕量級(jí)威脅檢測(cè)模型(如STRIDE)可以輔助我們做出這樣的決策。

下面我們首先看一下一個(gè)WEB應(yīng)用程序的漏洞示例,后面將會(huì)介紹桌面程序:

WEB應(yīng)用程序的漏洞示例

首先我們假設(shè)目標(biāo)web應(yīng)用是一個(gè)單頁(yè)面應(yīng)用(single-page-application SPA),我們已經(jīng)獲得合法驗(yàn)證去訪問(wèn)這個(gè)應(yīng)用,但是我們沒(méi)有任何關(guān)于服務(wù)端的源代碼或者二進(jìn)制文件。在這種情況下,當(dāng)我們枚舉入口點(diǎn)時(shí),可以通過(guò)探尋該應(yīng)用的不同功能來(lái)進(jìn)一步了解其業(yè)務(wù)邏輯及功能,可以通過(guò)抓包分析看HTTP請(qǐng)求內(nèi)容,也可以分析客戶(hù)端的網(wǎng)頁(yè)代碼獲取需要提交表單的列表,但是最終的限制還是我們無(wú)法具體知悉客戶(hù)端和服務(wù)端調(diào)用的API之間的區(qū)別,不過(guò)通過(guò)以上方法,我們可以找到一些入口點(diǎn),

接著就是操作這些入口點(diǎn),以試圖達(dá)到我們預(yù)期的不安全狀態(tài)。由于漏洞的形態(tài)很多,我們通常需要構(gòu)建一個(gè)適用于該測(cè)試應(yīng)用程序的業(yè)務(wù)功能漏洞的測(cè)試集,以求達(dá)到最高效的尋找漏洞。如果不那樣做的話,我們就將會(huì)在一些無(wú)用的測(cè)試集上花費(fèi)大量時(shí)間,并且看不到任何效果(舉個(gè)例子,當(dāng)后臺(tái)的數(shù)據(jù)庫(kù)為Postgresql時(shí),我們用xp_cmdshell去測(cè)試,測(cè)試再多次都無(wú)濟(jì)于事)。所以在構(gòu)造測(cè)試集時(shí),需對(duì)應(yīng)用程序的邏輯有較深的理解。下圖形象的展示了低效率測(cè)試集的效果:

https://s1.51cto.com/oss/201711/04/c67490fa8d98a767106a7777ec7b727c.gif

對(duì)于桌面應(yīng)用程序,漏洞挖掘的思路本質(zhì)上與web程序是類(lèi)似的,不過(guò)也有一些區(qū)別:最大的區(qū)別在于,桌面應(yīng)用的執(zhí)行方式與流程與web程序不一樣,下圖展示的是桌面應(yīng)用漏洞挖掘的一些內(nèi)容:

與黑盒測(cè)試相比,當(dāng)有源代碼時(shí)(白盒測(cè)試),在尋找代碼入口和程序執(zhí)行路徑等漏洞挖掘點(diǎn)時(shí)所做的猜測(cè)性的工作會(huì)大大減少,在這種情況下,將數(shù)據(jù)載荷從入口點(diǎn)執(zhí)行到不安全的程序位置的效率低于從不安全的程序位置回溯至入口點(diǎn)。不過(guò)在白盒測(cè)試中,你對(duì)代碼的測(cè)試的覆蓋面可能會(huì)由于你自己的知識(shí)局限性而受到影響。

二、漏洞挖掘需要具備的知識(shí)

從事漏洞挖掘工作需要具備的知識(shí)是極其廣泛的,并且隨著時(shí)間在不斷改變,也取決于你所研究的對(duì)象(web程序、桌面程序、嵌入式等等)。不過(guò),萬(wàn)變不離其宗,所需要掌握的知識(shí)領(lǐng)域卻總可以認(rèn)為是確定的,我認(rèn)為大致可以分為以下四個(gè)方面:

1. 程序正向開(kāi)發(fā)技術(shù)。這是一個(gè)開(kāi)發(fā)者需要掌握的能力,包括編程語(yǔ)言、系統(tǒng)內(nèi)部設(shè)計(jì)、設(shè)計(jì)模式、協(xié)議、框架等。擁有豐富編程經(jīng)驗(yàn)與開(kāi)發(fā)能力的人在漏洞挖掘過(guò)程中往往比那些只對(duì)安全相關(guān)領(lǐng)域有所了解的人員對(duì)目標(biāo)應(yīng)用能有更深入的理解,從而有更高的產(chǎn)出。

2. 攻防一體的理念。這些知識(shí)涵蓋了從基本的安全原則到不斷變換的漏洞形態(tài)及漏洞緩解措施。攻擊和防御結(jié)合的理念,能夠有效幫助研究者既能夠發(fā)現(xiàn)漏洞,同時(shí)也能夠快速給出有效的漏洞緩解措施和規(guī)避方法。

3. 有效使用工具。能夠高效的使用工具能夠快速將思路轉(zhuǎn)化為實(shí)踐,這需要通過(guò)花時(shí)間去學(xué)習(xí)如何配置和使用工具,將其應(yīng)用于自己的任務(wù)并構(gòu)建自己的工作流程來(lái)不斷積累經(jīng)驗(yàn)。更進(jìn)一步,需要深入掌握所使用工具的原理,以及如何對(duì)其進(jìn)行二次開(kāi)發(fā),以使得其能夠更加高效的應(yīng)用于當(dāng)前的工作實(shí)際。事實(shí)上,我認(rèn)為面向過(guò)程的學(xué)習(xí)方法往往比面向工具的學(xué)習(xí)方法更加高效以及有價(jià)值,當(dāng)自己發(fā)現(xiàn)一個(gè)在使用一個(gè)工具遇到瓶頸時(shí),先不要退縮,嘗試去改造它,或者通過(guò)自己動(dòng)手實(shí)踐去完成能夠適應(yīng)當(dāng)前工作的工具,這往往能夠幫助快速積累大量實(shí)踐經(jīng)驗(yàn)。幫助我們以后更加高效的去實(shí)踐漏洞挖掘工作。

4. 對(duì)目標(biāo)應(yīng)用的理解。最后,也是最重要的,作為一個(gè)漏洞挖掘人員,對(duì)自己研究的應(yīng)用程序在安全性方面必須要比這個(gè)程序的開(kāi)發(fā)者或維護(hù)者有更深的理解。這樣你才能盡可能的發(fā)現(xiàn)這個(gè)程序中的漏洞并修復(fù)它。

下面這張表格介紹了我認(rèn)為在挖掘web應(yīng)用程序和桌面應(yīng)用程序的漏洞時(shí)所需要掌握的內(nèi)容,限于筆者個(gè)人的認(rèn)知水平,所展示的內(nèi)容并非特別齊全:

在挖掘web應(yīng)用程序和桌面應(yīng)用程序的漏洞時(shí)所需要掌握的內(nèi)容

在挖掘web應(yīng)用程序和桌面應(yīng)用程序的漏洞時(shí)所需要掌握的內(nèi)容

這是我經(jīng)過(guò)無(wú)數(shù)的不眠之夜、數(shù)以千計(jì)的小時(shí)、一次又一次的錯(cuò)誤而總結(jié)的知識(shí),我相信它將會(huì)幫助你提高你挖掘漏洞的能力。如果說(shuō)上面一節(jié)是講訴挖掘漏洞所需要的知識(shí),那么下面的這一節(jié)將講述挖掘漏洞如何做。

三、漏洞挖掘需要做什么

當(dāng)我分析一個(gè)應(yīng)用程序時(shí),我通常采用下圖展示的四個(gè)“分析模型”,每當(dāng)我遇到障礙導(dǎo)致我思路受阻時(shí),我就會(huì)從其中一個(gè)模型切換到下一個(gè)模型,當(dāng)然,這不是一個(gè)線性的切換,我不知道這個(gè)方法是否對(duì)每個(gè)人都有用,但是對(duì)于我的確是幫助巨大:

在每一個(gè)模型之中都有主動(dòng)活動(dòng)(active activities)與客觀活動(dòng)存在(passive activities),主動(dòng)活動(dòng)需要我們對(duì)程序的執(zhí)行環(huán)境及上下文有一個(gè)比較全面的了解,而客觀活動(dòng)卻不一定,比如它是客觀存在與程序的一些技術(shù)文檔之中。不過(guò),這種劃分也不一定嚴(yán)格,不過(guò)對(duì)于每一個(gè)activity,我們可以從以下幾方面去考慮:

  1. 理解有關(guān)漏洞的相關(guān)模型
  2. 試圖假設(shè)一個(gè)場(chǎng)景去破壞程序
  3. 嘗試去破壞程序

程序用途分析(Use case analysis)。程序用途分析是指理解一個(gè)應(yīng)用程序做了什么工作,會(huì)提供什么服務(wù)等。每當(dāng)我去分析一個(gè)新的應(yīng)用程序時(shí),我所做的第一件事就是程序用途分析。同時(shí),閱讀與該程序的相關(guān)文檔將有助于進(jìn)一步理解程序功能(如上圖所示)。我總是這樣做,以期對(duì)程序有一個(gè)透徹的了解。

或許,比起直接構(gòu)造測(cè)試樣例進(jìn)行測(cè)試,這項(xiàng)工作可能并不是那么有趣。不過(guò),它的確幫助我節(jié)省了一大筆時(shí)間。舉一個(gè)我自己的例子,我之前發(fā)現(xiàn)過(guò)Oracle Opera(一個(gè)廣泛使用的酒店管理軟件)[CVE-2016-5563/4/5]的遠(yuǎn)程代碼執(zhí)行漏洞,我就是通過(guò)閱讀器用戶(hù)手冊(cè)快速找到可能存在危險(xiǎn)的數(shù)據(jù)表,最后快速找出遠(yuǎn)程代碼執(zhí)行漏洞。有關(guān)這個(gè)漏洞的分析,請(qǐng)參看:

http://jackson.thuraisamy.me/oracle-opera.html

(執(zhí)行條件分析)Implementation analysis,執(zhí)行條件分析是指理解應(yīng)用程序運(yùn)行時(shí)需要包括的環(huán)境因素,比如網(wǎng)絡(luò)配置,端口使用等。可以通過(guò)端口掃描,漏洞掃描等方式進(jìn)行操作。這些配置上的問(wèn)題,很可能就會(huì)導(dǎo)致一個(gè)漏洞的出現(xiàn)。

聚個(gè)例子,一個(gè)系統(tǒng)權(quán)限級(jí)別的程序,由于配置錯(cuò)誤,可能會(huì)使的低權(quán)限的用戶(hù)能夠訪問(wèn)并修改,最終導(dǎo)致一個(gè)權(quán)限提升,引發(fā)一個(gè)提權(quán)漏洞。又比如,在一個(gè)網(wǎng)絡(luò)程序中,可能程序本身并沒(méi)有錯(cuò)誤,但是由于這個(gè)服務(wù)器開(kāi)了一個(gè)anonymous的FTP服務(wù)器,那么任何人都有可能訪問(wèn)這個(gè)機(jī)器,這就導(dǎo)致web應(yīng)用的源代碼或者其他敏感文件暴露在外面。這些問(wèn)題,理論上并非程序自身的漏洞,但是由于其執(zhí)行環(huán)境的因素,就使得其成為一個(gè)漏洞。

通信分析(Communications analysis)。通信分析是指對(duì)一個(gè)目標(biāo)程序與其他進(jìn)程或系統(tǒng)之間交互信息的方式進(jìn)行深入分析。在這樣的前提下,可通過(guò)發(fā)送精心構(gòu)造的請(qǐng)求(request)等方法,觸發(fā)不安全狀態(tài)。許多web應(yīng)用程序漏洞都是通過(guò)這種方式發(fā)現(xiàn)的。

在上述模式下,需要我們對(duì)數(shù)據(jù)通信協(xié)議有較為清晰的認(rèn)識(shí),如果并不能夠清晰的了解協(xié)議格式呢?這種情況就要借助黑盒測(cè)試的技術(shù)進(jìn)行解決,主要通過(guò)發(fā)送請(qǐng)求,并根據(jù)返回值進(jìn)行判斷是否存在異常。

下面舉個(gè)例子來(lái)說(shuō)明,這里假設(shè)存在一個(gè)金融網(wǎng)站,里面有一項(xiàng)功能允許用戶(hù)使用不同的貨幣購(gòu)買(mǎi)預(yù)付信用卡。這里假設(shè)實(shí)現(xiàn)這項(xiàng)業(yè)務(wù)的請(qǐng)求(Request)如下:

  • FromAccount : 用于購(gòu)買(mǎi)預(yù)付卡的賬戶(hù)
  • FromAmount : 需要從fromAccount轉(zhuǎn)入預(yù)付卡的金額(例如 ¥100)
  • CardType: 需要購(gòu)買(mǎi)的預(yù)付卡類(lèi)型(例如 USD、GBP
  • currencyPair : 付款賬戶(hù)和預(yù)付信用卡的貨幣配對(duì),用于計(jì)算匯率(如 CADUSD、CADGBP)

當(dāng)我們要去測(cè)試這樣一個(gè)應(yīng)用程序時(shí),首先我們可能會(huì)想到發(fā)送一個(gè)正常的數(shù)據(jù)請(qǐng)求,以幫助我們了解該應(yīng)用程序的標(biāo)準(zhǔn)響應(yīng)的格式。例如下圖,用CAD去購(gòu)買(mǎi)82美刀的預(yù)付卡的請(qǐng)求和響應(yīng)是下面這個(gè)樣子:

或許我們并不知道程序在后臺(tái)到底對(duì)我們的數(shù)據(jù)做了何種處理,但是我們通過(guò)觀察status字段的屬性知道我們的請(qǐng)求是ok的,下面如果我們將fromAmount參數(shù)調(diào)整為一個(gè)負(fù)數(shù),或者將fromAccount調(diào)整為其他某個(gè)人的賬戶(hù),那么這個(gè)web應(yīng)用就可能會(huì)返回錯(cuò)誤響應(yīng),比如驗(yàn)證不通過(guò)。另外如果我們將currencyPair從CADUSD(加元對(duì)美元)改為CADJPY(加元對(duì)日元)而cardType不變,那么我們會(huì)看到返回值中toAmount字段從82.20變?yōu)?863.68。如果程序缺乏足夠的驗(yàn)證的話,我們有可能通過(guò)這種方式獲取到更多的錢(qián)而付出的錢(qián)不變。

另一方面,如果我們能夠獲取到后臺(tái)代碼或程序,那事情就變得更加有意思,我們可以輕松了解到后臺(tái)的運(yùn)作流程,如后臺(tái)是如何處理請(qǐng)求,有哪些錯(cuò)誤響應(yīng),這將有助于我們構(gòu)造出更加具有針對(duì)性的數(shù)據(jù)對(duì)應(yīng)用進(jìn)行測(cè)試。

代碼分析(Code and binary analysis)。代碼分析是指理解一個(gè)目標(biāo)程序是如何處理用戶(hù)輸入的數(shù)據(jù),以及該程序的執(zhí)行流程。目前有很多方法可以對(duì)程序?qū)崿F(xiàn)動(dòng)態(tài)和靜態(tài)分析,下面介紹其中一部分:

(1) 數(shù)據(jù)流分析。數(shù)據(jù)流分析對(duì)于尋找入口點(diǎn)以及數(shù)據(jù)是如何走向潛在的不安全狀態(tài)是非常有用的。當(dāng)我在通信分析(Communications analysis)遇到困難,很難構(gòu)造出合適的request,我便會(huì)調(diào)整思路采取其他的方式尋找不安全狀態(tài),在數(shù)據(jù)流分析中,我可以使用這種方法,首先判斷是否存在不安全狀態(tài),如果存在,則進(jìn)一步跟蹤數(shù)據(jù)是如何流向該狀態(tài)。這個(gè)方法的有點(diǎn)是,一但發(fā)現(xiàn)不安全狀態(tài),入口點(diǎn)也隨之確定,這為發(fā)掘漏洞提供巨大幫助。

在這個(gè)過(guò)程中,動(dòng)態(tài)分析和靜態(tài)分析需要緊密配合起來(lái)。舉個(gè)例子,當(dāng)你在尋找如何從A點(diǎn)走到B點(diǎn)時(shí),靜態(tài)分析就好比是在閱讀一張地圖,而動(dòng)態(tài)分析就好比直接在這地圖上走,需要實(shí)時(shí)關(guān)注路上的天氣及交通狀況,IDA和windbg的配合就是如此。靜態(tài)分析可以對(duì)程序有一個(gè)全貌但不細(xì)致的理解,動(dòng)態(tài)分析則可以對(duì)程序有一個(gè)狹隘但卻細(xì)致的理解,二者是相互補(bǔ)充的。

(2) 外部引用分析。在分析程序的過(guò)程中,程序上下文環(huán)境中可能非常有限,這個(gè)時(shí)候分析程序的導(dǎo)入API可以幫助我們進(jìn)一步了解程序的功能以及它與操作系統(tǒng)的交互方式。比如說(shuō),程序引用加密庫(kù)對(duì)數(shù)據(jù)進(jìn)行加密,那么你可以跟蹤這個(gè)加密庫(kù)并分析其功能,進(jìn)而分析自己的輸入是否能夠影響其功能。令外,理解程序是如何與操作系統(tǒng)的交互也可以幫助我們進(jìn)一步找到我們可以與程序進(jìn)行交互的入口點(diǎn)。

(3) 字符串分析。與外部引用分析一樣,分析程序中的字符串將幫助我們進(jìn)一步理解程序中的功能,特別是那些調(diào)試信息,關(guān)鍵字或者令牌什么的,或者是那些看起來(lái)特別奇特的東西,對(duì)這些關(guān)鍵的字符串的分析及跟蹤也將有利于我們尋找到更多的程序入口,進(jìn)而更加全面的找出程序中的缺陷。

(4) 安全掃描。使用自動(dòng)化的掃描工具(如PHP源代碼掃描AWS)可能幫助我們快速找到一些常見(jiàn)的漏洞。但是對(duì)于尋找基于上下文和基于設(shè)計(jì)的漏洞并沒(méi)有太大幫助。我通常并不會(huì)對(duì)這種方法有太多青睞,只會(huì)用來(lái)做一些輔助性的功能,如果單純靠掃描就能找出一堆漏洞,你研究的目標(biāo)安全做的就太差了,這在目前并不常見(jiàn),或者說(shuō)研究這類(lèi)目標(biāo)對(duì)于提高你自己并無(wú)任何幫助。

(5) 依賴(lài)性分析。一個(gè)應(yīng)用程序往往會(huì)以來(lái)其他外來(lái)的組件,比如一些開(kāi)源模塊,它所依賴(lài)的開(kāi)源模塊自身存在的漏洞可能會(huì)被引入造成自身的未公開(kāi)漏洞。值得一提的是,現(xiàn)今一個(gè)程序往往都是引用了眾多第三方擴(kuò)展模塊,這些第三方的漏洞極易造成主程序的漏洞。舉個(gè)例子,大多數(shù)瀏覽器都會(huì)使用sqlite做數(shù)據(jù)緩存,如果sqlite存在漏洞,那么這些瀏覽器都有可能存在問(wèn)題,無(wú)論是谷歌還是火狐。

(6) 版本分析。如果你有機(jī)會(huì)訪問(wèn)程序的代碼倉(cāng)庫(kù),那么你就可以通過(guò)分析歷史版本的方式對(duì)程序進(jìn)行分析,這種方式不是基于上下文的,比如說(shuō),尋找那些長(zhǎng)時(shí)間沒(méi)有做改動(dòng)的部分,這些部分極易尋在漏洞。

代碼分析通常需要花費(fèi)比其他方式更多的時(shí)間,同時(shí)也更難,因?yàn)檠芯空邔?duì)這個(gè)程序的功能和使用的技術(shù)的掌握程度要不亞于其開(kāi)發(fā)者,另外,一個(gè)程序的開(kāi)發(fā)可能是由一個(gè)團(tuán)隊(duì)進(jìn)行維護(hù),那么對(duì)于研究者,全面掌握這些東西顯得比較困難。但是只要肯專(zhuān)研,其實(shí)什么也都是能夠克服的,中國(guó)有句古話,只要肯專(zhuān)研,鐵棒變花針。

我無(wú)法不去強(qiáng)調(diào)編程能力的重要性,如果一個(gè)研究人員對(duì)他當(dāng)前研究的程序所采用的語(yǔ)言和技術(shù)有深入扎實(shí)的功底,那么他必將創(chuàng)造出很多有價(jià)值的東西。從攻擊的角度來(lái)說(shuō),他可以發(fā)現(xiàn)更加簡(jiǎn)單及直觀,編寫(xiě)利用程序也將得心應(yīng)手。從防御的角度來(lái)說(shuō),他可以提供出代碼級(jí)別的具有高度針對(duì)性的修復(fù)建議而非那種通用的方法。

四. 有關(guān)漏洞挖掘的其他想法

1. 漏洞的復(fù)雜性

漏洞的復(fù)雜性分布非常廣。一方面,有很多漏洞非常簡(jiǎn)單與直觀,并且利用代碼一目了然,比如說(shuō)經(jīng)典的sql注入。另一方面,在系統(tǒng)中有的看似并不相關(guān),并且就其自身而言并非不安全,但是當(dāng)這些東西以一種特定的方式結(jié)合起來(lái)的時(shí)候,就有可能引發(fā)大的漏洞,比如說(shuō)條件競(jìng)爭(zhēng),或者一些其他的復(fù)雜的邏輯漏洞。我嘗試將這些漏洞按照復(fù)雜級(jí)別分為“一級(jí)漏洞”和“二級(jí)漏洞”,不過(guò)也有其他分類(lèi)方法。引用一局來(lái)自Project Zero的Ben Hawkes說(shuō)過(guò)的一句話:

The modern exploit is not a single shot vulnerability anymore. They tend to be a chain of vulnerabilities that add up to a full-system compromise.

如今想要完成一個(gè)完整的利用,只靠單一的漏洞往往行不通。很多時(shí)候我們需要靠一連串的漏洞才能完成一起完整的利用,致使系統(tǒng)“妥協(xié)”。

2. 團(tuán)隊(duì)工作

在一個(gè)團(tuán)隊(duì)中工作能夠有效幫助自己了解自己不知道的知識(shí),以及提高自己已知的知識(shí)。不過(guò)在團(tuán)隊(duì)中要需要注意工作的方式方法,知之為知之,不知為不知,永遠(yuǎn)不要強(qiáng)行假裝精通你不熟悉的東西,因?yàn)榫ǖ娜丝梢院茌p易的指出你的癥結(jié)。如果一個(gè)團(tuán)隊(duì)里面大家都不坦誠(chéng)相待,那么這不是一個(gè)合格的團(tuán)隊(duì),你可以盡早更換。在優(yōu)秀的團(tuán)隊(duì)中,不要指望別人會(huì)把所有的知識(shí)交給你,要學(xué)會(huì)如何高效的學(xué)習(xí),并在團(tuán)隊(duì)交流與合作中不斷提高。

寫(xiě)在最后

感謝花時(shí)間將我的文章讀完,我希望我的文章在可以幫助你解開(kāi)你的一些對(duì)于漏洞挖掘的謎團(tuán)。在學(xué)習(xí)和研究漏洞挖掘的過(guò)程中遇到困難并感到不知所措是非常正常的。不過(guò)學(xué)習(xí)的過(guò)程就是這樣,只有不斷的去嘗試才會(huì)進(jìn)步。祝你在漏洞挖掘的路上走的越來(lái)越遠(yuǎn)。

責(zé)任編輯:趙寧寧 來(lái)源: 安全客
相關(guān)推薦

2014-09-25 19:30:51

2013-04-24 15:56:40

2016-10-14 13:10:35

2017-09-19 15:01:06

PHP漏洞滲透測(cè)試

2013-12-02 09:35:10

2020-09-29 10:44:51

漏洞

2019-01-09 10:26:32

web安全漏洞挖掘前端打包

2021-02-23 10:43:42

Facebook Ga

2016-09-27 23:47:42

2009-08-15 10:19:01

漏洞利用php expEXP程序

2010-10-22 15:18:18

SQL注入漏洞

2021-04-21 10:01:18

漏洞KLEE網(wǎng)絡(luò)攻擊

2019-05-22 09:03:44

PC客戶(hù)端Windows

2018-04-04 09:20:55

2018-04-04 12:21:39

2010-01-05 20:39:22

2017-04-05 09:23:00

2014-06-11 14:47:27

2015-08-24 14:36:53

2017-09-07 15:54:49

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国外成人在线视频 | 视频在线观看一区二区 | 亚洲国产一区二区三区 | 亚洲一区二区三区免费视频 | 精品国产一区二区在线 | 91视视频在线观看入口直接观看 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 国产一区二区不卡 | av在线伊人 | 国产美女免费视频 | 亚洲毛片在线观看 | 在线一区| 久久综合久色欧美综合狠狠 | 毛片免费观看 | 欧美电影免费观看 | 久久久免费毛片 | 91看片在线观看 | 欧美aaaaaaaaaa | 欧美色综合天天久久综合精品 | 在线免费观看成人 | 日韩视频一区二区在线 | 成人欧美一区二区三区在线播放 | 亚洲欧美v | 精品三级在线观看 | 99pao成人国产永久免费视频 | 一区免费看 | 二区精品 | 成年人视频免费在线观看 | 久久久久久国产 | 欧美高清免费 | 国产精品久久久乱弄 | 久久久国产一区二区三区 | 亚洲理论在线观看电影 | ww亚洲ww亚在线观看 | www.国产精 | 99pao成人国产永久免费视频 | 黄色永久免费 | 成年人在线 | 水蜜桃久久夜色精品一区 | 欧美日韩一卡二卡 | 波多野结衣中文字幕一区二区三区 |