SQL注入技术
TalkTalk的信息泄漏事件導(dǎo)致約15萬(wàn)人的敏感信息被暴露,涉嫌造成這一事件的其中一名黑客使用的并不是很新的技術(shù)。事實(shí)上,該技術(shù)的「年紀(jì)」比這名15歲黑客還要大兩歲。
[譯注:TalkTalk是英國(guó)電話和寬帶供應(yīng)商,這件信息安全事故發(fā)生在2015年10月份,當(dāng)時(shí)這件事情還挺轟動(dòng)的,上了新聞?lì)^條,其中一名黑客年僅15歲。]
這項(xiàng)技術(shù)就是大名鼎鼎的SQL注入,所謂SQL注入就是黑客在網(wǎng)站的提交表單數(shù)據(jù)中輸入惡意命令從而獲取數(shù)據(jù)的方法。它曾經(jīng)被用來(lái)竊取世界衛(wèi)生組織員工的信息,偷過(guò)華爾街日?qǐng)?bào)數(shù)據(jù),甚至還攻擊過(guò)美國(guó)聯(lián)邦政府機(jī)構(gòu)。
“這是最簡(jiǎn)單的黑客技術(shù)”,w0rm 告訴 Motherboard[譯者注:Motherboard就是這篇文章原文所在網(wǎng)站],他是一名匿名黑客,聲稱對(duì)華爾街日?qǐng)?bào)的攻擊負(fù)責(zé)。整個(gè)攻擊過(guò)程只用了幾個(gè)小時(shí)。
但是,正因?yàn)樗潜容^簡(jiǎn)單的技術(shù),同時(shí)經(jīng)常被用來(lái)從公司或者政府機(jī)構(gòu)竊取數(shù)字信息,所以SQL注入攻擊應(yīng)該相對(duì)來(lái)說(shuō)比較容易防范才對(duì)。
但為何到了2015年,SQL注入攻擊仍然能導(dǎo)致最大規(guī)模的信息泄漏事件呢?
有跡可循的最早SQL注入攻擊的記錄大概是Jeff Forristal在黑客雜志Phrack上發(fā)表的文章。Forristal當(dāng)時(shí)是rain.forest.puppy的掌舵人[譯者注:rain.forest.puppy是一個(gè)安全咨詢組織,或者說(shuō),是個(gè)黑客團(tuán)隊(duì)?:)],他目前在網(wǎng)絡(luò)安全公司Bluebox,負(fù)責(zé)移動(dòng)安全方面的CTO。
“微軟聲稱,你看到的都不是問(wèn)題,所以不用費(fèi)心去處理它”
[譯者注:這是有人給微軟報(bào)告SQL server這個(gè)漏洞時(shí),微軟的回復(fù)]
SQL, 全稱為結(jié)構(gòu)化查詢語(yǔ)言,是一種用來(lái)管理數(shù)據(jù)庫(kù)的編程語(yǔ)言。本質(zhì)上說(shuō),他就是被網(wǎng)站用來(lái)從數(shù)據(jù)庫(kù)中提取一些數(shù)據(jù)來(lái)處理或者展示給用戶的。
但是Forristal發(fā)現(xiàn),當(dāng)輸入特定的命令時(shí),會(huì)導(dǎo)致服務(wù)器泄漏信息。“用戶可能捎帶一些自己的SQL語(yǔ)句”,他寫道。
在Phrack的1998年12月份期刊上,Forristal發(fā)表了微軟的SQL server的一系列SQL注入的問(wèn)題。當(dāng)Forristal的同事們向微軟反饋此問(wèn)題時(shí),“他們的回答是:好了,別鬧了”,他寫道,“他們說(shuō),你看到的都不是問(wèn)題,所依別費(fèi)心去處理了”
SQL注入發(fā)展到今天,已經(jīng)過(guò)去了15年,在OWASP組織每三年發(fā)表一次的OWASP的Top 10問(wèn)題上,SQL注入攻擊經(jīng)常坐上榜首的位置。OWSAP全稱是開放式Web應(yīng)用程序安全項(xiàng)目(Open Web Application Security Project),它是一個(gè)監(jiān)控網(wǎng)站面臨哪些安全威脅的非盈利性組織。
Phrack現(xiàn)在的logo
“SQL注入經(jīng)常是第一威脅,主要反映在相關(guān)攻擊事件的數(shù)量上,同時(shí)還有一些其他因素導(dǎo)致它如此頻發(fā),” Troy Hunt在Motherboard的一次電話采訪中如是說(shuō)道,Troy Hunt是攻擊檢測(cè)網(wǎng)站haveibeenpwned.com的創(chuàng)始人[譯者注:感覺(jué)像是一個(gè)社工庫(kù)]。
“當(dāng)你訪問(wèn)一個(gè)網(wǎng)頁(yè)時(shí),你發(fā)出一個(gè)請(qǐng)求,然后渲染服務(wù)器返回的數(shù)據(jù)”, Hunt介紹,“舉個(gè)例子,你看一篇新聞,在地址欄上使用id=‘1’來(lái)發(fā)出請(qǐng)求時(shí),服務(wù)器返回編號(hào)為1的文章,把id改成2的時(shí)候,服務(wù)器返回編號(hào)為2的文章”
但是,“使用SQL注入攻擊,攻擊者可能會(huì)將ID字段改成一個(gè)其他什么東西,導(dǎo)致服務(wù)器做一些意料之外的事情”,Hunt繼續(xù)說(shuō)到,比如返回一些隱私數(shù)據(jù)。
一次攻擊也許只返回一條或者一段信息,于是攻擊者就“不斷重復(fù)攻擊,一次又一次,想干幾次干幾次,直到他們獲取到所有數(shù)據(jù)為止”,Hunt說(shuō)。
顯然,這需要一段比較長(zhǎng)的時(shí)間,所以,黑客一般會(huì)使用自動(dòng)化工具。其中比較具有代表性的事Havij,“這是最流行的腳本小工具,因?yàn)樗С諻indows操作系統(tǒng),而且還有個(gè)圖形界面”, Mustafa AI-Bassam通過(guò)在線聊天工具和Motherboard如此描述,他是一名安全研究員,同時(shí)還是一名LulzSec黑客組織的前成員。
另一個(gè)經(jīng)常被用到的工具是 sqlmap 。“它可以爬取網(wǎng)站的頁(yè)面,就像搜索引擎的爬蟲,尋找網(wǎng)站中所有輸入表單,然后提交一些可能導(dǎo)致MySQL語(yǔ)法錯(cuò)誤的數(shù)據(jù)”, AI-Bassam繼續(xù)介紹。
當(dāng)攻擊者找到一個(gè)攻擊點(diǎn),接下來(lái)就很容易自動(dòng)化開搞了。
sqlmap的界面
“他們會(huì)使用Google來(lái)搜索那些典型的容易受到SQL注入腳本攻擊的URL”, AI-Bassam說(shuō)。“他們還經(jīng)常使用腳本來(lái)檢查所有URL,用自動(dòng)化的方法來(lái)試探是否存在漏洞”
“你甚至可以教一個(gè)4歲的孩子來(lái)做這種事情[譯者注:汗~~我還不如個(gè)4歲的孩子]”, AI-Bassam補(bǔ)充道,強(qiáng)調(diào)這整個(gè)過(guò)程簡(jiǎn)單到令人發(fā)指的地步。確實(shí),Hunt就曾經(jīng)上傳過(guò)一個(gè)視頻,視頻上顯示他是怎么教他3歲的兒子用Havij來(lái)實(shí)施SQL注入攻擊的[譯者注:這是真愛(ài)啊,我堅(jiān)決不會(huì)讓我女兒走上計(jì)算機(jī)這條不歸路]
“你把要攻擊的URL輸入進(jìn)來(lái),然后所有數(shù)據(jù)就出來(lái)了”,Hunt向Motherboard介紹道。在YouTube上有太多教程來(lái)介紹如何實(shí)施SQL注入攻擊了。
事實(shí)上,已經(jīng)有很多解決方案被網(wǎng)站開發(fā)人員用來(lái)防止SQL注入攻擊了和避免客戶信息或者公司信息泄漏了。而且那些解決方案一經(jīng)存在好幾年了。
所有這些解決方案的核心都是采用“prepared statments” (預(yù)編譯聲明?): 當(dāng)SQL語(yǔ)句在數(shù)據(jù)庫(kù)中執(zhí)行是,絕對(duì)不能直接執(zhí)行用戶的輸入。
如果這些解決方案直接有效,那為何SQL注入攻擊還是這么猖獗呢?
“使用prepared staement的好處是它們可以從語(yǔ)義層面上杜絕任何在開發(fā)者意料之外的輸入,這些輸入可以通過(guò)構(gòu)造一些SQL語(yǔ)法,讓數(shù)據(jù)庫(kù)查詢語(yǔ)句從任意一張數(shù)據(jù)表中獲取一條額外的數(shù)據(jù)”,Mike Schema在給Motherboard的一封email中如此說(shuō)導(dǎo),他是雅虎的一名高級(jí)經(jīng)理、軟件工程師。
另外一種做法是“使用SQL庫(kù)對(duì)用戶輸入做一些凈化操作”,AI-Bassam建議。簡(jiǎn)而言之,就是將輸入中任何潛在的惡意部分去除掉。
那么,如果SQL注入如此簡(jiǎn)單,以至于小孩子都能用,而且解決方案又這么直接有效,為什么SQL注入攻擊還這么猖獗呢?
“任何一名嚴(yán)謹(jǐn)?shù)某绦騿T都應(yīng)該知道SQL注入攻擊,但是仍然有大量的程序員缺乏經(jīng)驗(yàn),所以公司在雇傭某人的是偶,他可能沒(méi)有受到過(guò)任何關(guān)于如何消除風(fēng)險(xiǎn)的訓(xùn)練”, AI-Bassam指出。除此之外,“他們的經(jīng)理們往往只要求開發(fā)出能用的軟件,而不是安全的軟件”。
來(lái)自雅虎的Schema也認(rèn)同這一點(diǎn),并且補(bǔ)充“有些時(shí)候,一些小應(yīng)用功能有限,要求很快就把東西做出來(lái)”,導(dǎo)致開發(fā)者經(jīng)常忽略一些應(yīng)對(duì)各種攻擊的工作,盡管他們實(shí)施起來(lái)也不是很困難。
Hunt不是那么寬容,他也不認(rèn)同所有的過(guò)錯(cuò)都來(lái)自于高層管理的壓力。相反,他認(rèn)為現(xiàn)在有網(wǎng)上有這么多教程詳細(xì)的向開發(fā)人員講解如何避免SQL注入攻擊,對(duì),是詳細(xì)的教程,不僅僅是一些好的建議。“這些年,我看到很多有關(guān)如何避免明顯的SQL注入風(fēng)險(xiǎn)的教程”,他說(shuō)到。
隨著互聯(lián)網(wǎng)黑客們不停的在YouTube上分享他們的SQL注入攻擊經(jīng)驗(yàn),網(wǎng)站的開發(fā)者們也沒(méi)有閑著。“我們有能力的人站出來(lái),分享他們的專業(yè)知識(shí),而不僅僅是把自己的事情做好就行了”,Hunt說(shuō)。
最后,這些網(wǎng)站的安全和他們的數(shù)據(jù)安全歸根到底還是網(wǎng)站開發(fā)者自己負(fù)責(zé)的。這意味著SQL注入攻擊和漏洞還會(huì)存在,至少在未來(lái)一段時(shí)間內(nèi)不會(huì)消失。[譯者注:估計(jì)原作者的意思是安全還是由開發(fā)者自己負(fù)責(zé),不在于黑客不去攻擊,自己開發(fā)的時(shí)候不注意,還是沒(méi)辦法避免被攻破的~~]
轉(zhuǎn)載于:https://www.cnblogs.com/yangshunde/p/7738670.html
總結(jié)
- 上一篇: 世嘉公司遭****** LulzSec称
- 下一篇: KITTI 数据集(CVPR 2012)