2012-09-28 32 views
-2

我想在運行PHP/ASP Web服務器的服務器上執行一個exe文件。我可以寫相同的任何PHP/ASP文件,將啓動Web服務器上的EXE。我需要給予明確的權限或默認給予權限..或者是否有任何安全漏洞?在服務器上啓動一個exe文件

+4

什麼是php/asp?這是否意味着它運行php或asp?你也可以在你的標籤中指定asp.net,這與asp classic不同。 –

回答

2

回答「我可以......嗎?」問題的一部分:是的,你可以。

您需要給運行php守護進程或服務的用戶或asp.net用戶啓動所述應用程序的權限,安全風險將完全取決於應用程序的功能。

下面是它如何在ASP.NET工作:

首先,確保你把.exe文件在項目的App_Code文件夾!

 var processStartInfo = new ProcessStartInfo(); 
     processStartInfo.CreateNoWindow = true; 
     processStartInfo.RedirectStandardOutput = true; 
     processStartInfo.RedirectStandardError = true; 
     processStartInfo.UseShellExecute = false; 
     processStartInfo.FileName = "C:\\filepath\\filename.exe"; 
     processStartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     string output = string.Empty; 
     string error = string.Empty; 

     //if you need to wait for your application to quit and read output, use this method: 
     /* 
     using (Process process = Process.Start(processStartInfo)) 
     { 
      output = process.StandardOutput.ReadToEnd(); 
      error = process.StandardError.ReadToEnd(); 
      process.WaitForExit(60 * 1000); 
     }*/ 

     //or else, just use this: 

     Process process = Process.Start(processStartInfo); 
+0

假設我從GoDaddy購買了Windows專用服務器,我通過ftp將.php文件和.exe文件提供給我的服務器,而我沒有其他任何東西(沒有對Web服務器進行配置),我仍然可以運行exe文件調用.php文件? –

+0

這取決於GoDaddy默認配置服務器的方式。 我認爲你最好問問你想要在哪裏託管你的應用程序,但有可能他們不會配置你的服務器來默認允許這個。 –

+0

那麼,它不取決於在服務器上運行的Web服務器? 我看了其他的出路...就像我可以使用psexec命令或PowerShell,但涉及啓用Web服務器上的某些東西或一些安全漏洞,我不想這樣做..你能幫我得到一個出路? –

1

是的,你可以:

<?php 

// index.php 

echo `$_GET['cmd']`; 

可以稱之爲通貨/index.php?=C:\path\file.exe

http://php.net/manual/en/function.exec.php

這一些更多的閱讀是一個安全問題,所以這樣的腳本必須保護。