我們有一個簡單的php文件捕獲電子郵件。它將這些電子郵件放入一個csv文件(這是不可執行的PHP)。我們最近有人設法破解我們的網站,這似乎是其中一個切入點,但我不明白它有可能。這裏的腳本:PHP代碼注入。我們有安全風險嗎?
$fh = fopen('cap.csv', 'a+');
fwrite($fh, "\r".$_GET['email']);
fclose($fh);
很基本的權利?無論如何,你可以想到利用這個?
我們有一個簡單的php文件捕獲電子郵件。它將這些電子郵件放入一個csv文件(這是不可執行的PHP)。我們最近有人設法破解我們的網站,這似乎是其中一個切入點,但我不明白它有可能。這裏的腳本:PHP代碼注入。我們有安全風險嗎?
$fh = fopen('cap.csv', 'a+');
fwrite($fh, "\r".$_GET['email']);
fclose($fh);
很基本的權利?無論如何,你可以想到利用這個?
是的,但可能不是你在找什麼。
唯一的事情,我可以做的:
它不會允許我執行任何操作,或者訪問任何內容。 (除非你處理它並導致其他地方泄漏)。但是,請保持安全!
好吧,這就是我的想法。我們剛剛有一個絕對正面的人,那就是漏洞,除了將他們想要的任何數據傾倒入該文件的煩惱之外,我沒有看到任何其他問題。 – Jeremy 2011-06-14 13:12:18
您向我們顯示的代碼只能用於將任何內容放入csv文件(我假設您不驗證/驗證$_GET['email']
變量),但無法以這種方式注入並執行PHP代碼。
也許你有一個腳本可以處理被攻擊的csv文件。
對於給定的代碼,我現在唯一能想到的就是NullByte攻擊矢量(儘管我不確定它們是否適用於當前版本的PHP,甚至不適用於您的代碼)。由於您使用的是$ _GET,因此通過電子郵件參數進行的任何攻擊都應該可以在服務器的日誌文件中看到。
檢查您的日誌文件是否有任何可疑的電子郵件字符串,例如像
http://example.com?email=foo\0somethingmalicious
和類似的東西。
您發佈的代碼表明您對輸入數據沒有太大的消毒作用。因此,您可能在軟件的其他部分遇到類似的問題。
除此之外,即使您不在應用程序中執行csv文件,也可以在其中注入PHP代碼。
因此,如果應用程序中有另一個漏洞無法正確檢查輸入數據,並且可能被利用來在服務器上包含文件,然後包含該問題的csv文件,則可以執行遠程代碼執行。
可能取決於您對csv文件所做的操作。 – KingCrunch 2011-06-14 13:03:19
您是否在其他地方使用過'cap.csv'的內容? – 2011-06-14 13:03:35
以後如何使用電子郵件?你永遠不會淨化輸入,這意味着讀取任何東西都是可能的。 – 2011-06-14 13:03:48