2011-04-27 48 views
4

我正在我的朋友的網站上進行安全審計。一項功能是允許用戶從html上傳文件。唯一的驗證是將文件重命名爲當前時間戳。從上傳文件執行代碼

我想知道,有沒有辦法上傳一個惡意文件,以便當用戶轉到該文件的URL時,它會執行代碼(在服務器端)?

我嘗試上傳了一個hello-world php腳本,但它只是顯示代碼而不是執行它。如果文件擴展名是.php,它將被執行,但是沒有文件擴展名(因爲文件被重命名)。

編輯:我可以訪問完整的源代碼作爲安全審計的一部分。如果我可以在不使用它的情況下解決此問題會更好,但如果需要,我可以回答有關源代碼的任何問題。

+0

我可以保證,這是不被惡意。這是我正在進行的Web編程課程的一項任務。該網站存在許多安全漏洞(如SQL注入和XSS)。我試圖看看它的文件上傳機制是否是另一個漏洞。 – matzahboy 2011-04-27 00:14:55

+0

您可能還需要查看「跨協議腳本」 – 2011-04-30 13:21:07

回答

1

據我所知,上傳文件,並通過訪問它。瀏覽器不能在服務器端執行,除非服務器設置爲執行沒有擴展名的文件。 但是,如果還有其他漏洞(如本地文件包含),您可能可以上傳並執行php腳本。

你可以閱讀一些有關文件inclution這裏: Wiki on RFI (almost the same)這裏 Document on LFI and how it can be used

如果可以執行該文件,取決於分配上的服務器/站點的設置,所以你必須要滲透測試如果你可以執行一個PHP腳本,你可以自己選擇。

,你可以在沒有擴展名的文件做的唯一事情是,因爲你只在舊的瀏覽器提你的自我,XSS,但(IE8和向下的弱勢羣體,大多數其他瀏覽器都沒有。)

+0

「自我XSS」是什麼意思? – matzahboy 2011-05-09 01:53:43

+0

對不起,它拼寫爲wrog。 :) – 2011-05-09 07:48:42

-2

用JavaScript上傳文件。有很多js漏洞。

http://en.wikipedia.org/wiki/Cross-site_scripting

+0

PS。我希望你不會這樣做是惡意的...因爲這不會很酷...... – Homer6 2011-04-27 00:11:56

+0

-1客戶端漏洞。 – gd1 2011-04-27 00:12:19

+0

由於其他原因,該網站已經非常容易受到XSS的影響。我正在查看是否可以找到其他漏洞。 – matzahboy 2011-04-27 00:13:19

0

那麼,你永遠處於危險之中的一件事就是提供將惡意代碼放到服務器上的可能性 - 無論他們是否能夠僅僅通過查看特定文件的URL來執行它,並不是你所需要的想一想。

如果您的代碼中存在一個漏洞,您可以在服務器上動態地包含或打開本地文件,那麼可以簡單地包含要執行的(當前)本地惡意代碼。現在,對於試圖在遠程服務器上添加代碼的用戶而言,這種攻擊甚至很常見,但是一些安裝配置爲防止包含可阻止這些攻擊的遠程文件。如果代碼在物理上位於機器上,並且可執行代碼中存在缺陷,那麼這樣的配置仍會使您易於受到攻擊。

這只是一個想法 - 我不會擔心或恐慌太多,但我不會完全排除它。

+0

好想法,但PHP從不使用「包含」或「要求」聲明。 – matzahboy 2011-05-01 16:44:54

1

安全掃描器Chorizo!可能會感興趣:

https://chorizo-scanner.com/

該解決方案由一個公司,這確實白天PHP諮詢和編碼實現。

這是一項付費服務​​。一次掃描是免費的。

0

從我的理解,很多網絡輸出依賴於讀取文件沒有實際執行它們。服務器需要特定的權限才能執行文件。

該解決方案首先檢查是否允許上傳的文件類型。如果你只上傳圖片 - 你不會期待.php腳本。但是這並不能阻止我創建bad.php並將其上傳爲bad.jpg。

我例如(在我的Ubuntu機器上)上傳了一個777權限的PHP文件,只能通過輸入php hello.php來運行它。您通常不會在某人上傳的文件上執行include(),因此我相信大部分代碼都與可讀性有關。在文件包含

的維基百科頁面是一個好的開始,包括PHP例子: https://en.wikipedia.org/wiki/File_inclusion_vulnerability