如何让IIS应用程序运行一个简单的命令?

时间:2017-07-04 03:16:06

标签: c# asp.net iis application-pool

因此,我们假设您在IIS中有一个名为Test的网站。我希望能够添加一个只在用户访问该页面时运行foo.exe /runfoo的应用程序。让我们说我不关心性能,干净代码",经常运行命令等等。这是一个概念验证/更大工具包的一部分。

我尝试过并且工作的是我可以部署一个包含所有DLL /其他垃圾的完整C#Web应用程序,并让它创建一个Process并运行它。我不想这样做。理想情况是我会在现有网站下创建一个应用程序,该网站有一个单独的应用程序池(我可以更改),在其中我可以修改web.config或与应用程序池有关的东西让它运行一个命令。一个简单的应用程序,具有单个文件夹,其中包含最少的文件。

一些要求:

  • 该命令可以定期运行,而不仅仅是在用户访问页面时运行,但这并不是优选的。
  • 该命令必须能够接受参数。
  • Application目录中需要的最小文件。

我已经查看了我能找到的所有现有选项,并且没有一个能够突出我作为对此有用的东西,除了" Process Orphaning"在应用程序池设置中。有没有办法通过访问页面来触发这个(没有部署完整的Web应用程序)?

1 个答案:

答案 0 :(得分:1)

修改:

看起来这是一项关于攻击性安全技术的研究工作以及IIS的这些要求

  • 该命令可以定期运行,而不仅仅是在用户访问时 页面,但这不是更好。
  • 该命令必须能够执行 参数。
  • Application目录中需要的最小文件。

您可以在IIS中运行exe作为CGI可执行文件,如here所述。 This文章讨论了传递查询字符串值。同时探索fastCGI以及CGI的改进

编辑2:添加其他选项

  

你也可以在IIS中简单地放一个简单的aspx及其代码   网站的内容,可以访问该aspx页面。没有编译,没有   部署,没有bin目录等。你需要的是两个文件

  • 在IIS网站中创建两个文件default.aspx和Default.aspx.cs

这是代码

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();            
    }
}