LuManager高危SQL注入0day分析

2021-09-23 22:50:14 字數 2046 閱讀 5990

2023年9月7日阿里雲盾態勢感知系統捕獲到lumanager系統的0day一枚,經證實,該漏洞一旦被黑客利用可直接以最高許可權登陸後台,上傳webshell, 控制系統資料庫、操作虛擬主機,後果不堪設想。

lumanager是一種基於freebsd、zijidelu、debian、centos、ubuntu等linux/unix系統的**伺服器管理軟體,目前有大量國內使用者使用。雲盾攻防對抗團隊捕獲0day後第一時間通知廠商,廠商迅速響應,於8日上午發布安全更新並致謝阿里雲盾。在此次事件過程中,正是基於雲盾態勢感知系統靈敏的漏洞捕獲能力、阿里雲與廠商的快速溝通響應以及廠商負責任的態度,得以保證了阿里雲使用者不受該漏洞影響,避免了不必要的損失。雲盾作為網際網路安全的基礎設施,對於基礎軟體的安全我們會進行深入研究和分析,保障雲平台的安全穩定執行。

2023年9月6日,通過阿里云云盾態勢感知系統,在異常流量中我們發現有黑客利用lumanager系統獲取webshell,捕獲到攻擊者的一枚攻擊payload:

在漏洞庫中,我們並未發現該系統存在安全漏洞,推測該漏洞為一枚0day。我們第一時間對該payload進行了復現:向lumanager(版本2.0.99),index.php?m=public&a=login 傳送post資料報,提交後直接繞過登陸驗證進入後台,並執行了payload 中的sql語句:

通過執行的sql結果分析,payload觸發時,sql語句中,user.user欄位的值並沒有單引號包圍,同時這個變數可控,導致sql注入漏洞。確定是位於where條件觸發的sql注入,繼續跟蹤定位**,/sys/lib/think/db/db.class.php 400行,parsewhere()函式內**:

if ( 「exp」 == strtolower( $val[$i][0] ) )

{

$wherestr .= 「(「.$key.」 「.$data.」) 「.$rule.」 「;
從上述**可以看到:當傳入where條件是陣列,且陣列第乙個元素值為「exp」,會直接拼接$val[$i][1]到sql語句的where條件中,由於沒有單引號,因此不受全域性addsalash轉義影響。parsewhere()函式在上層被呼叫時,如果沒有檢查傳入變數的型別,直接將可控引數傳入,攻擊者利用這個特性就可以構造惡意sql。

lumanager在登陸驗證**中,將$_post[『user』]引數傳遞後帶入了parsewhere()函式,構造該引數為陣列型別,可觸發執行惡意sql。由於該漏洞是登陸位置觸發的sql注入,我們可以簡化payload,構造恆真條件,使用」萬能密碼」登陸後台:

post /index.php?m=public&a=login

user[0]=exp&user[1]==1)) or 1 --

提交後可直接以管理員身份進入後台。

lumanager登陸位置有驗證碼機制,傳送payload時候需要先識別驗證碼,可以使用ocr庫自動識別驗證碼,進行自動化檢測,有興趣可以自己實現:

從漏洞成因上說,該漏洞實質是thinkphp框架自身的一處特性(or 漏洞)引發的,@phith0n已經提交過thinkphp框架存在的安全問題(但是仍有很多基於thinkphp框架開發的系統並沒有意識到這個嚴重問題,存在漏洞的也不僅僅lumanager,建議thinkphp開發者檢查自身產品是否存在同樣問題。

該漏洞影響lumanager 2.1.1以下的所有版本,攻擊者可直接以最高許可權登陸後台,上傳webshell, 控制系統資料庫、操作虛擬主機。測試過程中,我們發現後台可以新增計畫任務,計畫任務會以root許可權定時執行,攻擊者進入後台後可獲取系統root許可權。

該漏洞我們已經第一時間通知廠商,9月8日上午廠商發布公升級,並對阿里云云盾團隊表示感謝。目前最新版本為2.1.2,建議使用者盡快公升級到最新版本2.1.2。

手動公升級:

備份之前的lumanager:mv /usr/local/lumanager /usr/local/lumanager.bak

解壓lumanager_last.tar.gz:tar -zxvf lumanager_last.tar.gz

安裝新的lumanager:mv lumanager /usr/local/

執行lu-repair命令便公升級完成

sql盲注特點 SQL盲注

盲注原理 盲注的分類 盲注常用函式 一 sql盲注概述 1.如果資料庫執行返回結果時只反饋對錯不會返回資料庫中的資訊 此時可以採用邏輯判斷是否正確的盲注來獲取資訊。2.盲注是不能通過直接顯示的途徑來獲取資料庫資料的方法。在盲注中,攻擊者根據其返回頁面的不同來判斷資訊 可能是頁面內容的不同,也可以是響...

SQL盲注 時間盲注,dnslog盲注

時間盲注原理 id get id sql select from users where id id limit 0,1 result mysql query sql row mysql fetch array result if row else 存在sql注入漏洞 然而頁面不會回顯資料,也不會回...

sql注入 盲注

一,盲注介紹 所謂盲注就是在伺服器沒有錯誤回顯的時候完成注入攻擊。盲注分為布林盲注和時間盲注 布林盲注 boolean 根據注入資訊返回true or fales 沒有任何報錯資訊 時間盲注 介面返回值ture 無論輸入任何值,返回的情況都是正常的來處。加入特定的時間函式,通過檢視web頁面返回的時...