黃慶濤 霍人楷 金翔 張華 閩江學院 計算機與控制工程學院
網絡空間既是人的生存環境,也是信息的生存環境,因此網絡空間安全是人和信息對網絡空間的基本要求。另一方面,網絡空間是所有信息系統的集合,而且是復雜的巨系統。人在其中與信息相互作用、相互影響。網絡空間安全,為實施國家安全戰略,加快網絡空間安全高層次人才培養。因此,網絡空間安全問題更加綜合、更加復雜。所培養的人才為網絡空間安全的立法、治理、戰略規劃和輿情監管服務。
從2013年的棱鏡門事件開始,網絡空間安全一點點走進我們生活,慢慢的更多因為自身系統安全級別不夠而導致酒店入住信息被泄露、Facebook公司的數據遭到外泄曝光、Cclearner清理工具被黑客惡意篡改信息……國家開始重視網絡空間安全,并開設相關專業,意在培養這方面的人才,彌補人才缺口。網絡空間安全專業的人才培養目標是,培養具有扎實的網絡空間安全基礎理論和基本技術,系統掌握信息內容安全、網絡安全法律、網絡安全管理的專業知識,政治思想過硬,較強的中英文溝通和寫作能力,有技術,懂法律,會談判的復合型人才。
(1)繞過登錄驗證:使用萬能密碼登錄網站后臺等。
(2)獲取敏感數據:獲取網站管理員帳號、密碼等。
(3)文件系統操作:列目錄,讀取、寫入文件等。
(4)注冊表操作:讀取、寫入、刪除注冊表等。
(5)執行系統命令:遠程執行命令。
SQL語句是動態頁面有時會通過腳本引擎,將用戶輸入的參數按照預先設定的規則,構造成SQL語句進行數據庫操作。攻擊原理:通過構建特殊的輸入作為參數,傳入Web應用程序,改變原有的SQL語句的語義,以執行攻擊者想要的操作。如圖一,此處通過構造SQL語句的漏洞進行利用,實現用戶信息的泄露。

圖一
SQLmap是一個開放源碼的滲透測試工具,它可以用來進行自動化檢測,利用SQL注入漏洞,獲取數據庫服務器的權限;具有功能強大的檢測引擎,針對各種不同類型數據庫的滲透測試的功能選項。它配備了一個強大的探測引擎,為最終滲透測試人員提供很多強大的功能,可以拖庫,可以訪問底層的文件系統,還可以通過帶外連接執行操作系統上的命令。
SQLmap支持五種不同的注入模式:
(1)基于布爾的盲注,即可以根據返回頁面判斷條件真假的注入;
(2)基于時間的盲注,即不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷;
(3)基于報錯注入,即頁面會返回錯誤信息,或者把注入的語句的結果直接返回在頁面中;
(4)聯合查詢注入,可以使用union的情況下的注入;
(5)堆查詢注入,可以同時執行多條語句的執行時的注入。
本文以SQLmap 1.1.8-8版本為例,對其主要使用參數進行詳細的分析和講解。
用法:sqlmap [選項]
- h、-help:顯示基本幫助信息并退出
- version:顯示程序版本信息并退出
- v VERBOSE:詳細級別0-6,默認為1
這些選項適用于優化SQLmap的性能
- o:打開所有的優化開關
- keep-alive:使用持久HTTP(S)連接
- null-connection:從沒有實際的HTTP響應體中檢索頁面長度
- threads=THREADS:當前HTTP(S)最大請求并發量(默認為1)
在這些選項使用時需要提供最少一個確定的目標;
- d DIRECT:直接連接數據庫的連接字符串;
- u URL:設置目標URL,例:目標URL為http://192.168.43.1/vv.php,則命令為sqlmap -u http://192.168.43.1/vv.php;
- l LOGFILE:從Burpsuite或者WebScarab代理日志文件中分析目標;
- m BULKFILE:將目標地址保存在文件中,一行為一個URL地址進行批量檢測;
- r REQUESTFILE:加載外部請求包,從文件加載HTTP請求,sqlmap可以從一個文本文件中獲取HTTP請求,這樣就可以跳過設置一些其他參數(比如cookie,POST數據,等等);
這些選項是用來指定如何連接到目標URL
- data=DATA:通過POST發送的數據字符串
- cookie-urlencode URL:編碼生成的cookie注入
- drop-set-cookie:忽略響應的Set Cookie頭信息
- user-agent=AGENT:指定 HTTP User Agent頭
- random-agent:使用隨機選定的HTTP User Agent頭
- referer=REFERER:指定 HTTP Referer頭
- headers=HEADERS:換行分開,加入其他的HTTP頭
- auth-type=ATYPE HTT:身份驗證類型(基本,摘要或NTLM)(Basic, Digest or NTLM)
- proxy=PROXY:使用HTTP代理連接到目標URL
- ignore-proxy:忽略系統默認的HTTP代理
- delay=DELAY:在每個HTTP請求之間的延遲時間,單位為秒
- timeout=TIMEOUT:等待連接超時的時間(默認為30秒)
- retries=RETRIES:連接超時后重新連接的時間(默認3)
- scope=SCOPE:從所提供的代理日志中過濾器目標的正則表達式
- safe-url=SAFURL:在測試過程中經常訪問的url地址
- safe-freq=SAFREQ:兩次訪問之間測試請求,給出安全的URL
這些選項用于指定測試哪些參數并提供自定義的注入payloads和可選篡改腳本
- p TESTPARAMETER:可測試的參數
- dbms=DBMS:強制后端的DBMS為此值
- os=OS:強制后端的DBMS操作系統為這個值
- prefix=PREFIX:注入payload字符串前綴
- suffix=SUFFIX:注入payload字符串后綴
- tamper=TAMPER:使用給定的腳本(S)篡改注入數據
- no-cast:關閉有效載荷鑄造機制
- no-escape:關閉字符串逃逸機制
這些選項可以用來列舉后端數據庫管理系統的信息、表中的結構和數據以及運行自己的SQL語句
- D DB:指定要進行枚舉的數據庫名
- T TBL:指定要進行枚舉的數據庫表
- C COL:指定要進行枚舉的數據庫列
- U USER:指定要進行枚舉的數據庫用戶
- dump:轉儲數據庫管理系統的數據庫中的表項
- dump-all:轉儲所有的DBMS數據庫表中的條目
- sql-shell:執行SQL命令
- b,- banner:檢索數據庫管理系統的標識
- level=LEVEL:執行測試的等級(1-5,默認為1)
- risk=RISK:執行測試的風險(0-3,默認為1)
利用phpStudy軟件搭建存有SQL漏洞的DVWA網站,并使用Kali中的SQLmap工具進行攻擊,獲取數據庫的信息。
因DVWA需要登錄,此處應選擇的是POST方法注入,即需要先獲取登錄的cookie信息;我們這里通過萬能密碼進行登錄。
(1)設置Brupsuite攔截報文的工具以及瀏覽器的代理;
(2)攔截POST請求內容,并另存為url.txt并將其存放在/etc目錄下;如圖二。
(1)判斷注入點和數據庫類型:sqlmap -r /etc/url;此處判斷出了服務器的系統版本為Windows系統、PHP的版本為5.3.29、Apache的版本為2.4.18和MySQL數據庫的版本是大于等于5.5,并將這些信息保存在了目錄/root/.sqlmap/output中,若是使用Windows系統則保存在目錄C:UsersAdministrator.sqlmapoutput中,如圖三;這時我們了解到了更多有關網站的信息,對于之后獲取數據庫信息更為有利。

圖二

圖三
(3)判斷數據庫名:sqlmap -r /etc/url --dbs;通過使用SQLmap工具,我們得知了與MySQL數據庫服務器一共管理系統的數據庫有7個,如圖四;
(4)通過上一步知道MySQL中管理的數據庫名,找到所需要的數據庫名:dvwa;接下來,判斷數據庫中的表名:sqlmap -r /etc/url -D dvwa tables,如圖五;

圖四

圖五
(5)對獲取到的表進行分析后,從中找到了兩組列名,判斷表名中列名:sqlmap -r /etc/url -D dvwa -T users column,如圖六;在users的列名中找到了user和password的信息,自此收集信息工作結束。
通過之前收集的信息,我們已經確定了用戶和密碼的存在SQL數據庫中的位置,此時我們可以通過SQLmap進行注入攻擊,從而獲取用戶名以及密碼的信息。
(1)獲取user字段信息:sqlmap -r /etc/url -D dvwa -T users -C user dump,如圖七;通過SQLmap工具進行自動SQL注入可以直接獲得user用戶名的信息。

圖六

圖七
(2)獲取password字段信息:sqlmap -r /etc/url -D dvwa-T users -C password dump,如圖八;與獲取用戶名的方式相同我們也可以獲取到密碼password;此處有兩個值:括號內的為密碼、括號外的為密碼的MD5加密后的值。

圖八
至此,我們已經獲取了該網站的所有用戶名和密碼的相關信息,并且這些信息都會保存在目錄/root/.sqlmap/output下。
通過上述實驗,進一步證明了SQL漏洞的對我們生活的危害性以及SQLmap的強大之處,當然對于SQL漏洞也不是無法避免的,只要在產品推出前,由安全滲透從業人員使用相關方法對其進行滲透測試,如SQLmap的檢查;相信絕大多數的SQL漏洞都是可以避免的。
除了安全人員外,對人們提高個人網絡空間安全意識起到警示作用,讓學生們提高相關知識的學習興趣,培養學生的相關專業知識和技術,填補網絡空間安全的相關領域的空白。