Web安全技术 实验报告二 XSS/CSRF攻击
一、XSS攻击
(一)、反射性型XSS(GET)
我们先输入’”<>,1234 用于测试我们的输入会不会被过滤掉,因为有特殊字符。

然后看一下源码。

这里可以看到我们的输入被直接显示在了P标签里。
然后我们输入我们的JS代码试试
<script>alert("123")</script>

发现显示对输入长度有限制,我们F12更改一下继续输入。


我们查看源码可以发现,我们输入的payload嵌入了到了 p 标签里面。
这又是正确的JS代码,所以被浏览器正确执行了。

(二)、反射性型XSS(POST)
首先登陆进来

因为是POST,所以参数不会体现在URL里,这里我们使用Burp抓包看。
也是一样,先输入特殊字符防过滤。

没有被过滤,我们可以POST传参试试。
<script>alert("document.cookie")</script>

OK
(三)、存储型XSS
跟之前一样,直接测试语句。
<script>alert("123")</script>

(四)、DOM型XSS
首先弹窗试试。


看源码,发现onclick后会执行函数 domxss() ,其作用是读取input的值并将其拼接到新创建的link节点中。



(五)、DOM型XSS-x
一样先试一下过滤


可以发现'"<>都被过滤了。
同理还是看源码。
构造payload:
'><img src="#" onmouseover="alert('xss')">

(六)、XSS之盲打
试一下

没有弹窗,根据提示我们登入后台。

已经在后台弹窗了
(七)、XSS之过滤
由题目可以看出来,应该是有过滤的,那我们直接试试。


果然被过滤了,换一种写法试试。
<img src=0 onerror="alert(document.cookie)">

成功弹窗了。
(八)、xss之htmlspecialchars
先随便输入,<script>alert("123")</script>

首先了解了一下htmlspecialchars

输入123’ ”<>&,查看源码。

我们可以发现对单引号没有过滤能力,其他的皆可以变成实体编码
于是我们可以构造这样一个payload
' onclick = 'alert(123)'
第一个单引号是闭合前面的

(九)、xss之href输出
测试一下

没有反应,看一下源码。

审查返回的元素发现所有字符都被转化为HTML实体了,包括单引号。
但由于输入的url拼接在 <a href='输入的内容'>属性中,可以使用javascript语法:
Javascript:alert("123")

(十)、xss之js输出
测试输入 '"<>,1234
没有回显
输入1

可能是被过滤了,我们挨个试一下。
发现输入'"的时候被过滤了,我们输入<123>试试,看看源码

输入被拼接到了脚本中,尝试闭合语句然后添加自己的语句上去:
';alert(document.cookie)
并没有任何回显,我们在看看源码,原来忘记注释掉后面的了所以我们再构造payload:';alert(document.cookie)//
成功弹窗
二、CSRF攻击
(一)、CSRF(get)
首先登陆。

我们修改个人信息并抓包看看

这里可以看见,URL把我们要改的信息都放在GET传了上去,并没有CSRF的token,所以后台并没有做防CSRF的措施。
我们可以直接更改这里的URL,然后达到修改信息的目的。

刷新一下, 果然变了。

GET请求修改个人信息,所有的参数都在URL中体现,这种方式使比较好利用的,我们只要能够伪造出来这个链接,把对应的参数内容修改成为我们需要的值,让带有登录态的用户去点击就完成了我们的攻击。
(二)、CSRF(post)
这次我们登录allen的账号获取其cookie和个人信息。

点击修改个人信息

查看审查元素,发现此次提交表单为post类型提交数据

这里的攻击方式跟XSS中POST类型是一样的,攻击者可以搭建一个站点,在站点上做一个表单,诱导allen点击这个链接,当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息。
在自己的机子上编写一个html文件

此html在刚加载时就会触发id为postsubmit的对象,导致构造的form表单的数据被提交,而我们构造表单的vaule为我们想要的数据,这样就可以导致csrf产生。
测试:
我们在allen账号的状态下,点击我们html的url http://192.168.129.1:81/pikachu/vul/csrf/csrfpost/post.html

然后跳转回来,此时发现个人信息已被修改

(三)、CSRF Token
暂时没有很好的办法绕过token


浙公网安备 33010602011771号