- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分析利用髙贝文章v3.0漏洞之绕过refer注入
“重重突破”到“致命一击”
--分析利用髙贝文章v3.0漏洞
莫ㄨ问 [B.H.S.T]
事情缘由
最近检测母校的网站,发现其中一个分站是利用了髙贝文章系统v3.0。苦于手中没有其漏洞资料,又是第一次听说这个系统。于是就顺便从站长中国下载v3.0版本,发现其最新更新是2006年的,貌似也太老了吧。读了部分代码发现几个漏洞。不过本文不在于漏洞本身,而在于其分析的过程和感受,另外就是思路。
漏洞分析与利用
注册的跨站,算是个鸡肋
个人习惯,先看看注册的过滤,似不是很严格。直接到User_RegPost.asp文件在代码的25-36行处:
if (document.GaobeiSys_Reg.UserName.value.indexOf()!=-1 || document.GaobeiSys_Reg.UserName.value.indexOf()!=-1 || document.GaobeiSys_Reg.UserName.value.indexOf($)!=-1)
{
alert(用户名中包含非法字符 (,,$) );
document.GaobeiSys_Reg.UserName.focus();
return false;
}
if (document.GaobeiSys_Reg.UserName.value.indexOf()!=-1 || document.GaobeiSys_Reg.UserName.value.indexOf(%)!=-1 || document.GaobeiSys_Reg.UserName.value.indexOf()!=-1)
{
alert(用户名中包含非法字符 (,%,) );
document.GaobeiSys_Reg.UserName.focus();
return false;
}
很显然只过滤了, , ,% 四种字符,另外还限制了长度只能输入10字符,这个我们可以查看其源码然后保存在本地然后修改其maxlength值就ok了。那么 的过滤又怎么绕过?可以用eval()函数配合ajax就可以了。不过我不熟悉就不给大家介绍了。
opensoft.asp的隐藏注射漏洞,直接看到opensoft.asp代码10-23行:
if(request.querystring(soft_id) ) then
colname = request.querystring(soft_id)
end if
url=soft_url+request(url)
sql=select * from [soft] where soft_id=colname
set rs=server.createobject(adodb.recordset)
rs.open sql,conn,1,1
很显然变量colname仅仅检测是否为空就带入sql查询,注入漏洞产生了。本来以为应该很简单可以得到管理员密码。可是回到主页没有发现一个页面是opensoft.asp?soft_id=的。我想根据名字来看,应该和软件下载有关,就在首页随便找个下载链接http://localhost/showdown.asp?soft_id=54。启动WsockExpert来拦截数据包。点解下载,迅雷中看到确实调用了opensoft.asp这个文件,并且拦截其数据包得到如图01,02:
图1
图2
那么我们的直接输入http://localhost/opensoft.asp?soft_id=54看看。显示如图03:
图3
看到这个提示有经验人就会知道应该防盗链问题。那么怎么回事。我们回到代码去看看,在代码第4-9行:
From_url = Cstr(Request.ServerVariables(HTTP_REFERER))
Serv_url = Cstr(Request.ServerVariables(SERVER_NAME))
if mid(From_url,8,len(Serv_url)) Serv_url then
response.write 非法链接! 防止盗链
response.end
end if
原来调用了http_referer来验证是否盗链.接下来就是绕过防盗链了。在回到图2看到这行Referer: http://localhost/showdown.asp?soft_id=54 ,思路有了,伪造referer就可以了。可是接下来的问题是怎么伪造才可以进行注入?陷入了困境,吃饭后继续看,刚问旭方这个问题,他扔给我一个软件quickspoof说可以利用这个来伪造并进行注入。好的。。开始手工注射这个“隐藏“的注入点。比较烦琐。。我测试了可以成功拿到管理员的id和密码。这里我简单说
文档评论(0)