因此,我们假设您在IIS中有一个名为Test
的网站。我希望能够添加一个只在用户访问该页面时运行foo.exe /runfoo
的应用程序。让我们说我不关心性能,干净代码",经常运行命令等等。这是一个概念验证/更大工具包的一部分。
我尝试过并且工作的是我可以部署一个包含所有DLL /其他垃圾的完整C#Web应用程序,并让它创建一个Process
并运行它。我不想这样做。理想情况是我会在现有网站下创建一个应用程序,该网站有一个单独的应用程序池(我可以更改),在其中我可以修改web.config或与应用程序池有关的东西让它运行一个命令。一个简单的应用程序,具有单个文件夹,其中包含最少的文件。
一些要求:
我已经查看了我能找到的所有现有选项,并且没有一个能够突出我作为对此有用的东西,除了" Process Orphaning"在应用程序池设置中。有没有办法通过访问页面来触发这个(没有部署完整的Web应用程序)?
答案 0 :(得分:1)
修改:
看起来这是一项关于攻击性安全技术的研究工作以及IIS的这些要求
您可以在IIS中运行exe作为CGI可执行文件,如here所述。 This文章讨论了传递查询字符串值。同时探索fastCGI以及CGI的改进
编辑2:添加其他选项
你也可以在IIS中简单地放一个简单的aspx及其代码 网站的内容,可以访问该aspx页面。没有编译,没有 部署,没有bin目录等。你需要的是两个文件
这是代码
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
和Default.aspx.cs文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Process process = new Process();
process.StartInfo.FileName = "echo.exe";
process.Start();
}
}