<font id="zqva1"></font>
<rt id="zqva1"></rt>
  • <tt id="zqva1"></tt>
    <cite id="zqva1"></cite>

    <cite id="zqva1"><noscript id="zqva1"></noscript></cite>
      <rp id="zqva1"><meter id="zqva1"></meter></rp>

        <cite id="zqva1"></cite>
          <b id="zqva1"></b>
          <rp id="zqva1"></rp>
          <cite id="zqva1"></cite>

          <rt id="zqva1"></rt>

        1. <rp id="zqva1"></rp>

          web開發,關于XSS的介紹和案例分析

          時間:?2017-12-02閱讀:?1228標簽:?web

          XSS簡介

          XSS攻擊的全稱Cross Site Scripting(跨站腳本攻擊),為了避免和樣式表CSS混淆而簡寫為XSS。XSS攻擊使用web應用,服務器,或者所依賴的插件系統的已知漏洞進行的,惡意攻擊者往Web頁面里插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的Script代碼會被執行,從而達到惡意攻擊用戶的目的,讓用戶使用瀏覽器進行訪問時就會受到攻擊。


          那么受到攻擊有什么危害呢?對用戶來講,比較常見的就是受害者網站的cookie、session等敏感數據遭到泄露(這些數據一般保存著用戶登陸狀態等信息,攻擊者拿到這些就可以登陸用戶的賬號隨心所欲的操作);而對于網站來講,也許會影響用戶體驗,包括而不限于可能因此遭到DOS攻擊等等。危害性不容小覷。


          很多網站都爆發過XSS漏洞,其中不乏互聯網巨頭,比如Twitter,Facebook,YouTube等等,雖然在互聯網安全中已經受到了相當的重視,但是大量的XSS漏洞仍在前赴后繼。或是缺少經驗,或是用戶數據并不十分敏感,亦或是互聯網風暴席卷而來時瘋了一樣的迭代速度所限制的安全投入。


          XSS的類型

           存儲型XSS:存儲型XSS,持久化,代碼是存儲在服務器中的,如在個人信息或發表文章等地方,加入代碼,如果沒有過濾或過濾不嚴,那么這些代碼將儲存到服務器中,用戶訪問該頁面的時候觸發代碼執行。這種XSS比較危險,容易造成蠕蟲,盜竊cookie(雖然還有種DOM型XSS,但是也還是包括在存儲型XSS內)。

          反射型XSS:非持久化,需要欺騙用戶自己去點擊鏈接才能觸發XSS代碼(服務器中沒有這樣的頁面和內容),一般容易出現在搜索頁面。


          7種主要的XSS案例

          1. URL 反射 

          當源代碼中存在URL反射時,我們可以添加自己的XSS向量和載荷。對于PHP的頁面,可以通過使用斜杠”/”在頁面的名稱后添加任何內容。 

          http://brutelogic.com.br/xss.php/”><svg onload=alert(1)>

          需要用開頭的(“>)標簽來破壞當前標簽的閉合狀態,為將插入的新標簽(觸發XSS的代碼標簽)創造可能的閉合條件。  

          <!—URL Reflection -->
          <form action=”/xss.php/”><svg onload=alert(1)>” method=”POST”>
          <br>

          雖然不同語言的差異造成的不同的觸發原因(反射可能出現在路徑或URL參數中)。相對于PHP而言,罪魁禍首通常是在提交表單的動作中使用到了全局變量。 

          $_SERVER[“PHP_SELF”]


          2.簡單的HTMLi(HTML注入)

          最直接的一種方式,輸入就是反射,輸入部分顯示在已存在的標簽之前、后或標簽之間。不需要繞過或破壞任何閉合,任何簡單的像<tag handler=jsCode>形式的XSS向量都可以實現。

          http://brutelogic.com.br/xss.php?a=<svg onload=alert(1)>
          <h1>XSS Test</h1>
          <!-- Simple HTMLi -->
          Hello, <svg onload=alert(1)>!
          <br>


          3.Inline HTMLi

          和上一個相比這個實例也相對簡單,但是需要 "> 破壞前面的閉合標簽,重新添加并創建新的標簽閉合。  

          <!-- Inline HTMLi (Double Quotes) -->
          <input type="text" name="b1" value=""><svg onload=alert(1)>">
          <br>
          <br>


          4.Inline HTMLi: No Tag Breaking

           當在HTML屬性中輸入并且對大于號(>)進行過濾時,像之前的實例一樣破壞前面的閉合標簽達到反射是不可能了。

          <!-- Inline HTMLi - No Tag Breaking (Double Quotes) -->
          <input type="text" name="b3" value="">><svg onload=alert(1)>">
          <br>
          <br>

          所以這里使用一個適合我們在此處注入的,并可在標簽內觸發的事件處理程序,比如:  

          http://brutelogic.com.br/xss.php?b3=” onmouseover=alert(1)//

          這個方式閉合了標簽中value值的引號,并且給onmouseover插入了事件。alert(1)之后的雙引號通過雙斜杠注釋掉,當受害者的鼠標移動到輸入框時觸發js彈窗。 


          5.HTMLi in Js(Javascript) Block

          輸入有時候會傳入到javascript代碼塊中,這些輸入通常是代碼中的一些變量的值。但因為HTML標簽在瀏覽器的解析中有優先級,所以我們可以通過js標簽閉合原有的js代碼塊并插入一個新的標簽插入傳入你需要的js代碼。 

          http://brutelogic.com.br/xss.php?c1=</script><svg onload=alert(1)>
          // HTMLi in Js Block (Single Quotes)
          var myVar1 = '</script><svg onload=alert(1)>';


          6.Simple Js Injection

          如果腳本的標簽被某種方式過濾掉了,之前討論的姿勢也隨之失效。 

          // Simple Js Injection (Single Quotes)
          var myVar3 = '><svg onload=alert(1)>';

          這里的繞過方法可以根據語法注入javascript代碼。一個已知的方法是用我們想要執行的代碼”連接”到可觸發漏洞的變量。因為我們不能讓任何單引號引起報錯,所以先構造閉合,然后使用”-”連接來獲得一個有效的javascript代碼。 

          http://brutelogic.com.br/xss.php?c3=’-alert(1)-‘
          // Simple Js Injection (Single Quotes)
          var myVar3 = ''-alert(1)-'';


           7.Escaped Js Injection

          在之前的實例中,如果引號(用于置空閉合變量的值)被反斜杠(\)轉義,注入將不會生效(因為無效的語法)。 

          // Escaped Js Injection (Single Quotes)
          var myVar5 = '\'-alert(1)-\'';

          為此,我們可以通過騷姿勢——轉義。我們可以插入一個前反斜杠,這樣后面的引號將會完成閉合,從而觸發傳入的js代碼。在插入我們想要執行的js代碼后,需要對其余部分進行注釋,因為剩余的部分已經無需執行或重復執行。  

          http://brutelogic.com.br/xss.php?c5=\'-alert(1)//
          // Escaped Js Injection (Single Quotes)
          var myVar5 = '\\'-alert(1)-//';


          擴展一點點 

          直接通過URL通過GET請求觸發XSS返回404,通過參數直接訪問可以顯示正常界面,那么應該是被過濾了。先自己用xsstrike跑了一下,提示是存在XSS的,但是打開瀏覽器的反應都是返回了空白頁面,說明是多次的誤報(xsstrike不是基于webkit,因此容易產生誤報)。

          而后查看源碼,在頁面可以看到前端通過正則過濾了特殊字符,重定向到404頁面。過濾的很全乎,那看起來好像是沒戲了,遂去請教大神,所以姿勢就漲起來了。這里的原因是因為后端PHP在處理請求的時候使用的是$_REQUEST方法,因此可接受POST和GET請求。So,成功彈窗。 

           

          案例來源:https://brutelogic.com.br/blog/the-7-main-xss-cases-everyone-should-know/

           

          吐血推薦

          1.站長廣告聯盟: 整理了目前主流的廣告聯盟平臺,如果你有流量,可以作為參考選擇適合你的平臺點擊進入...

          2.休閑娛樂: 直播/交友    優惠券領取   網頁游戲   H5游戲

          鏈接: http://www.modern-decoration.com.cn/article/detial/210

          Web服務常用的幾種開發方法

          Web服務,即通過程序實現網頁服務,服務啟動后,一般用戶可通過訪問URL獲取到網站提供的網頁服務,如網頁瀏覽、留言、商品購買等。開發Web服務的技術有很多,有Java、Python、ASP.NET、腳本語言等

          5 張圖描繪Web3 堆棧全景

          Web3 堆棧最令人難以置信的一點是,它們不需要任何集中協調就可以組合在一起。開發本身是去中心化的。沒有主架構師。這與地球上幾乎所有其他的開發堆棧項目形成了鮮明的對比。在 Linux 基金會,少數人設定整個 Linux 的方向

          web開發新手應該知曉的20件事

          在我當初剛從事 web 開發的時候,有很多重要的事我并沒有事先了解。現在看來,我的很多期望都和現實有很大的差距。在這篇文章里,我會告訴你 20 件事情,這些都是在你準備開始或者剛開始 web 開發不久的時候就應該知曉的

          Web前端開發的應用和前景:web 1.0到web 3.0

          web3.0時代,前端做著前端的工作,盡自己可能去在多端的世界去為用戶體驗努力,后端去做著后端的工作,去更好的處理數據,利用人工智能?利用爬蟲?將數據充分的使用,為用戶分析數據,給予用戶最想要的數據。

          函數式 UI:Web開發終于擺脫了框架的束縛

          用戶界面都是響應式系統,因此可以使用一個純響應函數,將用戶界面接受的事件映射到接口系統上的動作來定義用戶界面。利用函數式編程的實現技術可以讓實現更接近規范,更易推理和測試。函數式 UI 可以讓開發人員擺脫不兼容的 UI 和測試框架帶來的麻煩

          W3C是什么?IETF是什么?

          無規矩不成方圓,軟件開發當然不能例外。Web開發涉及的廠商和技術非常多,所以必須要有參考的標準,而且需要一系列的標準。Web程序都是通過瀏覽器來解析執行的,通過頁面的展示內容與用戶互動,所以Web標準不僅要求各個瀏覽器都要遵循

          如何遷移Flutter項目到Flutter Web?

          這篇簡單介紹下怎么將一個現有的 Flutter 項目轉成 Flutter Web 項目。開始之前先澆一盆冷水,我們理想中的一套代碼、多端運行的愿望是要破滅了,至少目前版本的 Flutter Web SDK 是沒法做到的

          Gavin Wood:創造一個web3.0的加密世界

          我最早是以太坊的聯合創始人,也是CTO,黃皮書的作者。當開啟以太坊時,我們是局外人,關注的焦點更多的是BTC。當時,人們將投身以太坊視為浪費時間和精力。但現在以太坊已經成長起來,進入了完整循環。但與此同時

          web頁面的回流和重繪

          什么是回流? 回流也叫重排(reflow),當頁面中的元素發生影響布局的變化,比如:改變寬高,修改顯示影藏。頁面需要重新布局,就會觸發重排。 簡單的說就是,頁面布局改變,就會觸發重排。

          Web實現前后端分離,前后端解耦

          前后端分離“已經成為互聯網項目開發的業界標桿,通過Tomcat+Ngnix(也可以中間有個Node.js),有效地進行解耦。并且前后端分離會為以后的大型分布式架構、彈性計算架構、微服務架構、多端化服務

          fly63.com版權所有,內容以共享、參考、研究為目的,不存在任何商業目的。其版權屬原作者所有,如有侵權,請與小編聯系!情況屬實本人將予以刪除!

          文章投稿關于web前端網站點搜索站長推薦網站地圖站長QQ:522607023

          小程序專欄: 土味情話心理測試腦筋急轉彎幽默笑話段子句子語錄成語大全

          国产精品高清视频免费 - 视频 - 在线观看 - 影视资讯 - 唯爱网