【網(wǎng)絡(luò)安全】xhCMS代碼審計(jì)思路

前言

最近想提升一下自己的代審能力,雖然之前復(fù)現(xiàn)分析了挺多漏洞的念秧,TP,Laravel,Typcho凉驻,yii,但一直感覺對(duì)代碼審計(jì)能力提升用處不太大范咨,很多時(shí)候鏈子和利用點(diǎn)都非常簡(jiǎn)單逾条,可是如何發(fā)現(xiàn)的這確實(shí)一個(gè)難題,所以就拿熊海CMS為例宴合,如何自己挖它里面的漏洞焕梅,看看自己能否發(fā)現(xiàn)和利用,最后在和網(wǎng)上存在的漏洞進(jìn)行對(duì)比卦洽,再看哪里沒有發(fā)現(xiàn)贞言,為什么沒有發(fā)現(xiàn),希望這也能給才入門代碼審計(jì)的師傅們一點(diǎn)思路吧

資料

審計(jì)流程

先看一下入口文件index.php阀蒂,這個(gè)文件一般會(huì)定義很多變量该窗,包含很多路徑弟蚀,文件進(jìn)來,我們只需要注意它和用戶的交互的點(diǎn)酗失,入口文件一般會(huì)先判斷你是否存在安裝鎖或者配置文件义钉,如果不存在就跳轉(zhuǎn)到安裝目錄,開始安裝整個(gè)網(wǎng)站规肴。然后打開文件監(jiān)控捶闸,首先判斷是否存在重裝漏洞,然后再分析目錄結(jié)構(gòu)拖刃,大概知道每個(gè)文件夾中放的文件功能是什么就行了鉴嗤,比如熊海CMS:


在這里插入圖片描述

然后安裝成功后我習(xí)慣先瀏覽下網(wǎng)站的主要功能,大致了解這些之后就可以靜下心來看代碼了

重裝漏洞

重裝漏洞可以以下幾種類型:

  1. 自動(dòng)刪除這個(gè)安裝文件

    通過生成一個(gè) lock 文件來判斷程序是否安裝過

  2. 根本無驗(yàn)證

    安裝完成后不會(huì)自動(dòng)刪除文件序调,又不會(huì)生成 lock 判斷是否安裝過

  3. 安裝file

    直接用GET提交step繞過醉锅,直接進(jìn)入下一步

  4. 變量覆蓋導(dǎo)致重裝

    可以GET,POST,COOKIE任意提交一個(gè)變量名insLockfile,給其賦空值发绢,覆蓋掉insLockfile硬耍,從而讓file_exists為false就不會(huì)退出

  5. 判斷l(xiāng)ock后,無exit

    判斷是否存在lock文件边酒,如果存在lock文件经柴,就會(huì)header到index.php,但是header后并沒有exit墩朦,所以
    并不會(huì)退出坯认,類似的還有javascript彈個(gè)框

  6. 解析漏洞

    在安裝完成后會(huì)將install.php
    重命名為index.php.bak,但是由于Apache的解析漏洞:如果無法識(shí)別到最后一個(gè)后綴的話氓涣,就會(huì)向上解析牛哺,那么就又變成了php了,然后結(jié)合安裝時(shí)的變量覆蓋又成重裝了劳吠。

  7. 滿足一些條件不會(huì)退出的

危害

  1. 因?yàn)樵诎惭b時(shí)我們可控一些變量引润,因?yàn)闆]有exit,導(dǎo)致配置信息沒有過濾的傳入安裝后痒玩,從而寫入文件getshell
  2. 重裝之后修改管理員信息淳附,進(jìn)入后臺(tái)getshell

install/index.php:


在這里插入圖片描述

并沒有發(fā)現(xiàn)存在重裝漏洞

SQL注入漏洞1

首先就要去查看數(shù)據(jù)庫使用的編碼方式,如果是GBK則可能造成寬字節(jié)注入蠢古,從而直接繞過addslashes這類函數(shù)奴曙,然后去有對(duì)數(shù)據(jù)庫操作的地方查看傳入數(shù)據(jù)是否可控,我們可以注意下草讶,在注入前是否對(duì)參數(shù)進(jìn)行了解碼洽糟,如果進(jìn)行了解碼,可以二次編碼注入,在熊海CMS安裝的時(shí)候就發(fā)現(xiàn)它有寫入管理員信息的操作脊框,而且是在安裝前的操作颁督,并沒有對(duì)參數(shù)進(jìn)行任何過濾践啄,

insatll\index.php:


在這里插入圖片描述

在這里插入圖片描述

而且它是有報(bào)錯(cuò)輸出的浇雹,所以可以報(bào)錯(cuò)注入:


在這里插入圖片描述

然后就是安裝之后了,

文件包含漏洞

首先就從網(wǎng)站入口跟進(jìn)屿讽,發(fā)現(xiàn)是一個(gè)單入口模式:


在這里插入圖片描述

這里就存在文件包含漏洞昭灵,只是說暫時(shí)還沒有發(fā)現(xiàn)危險(xiǎn)文件能夠利用,看道這里那就聯(lián)想到能不能把后面的php后綴截?cái)喾ヌ福缓笕ド蟼饕粋€(gè)圖片馬來包含呢烂完,或者是否存在一個(gè)文件寫入的點(diǎn)來利用呢,可是我試了一下第一個(gè)思路诵棵,好像并沒有成功抠蚣,但是存在疑惑,因?yàn)樵赑HP<5.3.4的時(shí)候履澳,我們是可以利用%00來截?cái)嗪缶Y的嘶窄,但是當(dāng)我本地將版本調(diào)低到5.3.29,按理說是可以截?cái)嗪缶Y從而包含任意文件距贷,但是卻出了問題柄冲,我先在根目錄寫了一個(gè)phpinfo,

在這里插入圖片描述

這樣是可以的忠蝗,但是:


在這里插入圖片描述

這樣缺不行现横,然后我又使用長(zhǎng)度截?cái)嘁参闯晒?/p>

然后就跟進(jìn)files文件夾下的頁面文件,首先就是files/index.php阁最,里面很多都是echo數(shù)據(jù)庫里面的信息戒祠,但是我們并不可控,因?yàn)槔锩嬉M(jìn)了template里面的文件速种,所以也先看一下得哆,發(fā)現(xiàn)里面有沒有能利用的,查看fiels/list.php哟旗,看起來存在SQL注入漏洞贩据,但是存在addslashes函數(shù),無法注入闸餐,然后繼續(xù)審計(jì)饱亮,直到看到fiels/download.php的時(shí)候,發(fā)現(xiàn)了一個(gè)XSS漏洞舍沙,然后fiels/list.php同理

反射型XSS漏洞1

XSS也分為反射型近上、存儲(chǔ)型以及DOM型,當(dāng)我們想挖掘反射型XSS漏洞時(shí)拂铡,需要重點(diǎn)關(guān)注程序的輸出壹无,比如echo/print等葱绒,當(dāng)程序直接將未經(jīng)過濾的用戶輸入輸出除了,就會(huì)造成反射型XSS斗锭。

而存儲(chǔ)型XSS是由于網(wǎng)站將用戶輸入存儲(chǔ)進(jìn)數(shù)據(jù)庫中地淀,當(dāng)用戶再次瀏覽某頁面時(shí),從數(shù)據(jù)庫中獲取之前的輸入并輸出岖是,如果在輸入->數(shù)據(jù)庫這塊過程中沒有進(jìn)行實(shí)體化編碼以及輸出->頁面的過程中沒進(jìn)行實(shí)體化編碼帮毁,則很容易產(chǎn)生存儲(chǔ)型XSS。所以對(duì)于這類XSS豺撑,重點(diǎn)關(guān)注insert烈疚,查找insert表內(nèi)數(shù)據(jù)的輸出位。

fiels/download.php:


在這里插入圖片描述

直接echo可控變量聪轿,所以存在XSS漏洞爷肝,


在這里插入圖片描述

然后繼續(xù)往后看,點(diǎn)擊下載會(huì)跳轉(zhuǎn)到files/content.php陆错,跟進(jìn)灯抛,發(fā)現(xiàn)存在SQL注入漏洞,

SQL注入漏洞2

files/content.php:

這里的原因就是沒有使用單引號(hào)閉合用戶可控變量危号,導(dǎo)致繞過addslashes函數(shù)牧愁,


在這里插入圖片描述

在這里插入圖片描述

繼續(xù)跟進(jìn),發(fā)現(xiàn)調(diào)用files/submit.php提交評(píng)論外莲,


在這里插入圖片描述

跟進(jìn)files/submit.php猪半,


在這里插入圖片描述

都可控,且未經(jīng)過addslashes函數(shù)偷线,
在這里插入圖片描述

很明顯的一個(gè)SQL注入漏洞磨确,但是需要注意的是后面還有一個(gè)插入語句:

在這里插入圖片描述

開始我也卡了一下,因?yàn)槟阒婚]合前面声邦,后面是會(huì)報(bào)錯(cuò)的:


在這里插入圖片描述

閉合后面:


在這里插入圖片描述

還是不行乏奥,但是突然想到只需要用報(bào)錯(cuò)注入,讓前面報(bào)錯(cuò)了亥曹,后面自然就不用管了:
name=1&mail=1') or updatexml(1,concat(0x7e,(select(database())),0x7e),1)#&content=哈哈
在這里插入圖片描述

往后走還有SQL注入邓了,


在這里插入圖片描述

后面相同利用的地方就不贅敘了,因?yàn)榘l(fā)現(xiàn)這里有可控?cái)?shù)據(jù)插入數(shù)據(jù)庫的操作媳瞪,那是否存在存儲(chǔ)型XSS呢骗炉?

存儲(chǔ)型XSS1

分析已經(jīng)在上面的流程分析了

在files/content.php,我們能提交昵稱蛇受、郵箱句葵、網(wǎng)址、評(píng)論內(nèi)容,但是在files/submit.php中乍丈,


在這里插入圖片描述

他過濾了$content的HTML代碼剂碴,所以不能利用,而且在顯示評(píng)論和留言的地方有昵稱轻专,所以我們只能利用昵稱處進(jìn)行存儲(chǔ)XSS

還有一個(gè)files/contact.php忆矛,存在和files/content.php一樣的留言框,大概看了下代碼铭若,也是存在存儲(chǔ)型XSS


在這里插入圖片描述

最后還有一個(gè)files/software.php文件洪碳,在下載的時(shí)候會(huì)跳轉(zhuǎn)到該界面递览,

又存在明顯的SQL注入漏洞叼屠,


在這里插入圖片描述

這里就不再重復(fù)講述了

審計(jì)到這里差不多前端的代碼就審?fù)炅耍┒淳蚐QL注入漏洞和XSS漏洞绞铃,然后就是去審計(jì)后臺(tái)的代碼了

首先對(duì)于后臺(tái)代碼镜雨,我會(huì)先查看是否存在越權(quán)漏洞,是否存在CSRF漏洞儿捧,然后登錄后臺(tái)荚坞,尋找PHP文件寫入,尋找命令執(zhí)行菲盾,

首先查看login.php颓影,


在這里插入圖片描述

又是重復(fù)的SQL注入,后面就不重復(fù)這些漏洞了懒鉴,在審計(jì)代碼的時(shí)候诡挂,并未發(fā)現(xiàn)admin/login.php存在什么越權(quán)漏洞,但是后面查看存在漏洞的時(shí)候临谱,他卻存在這個(gè)漏洞璃俗,因?yàn)樵诔晒Φ卿浬蟖dmin賬號(hào)后,他是存在一個(gè)user的cookie的悉默,但是退出之后又沒有了城豁,所以他就是通過cookie中的user值來判斷登錄是否成功的,所以只需要偽造一個(gè)cookie即可:

成功越權(quán)登錄


在這里插入圖片描述

然后就是./inc/checklogin.php中存在越權(quán)漏洞了抄课,:

<?php
$user=$_COOKIE['user'];
if ($user==""){
header("Location: ?r=login");
exit;   
}
?>

所以只要調(diào)用了該文件都存在越權(quán)漏洞

后面的話其實(shí)就是前面提到過的漏洞了唱星,這里就不再贅敘了,

總結(jié)

其實(shí)這個(gè)CMS很簡(jiǎn)單跟磨,我主要想講的并不是這個(gè)CMS如何審計(jì)间聊,而是一個(gè)思路,希望能幫到剛?cè)腴T代審的師傅們吱晒,其實(shí)很多漏洞甸饱,利用點(diǎn)都很簡(jiǎn)單,難的就是去發(fā)現(xiàn)它的思路

參考
https://threezh1.com/2019/05/18/PHP%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1%E4%B9%8B%E9%87%8D%E8%A3%85%E6%BC%8F%E6%B4%9E/

關(guān)注我,持續(xù)更新······

私我獲取【網(wǎng)絡(luò)安全學(xué)習(xí)資料·攻略

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末叹话,一起剝皮案震驚了整個(gè)濱河市偷遗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驼壶,老刑警劉巖氏豌,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異热凹,居然都是意外死亡泵喘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門般妙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纪铺,“玉大人,你說我怎么就攤上這事碟渺∠拭” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵苫拍,是天一觀的道長(zhǎng)芜繁。 經(jīng)常有香客問我,道長(zhǎng)绒极,這世上最難降的妖魔是什么骏令? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮垄提,結(jié)果婚禮上榔袋,老公的妹妹穿的比我還像新娘。我一直安慰自己塔淤,他們只是感情好摘昌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著高蜂,像睡著了一般聪黎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上备恤,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天稿饰,我揣著相機(jī)與錄音,去河邊找鬼露泊。 笑死喉镰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惭笑。 我是一名探鬼主播侣姆,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼生真,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了捺宗?” 一聲冷哼從身側(cè)響起柱蟀,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蚜厉,沒想到半個(gè)月后长已,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昼牛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年术瓮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贰健。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胞四,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出霎烙,到底是詐尸還是另有隱情撬讽,我是刑警寧澤蕊连,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布悬垃,位于F島的核電站,受9級(jí)特大地震影響甘苍,放射性物質(zhì)發(fā)生泄漏尝蠕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一载庭、第九天 我趴在偏房一處隱蔽的房頂上張望看彼。 院中可真熱鬧,春花似錦囚聚、人聲如沸靖榕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茁计。三九已至,卻和暖如春谓松,著一層夾襖步出監(jiān)牢的瞬間星压,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工鬼譬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娜膘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓优质,卻偏偏與公主長(zhǎng)得像竣贪,于是被迫代替她去往敵國和親军洼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險(xiǎn)厭惡者演怎,不喜歡去冒險(xiǎn)歉眷,但是人生放棄了冒險(xiǎn),也就放棄了無數(shù)的可能颤枪。 ...
    yichen大刀閱讀 6,052評(píng)論 0 4
  • 公元:2019年11月28日19時(shí)42分農(nóng)歷:二零一九年 十一月 初三日 戌時(shí)干支:己亥乙亥己巳甲戌當(dāng)月節(jié)氣:立冬...
    石放閱讀 6,880評(píng)論 0 2
  • 今天上午陪老媽看病汗捡,下午健身房跑步,晚上想想今天還沒有斷舍離畏纲,馬上做扇住,衣架和旁邊的的布衣架,一看亂亂盗胀,又想想自己是...
    影子3623253閱讀 2,913評(píng)論 1 8