0x01 前言
無意間發(fā)現(xiàn)一個代碼審計的以前文章,是審計一篇cms的文章粘招,然后就想著還沒有認真的審計過一次呢,就跟著這篇文章的路子走一次吧笨篷,來開啟我代碼審計的篇章。
0x02 審計之旅
首先在站長之家下載了熊海CMS v1.0的源代碼瓣履,本地搭建好環(huán)境之后率翅,將項目拖到Seay代碼審計系統(tǒng)中,來一波自動審計~
咳咳拂苹,經(jīng)然后34個漏洞發(fā)現(xiàn)安聘。。瓢棒。好吧浴韭,畢竟小站源碼,也很正常脯宿。
然后就開始一個一個查看了念颈,看看是否有誤報和漏報。
0x03 文件包含
首先连霉,index.php中的代碼如下榴芳,明顯就是一個文件包含漏洞嘛,這里參數(shù)r沒有任何過濾直接放到include()函數(shù)中了跺撼,但是這里include是在files目錄下的窟感,所以需要../進行目錄改變。我們可以在根目錄下新建一個shell.php歉井,寫入<?php phpinfo();?>柿祈,然后嘗試包含一下
果然成功了!嘻嘻
0x04 越權漏洞
看了一下其他的漏洞哩至,發(fā)現(xiàn)除了admin沒看躏嚎,其他的都是誤報,但是現(xiàn)在我們還沒有辦法得到管理員的賬號和密碼菩貌,因此admin的先不看卢佣,看一下inc目錄下的文件。inc目錄下的都是配置文件箭阶,很重要虚茶,要每一個文件都仔細查看。
在看到checklogin.php的時候仇参,發(fā)現(xiàn)了一個越權漏洞嘹叫。
這里是從cookie中判斷時候是管理員的機制,如果cookie中的user為空冈敛,就為跳轉到?r=login頁面,這個頁面是后臺登陸頁面
那么如果我們抓包后將user的值修改成不為空會怎么樣呢鸣皂?
這里用wzlist.php試一下
http://127.0.0.1/admin/?r=wzlist
然后就發(fā)現(xiàn)進入了后臺抓谴。暮蹂。。
并且只要保證每次cookie中user參數(shù)都有值就可以訪問后臺的所有內容癌压。
之后再看其他的配置文件就看不出來什么了....那么記下來就是看一下admin目錄下的文件吧仰泻。
0x05 SQL注入1
首先肯定要看登陸頁面了,如果能夠爆出用戶名和密碼就完美了滩届。
查看login.php集侯,入眼的就是一段令人激動的代碼
這里user和password是直接獲取POST傳來的參數(shù),并沒有進行任何過濾帜消,很容易想到萬能密碼的使用棠枉,但是繼續(xù)看代碼我們發(fā)現(xiàn),這里是先進行user的查詢泡挺,如果user在數(shù)據(jù)庫中存在辈讶,那么就進行password的比較,是將我們輸入的password進行md5哈希一下娄猫,然后與數(shù)據(jù)庫中的進行比對贱除,所以說萬能密碼在這里是沒有用的,但是我們卻可以用報錯注入得到用戶名和密碼媳溺。
user=123' or extractvalue(1,concat((select concat(0x7e,password,0x7e) from manage)))#&password=
或者
user=123' or updatexml(1,concat((select concat(0x7e,password,0x7e) from manage)),0)#&password=
但是這里有一點比較坑的是月幌,這里注出來的password最多只有27位,但是數(shù)據(jù)庫存的是password的MD5值悬蔽,有32位扯躺,所以說得到的md5是不對的,需要進行兩次注入才能得到完整的密碼屯阀,以extractvalue()函數(shù)為例,payload需要這樣寫
user=123' or extractvalue(1,concat((select concat(0x7e,password) from manage)))#&password=
user=123' or extractvalue(1,concat((select concat(password,0x7e) from manage)))#&password=
兩次自己拼接一下就得到了完整的password的md5值了缅帘,拿去解密一下就好了~
0x06 SQL注入2
進入后臺之后,可以看一下之前自動審計報的后臺的SQL注入漏洞难衰,拿newlink.php為例
這里的變量都是直接POST傳進來并且沒做任何過濾钦无,那么就存在了SQL注入問題。
利用之前的報錯注入驗證一下
得到結果
驗證成功盖袭。
0x07 CSRF漏洞
這里的內容管理中有一個刪除文章的功能失暂,點擊后抓包得到url
http://localhost/code_audit/xhcms/admin/?r=wzlist&delete=16
退出管理員賬號,根據(jù)之前的越權漏洞分析鳄虱,這里應該會轉跳到login的界面弟塞,試一下,果然如此拙已。
然后重新登陸管理員后點擊該url决记,真的刪除了該文章
驗證成功。