齊博cms userinfo注入

2021-07-22 21:35:50 字數 2322 閱讀 7632

就拿齊博整站系統為例。

看到/member/userinfo.php,112到114行:

//過濾不健康的字

$truename=replace_bad_word($truename);

$introduce=replace_bad_word($introduce);

$address=replace_bad_word($address);

這幾句過濾**,意思是想過濾一些「不和諧」的詞語。那我們看看這個replace_bad_word函式。

function replace_bad_word($str)

return $str;

}

實際上是乙個str_replace,將舊的「不和諧」詞語替換成新的「和諧」詞語。那麼替換列表從哪來?看看data/limitword.php:

<?php 

$limitword['造反']='造**';

$limitword['**功']='法**功';

就這兩個,$limitword並沒有初值。而且include之前有global $limitword。齊博cms是將get和post變數註冊成全域性變數了,所以global取到的可以是$_post[limitword]或$_get[limitword]。也就是說$limitword是我們可以控制的。

也就是說,我們可以控制str_replace函式的三個引數。不知道還有沒有人記得ecshop曾經的乙個注入漏洞,原理相同,我再說一遍。

某變數$str全域性做過轉義,導致%00轉義成了\0.我們能夠控制str_replace的前兩個引數,則str_replace('0', '', $str),再將0轉換成空,則留下了\,這個\可以轉義其後的\』,使之變成\\』,導致單引號逃逸出轉義符的限制,造成注入。

這裡的原理是一樣的,只不過齊博cms之前對一些變數做了過濾:

$truename=filtrate($truename);

$idcard=filtrate($idcard);

$telephone=filtrate($telephone);

$address=filtrate($address);

$introduce=filtrate($introduce);

$homepage=filtrate($homepage);

function filtrate($msg)

將』等敏感字元過濾了。就算有乙個\可以轉義乙個',但是這裡連'都引入不了。

沒關係,這個檔案是更新使用者資訊用的,執行的語句類似update table set a='111',b='222' where uid=1,我們引入乙個\在111的最後,轉義掉111後面的引號,這樣222就逃逸出了限制,我們的sql注入語句就可以放在222的位置執行了。這個和之前discuz7.2的faq.php那個注入類似: wooyun: discuz7存在一處sql注射漏洞(無需登入即可觸發)

所以,完美構造了乙個sql注入。

先註冊乙個使用者:

記下自己的uid,以便一會更新資料:

可以先測試一下是否存在注入:

報錯了,說明注入是存在的。

簡單構造一下,向http://localhost/qibov7/member/userinfo.php?job=edit&step=2傳送資料報:

將address注入成為user()。where後面加上uid=2,防止把其他人的address也注入了。

檢視個人注入的位址,即可見注入獲得的結果:

這個洞是通殺齊博所有系統的,經測試齊博整站系統、齊博地方門戶都可以中招,沒試其他一些系統了,我估計很多都得中招。

齊博CMS的sql注入漏洞學習

今天看到了asrc上面對某個cms的漏洞分析的文章 感覺阿里大牛在寫漏洞分析的時候還是有點謹慎,利用方式什麼就更不能說了。漏洞的原因就是 inc common.inc.php 中的這一段 if ini get register globals 這段 的含義就是把 php接收到的 files 請求的陣...

齊博如何搬家

第一步,進後台備份資料庫,備份的時候,選擇低版本資料庫的方式備份 第二步,備份完資料庫後,把所有檔案包括備份出來的資料庫轉移到新空間 第三步,修改資料庫配置檔案 data mysql config.php為新空間的資料庫帳號密碼 第四步,修改 admin global.php查詢 forceente...

齊博cms漏洞分析

還是很早之前爆出來的漏洞,現在拿出來學習一下,參考阿里巴巴 漏洞發生在 inc common.inc.php頁面中。首先看這個函式 首先使用ini get來獲取php.ini中變數 register globals 的值,而register globals代表的意思是提交的請求是否註冊為全域性變數,...