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

C# 如何让IIS应用程序运行简单的命令?,c#,asp.net,iis,application-pool,C#,Asp.net,Iis,Application Pool,那么,假设您在IIS中有一个名为Test的网站。我希望能够添加一个应用程序,当用户访问页面时,它只运行foo.exe/runfoo。比如说,我不关心性能,“干净的代码”,过于频繁地运行命令等等。这是为了概念验证/更大工具包的一部分 我已经尝试过并且已经开始工作的是,我可以部署一个包含所有DLL/其他垃圾的完整C#Web应用程序,并让它创建一个进程并运行它。我不想那样做。理想的情况是,我将在现有网站下创建一个应用程序,该网站有一个单独的应用程序池(我可以更改),在该应用程序池中,我可以修改web.

那么,假设您在IIS中有一个名为
Test
的网站。我希望能够添加一个应用程序,当用户访问页面时,它只运行
foo.exe/runfoo
。比如说,我不关心性能,“干净的代码”,过于频繁地运行命令等等。这是为了概念验证/更大工具包的一部分

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

一些要求:

  • 该命令可以定期运行,而不仅仅是在用户访问某个页面时运行,但这并不可取
  • 该命令必须能够接受参数
  • 应用程序目录中所需的最少文件

我已经浏览了我能找到的所有现有选项,除了应用程序池设置中的“流程孤立”之外,没有一个选项对我有帮助。有没有一种方法可以通过访问页面(而不部署成熟的web应用程序)触发这种情况

编辑:

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

  • 该命令可以定期运行,而不是仅在用户访问 佩奇,但这并不可取
  • 命令必须能够执行以下操作: 争论
  • 应用程序目录中所需的最少文件
如前所述,您可以在IIS中将exe作为CGI可执行文件运行。本文讨论传递查询字符串值。同时也探索CGI的改进

编辑2:添加另一个选项

您也可以简单地将一个简单的aspx及其代码放在IIS中 网站的内容,并可以访问该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>

我不确定你是否打算表现得像个尖酸刻薄的人,但我对计划的任务很熟悉。这是攻击性安全技术研究的一部分,我希望能够演示一个简单的概念证明。部署整个网站并不理想,使用schtasks、注册表项、at命令的
at、WMI事件订阅等都不是合适的选择。我知道我所要求的听起来像是“坏习惯”但是我想请社区给我一个好处,我怀疑我做这么奇怪的事情是有原因的。哦,我的错。我想你的要求就是你的要求所列的。你应该在问题中添加细节,这是安全技术研究的一部分。谢谢你更新的答案,但这需要在IIS中启用CGI模块,对吗?这对我来说太过分了。我知道这并没有被列为一个需求或任何东西,但我认为会有一个更简单的方法。我想知道我是否可以添加一个简单的页面/dll组合,该组合具有对所有其他.NET dll和其他内容的现有站点的相对路径引用。是的,你是对的。从技术上讲,你可以将html页面重命名为aspx,aspnet编译器将编译并运行它。将使用detailsHmm更新答案,是的。我认为这实际上是一种方法(至少非常接近)。在我的例子中,有一个主网站运行着一个低优先级的应用程序池。我要做的是创建一个作为本地系统运行的应用程序池,创建一个使用该应用程序池的应用程序,向主应用程序的bin目录添加一个符号链接,然后像您所说的那样放入一个aspx文件。我做了一点测试,这似乎奏效了。不是你说的100%,但这是为了在不同的应用程序池下运行。如果我们希望程序以IIS_USR的形式运行,那么您的方法肯定会起作用。谢谢你的帮助。反对票告诉我,社区觉得我的问题要么没有显示研究成果,要么不清楚,要么没有用处。我花了很多精力研究这个问题的解决方案,并提出了一些对我不起作用的方法(部署一个完整的应用程序)。我已经浏览了我能找到的IIS文档站点,但这并不是人们通常做的事情。如果有任何不清楚的地方,请评论并让我知道需要澄清的地方。谢谢
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();            
    }
}