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

首先弹窗试试。

 

点击what do you see?

 

 

 

看源码,发现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

 

 

 

 

 

 

 

 

posted @ 2019-12-13 16:23  万里月光  阅读(1273)  评论(0)    收藏  举报