Beecms代碼審計

0x00 前言

BEESCMS企業網站管理系統是一款PHP+MYSQL的多語言系統,內容模塊易擴展,模板風格多樣化,模板製作簡單功能強大,專業SEO優化,後臺操作方便,完全可以滿足企業網站、外貿網站、事業單位、教育機構、個人網站使用。

beecms官網下載源碼

文章大概記錄了審計cms的流程,算是本人代碼審計的一個入門總結吧。

0x01入口文件

\bee\index.php
程序開頭引入了三個文件

require_once('includes/init.php');
require_once('includes/fun.php');
require_once('includes/lib.php');

主要關注一下\bee\includes\init.php
對GPC等超全局數組進行轉義處理,並用fl_value進行變量消毒

if (!get_magic_quotes_gpc())
{
    if (isset($_REQUEST))
    {
        $_REQUEST  = addsl($_REQUEST);
    }
    $_COOKIE   = addsl($_COOKIE);
	$_POST = addsl($_POST);
	$_GET = addsl($_GET);
}
if (isset($_REQUEST)){$_REQUEST  = fl_value($_REQUEST);}
    $_COOKIE   = fl_value($_COOKIE);
	$_GET = fl_value($_GET);

@extract($_POST);
@extract($_GET);
@extract($_COOKIE);

上面對POST數組並沒有進行消毒處理,但是後面調用POST數組變量時,基本都有再次用fl_value進行過濾操作,所以無傷大雅。fun.php和lib.php包含了一些需要調用的方法,可以後面需要的時候再跟進查看

0x02 SQL注入

全局查找了“sql”、“query(”、“fetch_asc(”等查詢函數出現的位置,耐心尋找可控的變量

注入1

\mx_form\order_save.php
定位query()函數,其中SQL語句拼接$ip變量,經過fl_valueo()與fl_html()函數過濾
在這裏插入圖片描述
fl_value()過濾sql關鍵字
在這裏插入圖片描述
fl_html()對語句進行html實體編碼,防禦XSS

在這裏插入圖片描述
這裏欲尋找輸出bee_formlist信息的位置進行回顯注入,定位後查詢發現只在後臺存在,且因爲防禦了XSS,無法導致XSS存儲型漏洞,這裏可以進行延時注入,每次注入都需要提交驗證碼,十分雞肋

注入2

既然get_ip()處沒有對單引號進行轉義,可以尋找其他利用點
全局搜索get_ip()函數

在這裏插入圖片描述
跟進member/member.php
當$action='save_login’時,會獲取IP的值並存儲在session中
在這裏插入圖片描述

全文搜索$_SESSION['m_ip'],發現當$action=out時,該值將拼接進sql語句進行update操作

在這裏插入圖片描述

這裏更新的IP字段,會在你重新登陸時打印在登陸主頁面,如果能將敏感信息update到ip字段,那麼就能通過回顯獲取敏感信息
在這裏插入圖片描述

這裏的利用比較麻煩,因爲ip進行了fl_value()函數的消毒,過濾了等號和*號,沒有辦法進行直接回顯,好在這裏關鍵字可以大寫繞過,然後利用ascii()配合斜槓,利用除法獲取敏感數據

在這裏插入圖片描述
進入會員中心進行登陸
在這裏插入圖片描述
抓包修改XFF
X-forwarded-for:100'/ascii(substr(( (SELECT member_password FROM (SELECT member_password FROM bees_member limit 1)a)),1,1))#
在這裏插入圖片描述

登陸成功
在這裏插入圖片描述

然後註銷登陸,讓ip進行更新操作,執行sqL語句,再一次登陸,可看到ip成果獲取數據,100/101 = 0.9900990099009901,說明密碼MD5的第一位爲'e',如此循環,最終能獲取任意用戶密碼(你有時間的話)

在這裏插入圖片描述

0x03後臺文件上傳

這種洞結合具體功能點審計效果會比較好
在後臺找到一處上傳文件的位置
在這裏插入圖片描述
選擇上傳本地圖片,這裏後端之驗證了content-type,可以直接image/jpeg繞過
在這裏插入圖片描述
F12審查元素
在這裏插入圖片描述
找到圖片位置,成功RCE
在這裏插入圖片描述

0x04 XSS

全局搜索echo,逐個排查
在D:\phpstudy\PHPTutorial\WWW\bee\admin\upload.php
中打印了$get變量

$get變量取自GET型參數,這裏沒有對html字符進行轉義,導致XSS
在這裏插入圖片描述
可直接過獲取管理員cookie
在這裏插入圖片描述

發佈了36 篇原創文章 · 獲贊 12 · 訪問量 8011
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章