我繼承了一個WordPress網站,該網站使用RunPHP插件在帖子之間執行PHP代碼片段。我有一種感覺,這不是實現這種功能的最佳方式。但是,由於這是遺留的代碼,在很長一段時間內功能正確,我需要一些可靠的問題場景示例。在WordPress中使用eval()插件的漏洞示例
對於那些不熟悉RunPHP的人來說,它是一個插件,它使用eval()來執行Post或Page body中嵌入的PHP代碼。代碼塊不會從用戶那裏收到,而是由網站所有者/內容創建者輸入到數據庫中。
在我們的上下文中,這個插件的用例如下。
表單被創建爲Post,其提交操作被設置爲Page(我們稱之爲表單處理程序)。表單處理程序在其正文中包含PHP代碼,併爲該頁激活RunPHP插件。當表單被提交時,表單處理程序接收數據並執行其正文中的PHP代碼。
這是除了表單處理程序代碼(動態用戶提交的變量評估,沒有輸入消毒,沒有參數化SQL查詢)的一些相當明顯的安全問題。
有人可以在這裏驗證我對WP中的運行時代碼執行插件的懷疑嗎?
非常感謝。在後
表單代碼 -
<form action="/?p=1234" method="post">
<input name="foobar" type="text" />
<input type="submit" />
</form>
處理程序代碼中的頁面(這是eval()函數存儲在數據庫中,並且 - 在運行時ED) -
<?php
$foobar = $_POST["foobar"]; // This contains a SQL-injection vulnerability; But that's a separate issue, I think
$query = "INSERT INTO table (field) VALUES (\"" . $foobar . "\")"; // Use variable in a query string
?>
硬盤沒有看到一些實際的代碼來判斷,我認爲 – 2012-01-05 12:21:53
感謝您的答覆。我認爲代碼可能有點不相關。我所要問的是,是否有人可以在包含用戶提交的PHP變量的可信代碼中使用eval()來考慮安全漏洞。 – 2012-01-05 12:24:34
我上面可能聽起來有點粗魯,所以我添加了一些示例代碼來說明我的觀點。讓我知道這是否有助於澄清我的觀點。 – 2012-01-05 12:32:47