反射型XSS


反射型XSS漏洞詳解
http://www.ttlsa.com/safe/xss-description/


一、原理

如果一個應用程序使用動態頁面向用戶顯示錯誤消息,就會造成一種常見的XSS漏洞。通常,該頁面會使用一個包含消息文本的參數,並在響應中將這個文本返回給用戶。

二、反射型XSS特點

首先,message參數的內容可用任何返回給瀏覽器的數據替代;其次,無論服務器端應用程序如何處理這些數據(如果有),都無法阻止提交JavaScript代碼,一旦錯誤頁面在瀏覽器中顯示,這些代碼就會執行。
Web應用程序中存在的XSS漏洞,有近75%的漏洞屬於這種簡單的XSS bug。由於利用這種漏洞需要設計一個包含嵌入式JavaScript代碼的請求,隨后這些代碼又被反射到任何提出請求的用戶,因而它被稱作反射型 XSS。
攻擊有效載荷分別通過一個單獨的請求與響應進行傳送和執行。為此,有時它也被稱為一階XSS。
app://local/E%3A%5Cobsidian%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E9%9F%B3%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6%5CPasted%20image%2020201218105921.png?1609079350847

三、挖掘思路

1、判斷有無XSS漏洞

在可以輸入的地方輸入該語句,觀察有無反饋。

1、<p>Sorry, an error occurred.</p>

特點:提取用戶提交的輸入並將其插入到服務器響應的HTML代碼中
app://local/E%3A%5Cobsidian%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E9%9F%B3%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6%5CPasted%20image%2020201217193323.png?1609079350848

2、<p><script>alert(''xss'');</script></p>

如果該頁面在用戶的瀏覽器中顯示,彈出消息就會出現,即此處存在xss漏洞

3、判斷那些字符被過濾了

輸入"<>?#'6666

2、漏洞利用

利用XSS漏洞攻擊應用程序其他用戶的方式有很多種。最簡單的一種攻擊,也是我們常用於說明XSS漏洞潛在影響的一種攻擊,可導致攻擊者截獲一名通過驗證的用戶的會話。劫持用戶的會話后,攻擊者就可以訪問該用戶經授權訪問的所有數據和功能。

1、反射app://local/E%3A%5Cobsidian%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E9%9F%B3%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6%5CPasted%20image%2020201217194333.png?1609079350849型XSS攻擊的實施步驟

2、截獲一名通過驗證的用戶的會話

1、用戶正常登錄應用程序,得到一個包含會話令牌的 cookie
app://local/E%3A%5Cobsidian%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E9%9F%B3%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6%5CPasted%20image%2020201217195148.png?1609079350872

2、攻擊者通過某種方法(詳情見下文)向用戶提交以下 URL
app://local/E%3A%5Cobsidian%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E9%9F%B3%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6%5CPasted%20image%2020201217195204.png?1609079350872
這個URL包含嵌入式 JavaScript 代碼。用戶點擊后,利用用戶已有的會話令牌,執行某些操作。

3、用戶從應用程序中請求攻擊者傳送給他們的URL。

4、服務器響應用戶的請求。由於應用程序中存在XSS漏洞,響應中包含攻擊者創建的 JavaScript代碼。

5、用戶瀏覽器收到攻擊者的JavaScript代碼,像執行從應用程序收到的其他代碼一樣,瀏覽器執行這段代碼。

6、攻擊者創建的惡意JavaScript代碼為
app://local/E%3A%5Cobsidian%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E9%9F%B3%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6%5CPasted%20image%2020201217195522.png?1609079350873
這段代碼可讓用戶瀏覽器向wahh-attacker.com(攻擊者擁有的一個域)提出一個請求。請求中包含用戶訪問應用程序的當前會話令牌
app://local/E%3A%5Cobsidian%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%5C%E9%9F%B3%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6%5CPasted%20image%2020201217195629.png?1609079350873

7、攻擊者監控訪問wahh-attacker.com的請求並收到用戶的請求。攻擊者使用截獲的令牌劫持用戶的會話,從而訪問該用戶的個人信息,並"代表"該用戶執行任意操作。

注解:
1.為什么需要通過XSS漏洞傳送惡意代碼,而不是直接向用戶傳送惡意代碼?
答:攻擊者的目的並不僅僅是執行任意一段腳本,而是截獲用戶的會 話令牌。瀏覽器不允許任何舊有腳本訪問一個站點的cookie,否則,會話就很容易被劫持。而且,只有發布cookie的站點能夠訪問這些cookie: 僅在返回發布站點的HTTP請求中提交cookie;只有通過該站點返回的頁面所包含或加載的JavaScript才能訪問cookie。因此,如果 wahh-attacker.com上的一段腳本查詢 document. cookie,它將無法獲得wahh-app.com發布的cookie,劫持攻擊也不會成功。
利用XSS漏洞的攻擊之所以取得成功,是因為攻擊者的惡意JavaScript是由wahh-app.com送交給它的。當用戶請求攻擊者的URL時,瀏覽器向https://wahh-app.com/ error.php提交一個請求,然后應用程序返回一個包含一段JavaScript的頁面。和從wahh-app.com收到的任何 JavaScript一樣,瀏覽器執行這段腳本,因為用戶信任wahh-app.com。這也就是為何攻擊的腳本能夠訪問wahh-app.com發布的 cookie的原因,雖然它實際來自其他地方。這也是為何該漏洞被稱作跨站點腳本的原因。


免責聲明!

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



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