5UCMS <= v1.2.2024 又一SQL注入分析
詳細(xì)說明:
最近在測(cè)試一個(gè)網(wǎng)站時(shí),提交/admin/,瀏覽器閃現(xiàn)了”無憂網(wǎng)絡(luò)管理系統(tǒng)”,GOOGLE搜索下載了一份最新版的源代碼,發(fā)現(xiàn)問題如下:
文件..\plus\comment\save.asp
23行:Dim Comment_Aid,Comment_User,Comment_Content
24行:Comment_Aid = Request(“id”)
此外部提交的id值會(huì)被插入SQL語句中如下:
55行:Set Ns = DB(“Select [ID],[Cid],[Comments],[IsComment] From [{pre}Content] Where [ID]=” & Comment_Aid,3)
24到55行之間開發(fā)人員加了偽過濾代碼如下:
44行:if Len(Comment_Aid) = 0 Or Not IsNumeric(Comment_Aid) Then Call Alert(Plus.Lang(“iderr”),Gourl)
45I行:f Len(Comment_User) < 2 Then Comment_User = “Guest”
46行:If Len(Comment_Content) < Plus.Config(“contentmin”) Then Call Alert(replace(Plus.Lang(“contentmin”),”$1″,Plus.Config(“contentmin”)),Gourl)
44行的要求是id必須有值,且必須是數(shù)字型,否則將會(huì)調(diào)用Alert(),搜索該函數(shù)如下:
文件..\inc\function.asp
193行: function Alert(byval Msgstr,byval Url)
if len(Url) > 0 then
on error resume next
if Isobject(conn) then conn.close ‘ 關(guān)閉數(shù)據(jù)庫鏈接
if len(Msgstr) > 0 then response.write “<>alert(‘” & Msgstr & “‘);</>” ‘ 提示
response.write “<>location.href=’” & Url & “‘;</>” ‘ 跳轉(zhuǎn)
response.end
else
if len(Msgstr) > 0 then response.write “<>alert(‘” & Msgstr & “‘);</>” ‘ 提示
end if
end function
該函數(shù)里是一個(gè)嵌套的if結(jié)構(gòu),如果Url為空,那么執(zhí)行else之后的代碼:
if len(Msgstr) > 0 then response.write “<>alert(‘” & Msgstr & “‘);</>” ‘ 提示
此語句僅僅打印了錯(cuò)誤信息,并沒有執(zhí)行response.end,所以導(dǎo)致Alert()對(duì)id的數(shù)據(jù)類型檢測(cè)失敗,,,最終導(dǎo)致了SQL注入的發(fā)生
那么Url這個(gè)關(guān)鍵的跳轉(zhuǎn)變量怎么來的呢,回去看save.asp文件
9行:Dim Gourl : Gourl = Request.ServerVariables(“HTTP_REFERER”)
這個(gè)就是罪魁禍?zhǔn)琢?以下內(nèi)容摘自網(wǎng)絡(luò):
“asp中Request.ServerVariables(“HTTP_REFERER”)可以取得來源地址。
以下情況可以取得值:
1.直接用<a href>
2.用Submit或<input type=image>提交的表單(POST or GET)
3.使用J提交的表單(POST or GET)
以下情況不能取得值:
1.從收藏夾鏈接
2.單擊’主頁’或者自定義的地址
3.利用J的location.href or location.replace()
4.在瀏覽器直接輸入地址
5.<%Response.Redirect%>
6.<%Response.AddHeader%>或<meta http-equiv=refresh>轉(zhuǎn)向
7.用XML加載地址 ”
在上面不可取值的第4條中,說明了,直接構(gòu)造的該訪問路徑,使得Gourl 為空
關(guān)健詞:SQL注入分析
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解