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规则详解