


5UCMS <= v1.2.2024 又一SQL注入分析
詳細說明:
最近在測試一個網站時,提交/admin/,瀏覽器閃現了”無憂網絡管理系統”,GOOGLE搜索下載了一份最新版的源代碼,發現問題如下:
文件..\plus\comment\save.asp
23行:Dim Comment_Aid,Comment_User,Comment_Content
24行:Comment_Aid = Request(“id”)
此外部提交的id值會被插入SQL語句中如下:
55行:Set Ns = DB(“Select [ID],[Cid],[Comments],[IsComment] From [{pre}Content] Where [ID]=” & Comment_Aid,3)
24到55行之間開發人員加了偽過濾代碼如下:
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必須有值,且必須是數字型,否則將會調用Alert(),搜索該函數如下:
文件..\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 ‘ 關閉數據庫鏈接
if len(Msgstr) > 0 then response.write “<>alert(‘” & Msgstr & “‘);</>” ‘ 提示
response.write “<>location.href=’” & Url & “‘;</>” ‘ 跳轉
response.end
else
if len(Msgstr) > 0 then response.write “<>alert(‘” & Msgstr & “‘);</>” ‘ 提示
end if
end function
該函數里是一個嵌套的if結構,如果Url為空,那么執行else之后的代碼:
if len(Msgstr) > 0 then response.write “<>alert(‘” & Msgstr & “‘);</>” ‘ 提示
此語句僅僅打印了錯誤信息,并沒有執行response.end,所以導致Alert()對id的數據類型檢測失敗,,,最終導致了SQL注入的發生
那么Url這個關鍵的跳轉變量怎么來的呢,回去看save.asp文件
9行:Dim Gourl : Gourl = Request.ServerVariables(“HTTP_REFERER”)
這個就是罪魁禍首了,以下內容摘自網絡:
“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>轉向
7.用XML加載地址 ”
在上面不可取值的第4條中,說明了,直接構造的該訪問路徑,使得Gourl 為空
關健詞:SQL注入分析
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解