<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    花點時間弄懂XSS攻擊

    VSole2022-06-10 22:31:38

    前端有哪幾種攻擊方式?

    XSS攻擊.CSRF攻擊.點擊劫持以及URL跳轉漏洞

    什么是XSS攻擊?

    XSS(Cross-Site Scripting,跨站腳本攻擊)是一種代碼注入攻擊。攻擊者在目標網站上注入惡意代碼,當用戶(被攻擊者)登錄網站時就會執行這些惡意代碼,通過這些腳本可以讀取cookie,session tokens,或者網站其他敏感的網站信息,對用戶進行釣魚欺詐。

    XSS的本質:惡意代碼未經過濾,與網站的正常代碼混在一起,瀏覽器無法分辨哪些腳本是可信的,導致惡意腳本被執行。由于直接在用戶的終端代碼執行,惡意代碼能夠直接獲取用戶的信息,利用這些信息冒充用戶向網站發起攻擊請求.

    XSS攻擊有哪些類型?

    反射型XSS

    反射型XSS漏洞常見于通過URL傳遞參數的功能,如網站搜索,跳轉等。由于需要用戶主動打開惡意的URL才能生效,攻擊者往往會結合多種手段誘導用戶點擊.

    POST的內容也可以觸發反射型XSS,只不過它的觸發條件比較苛刻(構建表單提交頁面,并引導用戶點擊),所以非常少見.

    反射型XSS的攻擊步驟

    1.攻擊者構造出特殊的URL,其中包含惡意代碼.

    2.用戶打開有惡意代碼的URL時,網站服務器端將惡意代碼從URL取出,拼接在HTML返回給瀏覽器.

    3.用戶瀏覽器接收到響應后解析執行,混在其中的惡意代碼也會被執行。

    4.惡意代碼竊取用戶數據并發送到攻擊者的網站,或者冒充用戶行為,調用目標網站接口執行攻擊者指定的操作.

    注意:Chrome和Safari能夠檢測到url上的xss攻擊,將網頁攔截掉,但是其他瀏覽器不行,如IE和Firefox。

    如何防御反射型XSS攻擊

    對url查詢參數進行轉義后再輸出到頁面。


    app.get('/welcome',function(req,res){
      //對查詢參數進行編碼,避免反射型 XSS攻擊
      res.send(`${encodeURIComponent(req.query.type)}`);
    })
    
    DOM型XSS

    DOM型XSS攻擊,實際上就是前端javascript代碼不夠嚴謹,把不可信的內容插入到了頁面,在使用.innerHTML、.outerHTML、.appendChild、document.write()等API時要特別小心,不要把不可信的數據作為HTML插入到頁面上,盡量使用.innerText、.textContent、.setAttribut()等.

    DOM型XSS的攻擊步驟

    1.攻擊者構造出特殊數據,其中包含惡意代碼。

    2.用戶瀏覽器執行了惡意代碼

    3.惡意竊取用戶數據并發送到攻擊者的網站,或冒充用戶行為,調用目標網站接口執行攻擊者指定的操作.

    如何防御DOM型XSS攻擊

    防范DOM型XSS攻擊的核心就是對輸入內容進行轉義(DOM中的內聯事件監聽順和鏈接跳轉都能把字符串作為代碼運行,需對內容進行檢查).

    1.對于url鏈接(例如圖片的src屬性)那么直接使用encodeURIComponent來轉義。

    2.對于非url,我們可以進行編碼:


    function encodeHtml(str){
      return str.replace(/"/g,'"')
                .replace(/'/g,''')
                .replace(/,'<')
                .replace(/>/g,'>')
    }
    

    DOM型XSS攻擊中,取出和執行惡意代碼由瀏覽器端完成,屬于前端javascript自身的安全漏洞.

    存儲型XSS

    惡意腳本永久存儲在目標服務器上。當瀏覽器請求數據時,腳本從服務器傳回并執行,影響范圍比反射型和DOM型XSS更大。存儲型XSS攻擊的原因仍然是沒有做好數據過濾:前端提交數據至服務器端時,沒有做好過濾;服務端在按受到數據時,在存儲之前,沒有做過濾;前端從服務器端請求到數據,沒有過濾輸出。

    存儲型XSS的攻擊步驟

    1.攻擊者將惡意代碼提交到目標網站的數據庫中。

    2.用戶打開目標網站時,網站服務端將惡意代碼從數據庫中取出,拼接在HTML中返回給瀏覽器。

    3.用戶瀏覽器接收到響應后解析執行,混在其中的惡意代碼也被執行。

    4.惡意代碼竊取用戶數據并發送到攻擊者的網站,或冒充用戶行為,凋用目標網站接口執行攻擊者指定的操作.

    這種攻擊常見于帶有用戶保存數據的網站功能,如論壇發帖,商品評論,用戶私信等。

    如何防范存儲型XSS攻擊

    1.前端數據傳遞給服務器之彰,先轉義/過濾(防范不了抓包修改數據的情況)

    2.服務器接收到數據,在存儲到數據庫之前,進行轉義和過濾

    3.前端接收到服務器傳遞過來的數據,在展示到頁面前,先進行轉義/過濾.


    function getList()
    {
      $.get('/getComments2').then(res=> {
         if(res.code === 0){
          let list ="";
          $each(res.comments,(index,comment)=>{
            content = encodeHtml(comment.content);
            console.log(comment.content,'*****',content);
            lists += '
    ${comment.username};
    ${content}';      });
          $('.list-group').html(lists);
         }   
       }
      )
    }
    

    除了謹慎的轉義,其他一些手段來防范XSS攻擊:

    1.Content Security Policy

    在服務端使用HTTP的Content-Security-Policy頭部來指定策略,或者在前端設置meta標答。

    例如下面的配置只允許加載同域下的資源:

    Content-Security-Policy:default-src 'self'`請輸入代碼`
    <meta http-equiv="Content-Security-Policy" content="form-action 'self';">
    

    前端和服務器設置CSP的效果相同.

    嚴格的CSP在XSS的防范中可以起到以下的作用

    1.禁止加載外域代碼,防止復雜的邏輯攻擊.

    2.禁止外域提交,網站被攻擊后,用戶數據不會被泄露到外域

    3.禁止內聯腳本執行(規則較嚴格,目前發現github使用)

    4.禁止未授權的腳本執行

    5.合理使用上報可以及時發現XSS,利用盡快修復問題.

    2.輸入內容長度控制

    對于不受信任的輸入,都應該限定一個合理的長度。雖無法完全防止XSS發生,但是可以增加XSS攻擊的難度。

    3.輸入內容限制

    對于部分輸入,可以限定不能包含特殊字符或者僅能輸入數字等。

    4.其他安全措施

    HTTP-only Cookie:禁止JavaScript讀取某些敏感Cookie,攻擊者完成XSS注入后也無法竊取此Cookie

    驗證碼:防止腳本冒充用戶提交危險操作

    XSS檢測

    1.使用通用XSS攻擊字串手動檢測XSS漏洞,如:


    jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//stYle/titLe
    /teXtarEa/scRipt/
    --
    !>\x3csVg/
    <sVg/oNloAd=alert()//>
    \x3e
    

    能夠檢測到存在于HTML屬性、HTML文字內容、HTML注釋、跳轉鏈接、內聯Javascript字符串、內聯CSS樣式表等多種上下文中的XSS漏洞,也能檢測eval()、setTimeout()、setInterval()、Function()、innerHTML、document.write()等DOM型XSS漏洞,并且能繞過一些XSS過濾器.

    2.安全掃描工具

    Arachni

    Mozilla HTTP Observatory

    w3af

    xss前端
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    但當存在存儲型XSS時,受害者打開此URL,攻擊代碼將會被觸發,這種情況下便稱之為存儲型XSS漏洞。在標題處和帖子內容中分別填寫payload,填寫好之后,應與下圖一致填寫好內容之后,點擊下方的發表按鈕,即可進行發帖,發帖成功會彈出一個提示成功,如下圖所示?????
    花點時間弄懂XSS攻擊
    2022-06-10 22:31:38
    由于直接在用戶的終端代碼執行,惡意代碼能夠直接獲取用戶的信息,利用這些信息冒充用戶向網站發起攻擊請求.XSS攻擊有哪些類型?反射型XSS反射型XSS漏洞常見于通過URL傳遞參數的功能,如網站搜索,跳轉等。如何防御反射型XSS攻擊對url查詢參數進行轉義后再輸出到頁面。
    下面詳細了解sql注入、xss攻擊及解決四個方面1. 什么是sql注入????所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。是最原始、最簡單的攻擊,從有了web2.0就有了sql注入攻擊。
    以下為信息安全各個方向涉及的面試題,星數越多代表問題出現的幾率越大,沒有填答案是希望大家如果不懂能自己動手找到答案,祝各位都能找到滿意的工作:) 注:做這個List的目標不是全,因為無論如何都不可能覆蓋所有的面試問題,更多的還是希望由點達面,查漏補缺。
    隨著互聯網的高速發展,信息安全問題已經成為企業最為關注的焦點之一,而前端又是引發企業安全問題的高危據點。在移動互聯網時代,前端人員除了傳統的 XSS、CSRF 等安全問題之外,又時常遭遇網絡劫持、非法調用 Hybrid API 等新型安全問題。
    這篇文章主要是通過前端JS來尋找接口進行測試,尋找漏洞成功進入后臺后,進行后臺文件上傳html。僅供學習。
    XSS 的認識與防護策略
    2021-10-15 07:30:55
    防止 XSS 攻擊預防存儲型和反射型 XSS 攻擊存儲型和反射型 XSS 都是在服務端取出惡意代碼后,插入到響應 HTML 里的;因此預防這兩種漏洞,有兩種常見做法:對文本內容做充分轉義。禁止內聯腳本執行。禁止外域提交,網站被攻擊后,用戶的數據不會泄露到外域。
    XSS漏洞是Web應用程序中最常見的漏洞之一。如果您的站點沒有預防XSS漏洞的固定方法,那么很可能就存在XSS漏洞。 這篇文章將帶你通過代碼層面去理解三個問題: 什么是XSS漏洞? XSS漏洞有哪些分類? 如何防范XSS漏洞?
    一直以來在挖掘xss時總是被各種過濾,各種實體化轉義。是真滴很難受,想連著幾天興沖沖奔著表單去,看著被過濾,轉義的payload,用盡辦法都過不去的心情。最后似乎有個聲音在跟我說,能不能找到一處大家都會不太注意的點,把payload帶進去,順便執行了。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类