存儲型XSS(攻)


存儲型XSS需要先利用代碼保存在比如數據庫或文件中,當web程序讀取利用代碼時再輸出在頁面上執行利用代碼。

但存儲型XSS不用考慮繞過瀏覽器的過濾問題,屏蔽性也要好很多。

存儲型XSS攻擊流程:

存儲型XSS的白盒審計同樣要尋找未過濾的輸入點和未過濾的輸出函數。

使用cat命令查看 XssStorage.php 代碼

cat XssStorage.php
<span style="font-size:18px;"><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>  
    <html>  
    <head>  
    <title>XssStorage</title>  
    </head>  
    <body>  
    <h2>Message Board<h2>  
    <br>
    <form action="XssStorage.php" method="post">  
    Message:<textarea id='Mid' name="desc"></textarea>  
    <br>  
    <br>  
    Subuser:<input type="text" name="user"/><br> 
    <br>
    <input type="submit" value="submit" onclick='loction="XssStorage.php"'/>  
    </form>  
    <?php  
    if(isset($_POST['user'])&&isset($_POST['desc'])){  
    $log=fopen("sql.txt","a");  
    fwrite($log,$_POST['user']."\r\n");  
    fwrite($log,$_POST['desc']."\r\n");  
    fclose($log);  
    }  
      
    if(file_exists("sql.txt"))  
    {  
    $read= fopen("sql.txt",'r');  
    while(!feof($read))  
    {  
        echo fgets($read)."</br>";  
    }  
    fclose($read);  
    }  
    ?>  
    </body>  
    </html></span>  
 #采用POST提交數據,生成、讀取文本模擬數據庫,提交數據之后頁面會將數據寫入sql.txt,
#再打開頁面時會讀取sql.txt中內容並顯示在網頁上,實現了存儲型xss攻擊模擬。

打開Firefox輸入url:localhost/codeaudit/xss/XssStorage.php :

當隨便輸入一點內容時,頁面會正常顯示頁面留言信息

當我們在Message中輸入<script>alert('xss')</script>時,頁面成功彈窗 :

並且我們重啟瀏覽器之后再加載該頁面,頁面依然會彈窗,這是因為惡意代碼已經寫入數據庫中,每當有人訪問該頁面時,惡意代碼就會被加載執行!

查看網頁html代碼:

這就是所謂的存儲型XSS漏洞,一次提交之后,每當有用戶訪問這個頁面都會受到XSS攻擊,危害巨大。

存儲型XSS的數據流向是:前端-->后端-->數據庫-->后端-->前端

筆記主要來源: 跨站腳本漏洞(XSS)基礎講解 - 簡書 (jianshu.com)


免責聲明!

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



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