网站首页 > 知识剖析 正文
背景
浏览器禁止直接执行.exe文件的主要原因是出于安全考虑。
这样的限制是为了防止恶意软件利用浏览器的漏洞或用户的不慎而在用户计算机上执行恶意代码。
有没办法不改变浏览器的安全性前提下,从浏览器执行Exe文件?
先看个效果
全部源码
1、编制C#控制台应用程序,使用Nancy框架创建一个简单的Web服务,并在控制台中监听用户输入。
Nancy 是一个轻量级、简单的框架,可以跨平台,在 .NET Framework/Core 和 Mono 上构建基于 HTTP 的服务。
Nancy 旨在处理 DELETE 、 GET 、 HEAD 、 OPTIONS 、 POST 、 PUT 请求,并提供简单、优雅的领域特定语言 (DSL),只需按几次键即可返回响应。
public static void Main(string[] args)
{
Console.WriteLine("web服务已启动!");
using (NancyHost host = new NancyHost(new Uri("http://localhost:12345")))
{
host.Start();
while (true)
{
if (Console.KeyAvailable && Console.ReadKey().Key == ConsoleKey.Enter)
break;
System.Threading.Thread.Sleep(100);
}
}
}
2、编制Nancy模块,用于处理Web服务中的请求。
public class Module : NancyModule
{
public Module()
: base("/dhub")
{
// 在处理请求之前执行的操作
Before += nancyContext =>
{
Console.WriteLine(DateTime.Now.ToString() + " " + Request.Url);
return null;
};
// 处理GET请求,路径为/dhub/home
Get["/home"] = parameters =>
{
return "<meta charset=\"UTF-8\">DHub Demo </br></br>"
+
"<input type=\"button\" onclick=\"location.href = 'http://localhost:12345/dhub/open?exe=ping&ip=127.0.0.1'; \" value=\"打开命令 ping 10.14.21.1 (Router)\" />"
+ "</br></br>"
+
"<input type=\"button\" onclick=\"location.href = 'http://localhost:12345/dhub/open?exe=explorer&ip=127.0.0.1'; \" value=\"打开资源管理器 127.0.0.1\" />"
+ "</br></br>"
+
"<input type=\"button\" onclick=\"location.href = 'http://localhost:12345/dhub/open?exe=vncviewer&ip=127.0.0.1'; \" value=\"打开vncviewer 127.0.0.1)\" />";
};
// 处理GET请求,路径为/dhub/open
Get["/open"] = parameters =>
{
string exe = Request.Query["exe"];
string ip = Request.Query["ip"];
Console.WriteLine("exe={0} ip={1} ", exe, ip);
if (exe != null && ip != null)
{
if (exe.ToLower() == "explorer")
Process.Start(string.Format(@"\\{0}\共享", ip));
if (exe.ToLower() == "vncviewer")
Process.Start(Path.Combine(Environment.Is64BitProcess ? "x64" : "x86", "vncviewer.exe"), string.Format("{0} -password PASSWORD", ip));
if (exe.ToLower() == "ping")
Process.Start(@"ping", string.Format("-t {0}", ip));
}
// 返回一个消息并重定向到/dhub/home页面
return "open</br><script language = \"javascript\"> window.location.href = \"http://localhost:12345/dhub/home\"</script>";
};
}
}
3、启动项目
注意:启动visual Studio必须是管理员权限,否则弹出以下错误。
正常启动如下:
4、打开浏览器,输入地址:http://localhost:12345/dhub/home
执行ping
http://ocalhost:12345/dhub/open?exe=ping&ip=127.0.0.1
打开资源管理器
http://localhost:12345/dhub/open?exe=explorer&ip=127.0.0.1
打开任意的exe:vncviewer
http://localhost:12345/dhub/open?exe=vncviewer&ip=127.0.0.1
- 上一篇: 从零开始开发一个实时博客
- 下一篇: 防止网页被嵌入框架的代码「转」
猜你喜欢
- 2024-11-22 只用一行代码快速收集H5聊天用户体验数据——附赠告警机器人
- 2024-11-22 js实现超级链接从新标签打开?
- 2024-11-22 SpringBoot+WebSocket实现简单的数据推送
- 2024-11-22 防止网页被嵌入框架的代码「转」
- 2024-11-22 从零开始开发一个实时博客
- 2024-11-22 简单分析实现运维利器---webssh终端libl
- 2024-11-22 如何开发跨框架的组件
- 2024-11-22 location.origin 兼容性处理
- 2024-11-22 为何强烈推荐 ShareJS 做多人协作编辑?
- 2024-11-22 记一次服务器入侵事件的应急响应
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)