freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Pikachu靶场XSS(跨站脚本)
wakemeup 2021-08-03 22:19:49 120086

概述

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:

1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;

XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
  输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
  输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

反射型xss(get)

输入了kobe
image.png

GET类型传参,可以在url输入恶意语句:

<script>alert("test")</script>

查看结果:
image.png

反射性xss(post)

1.首先login: admin-123456
2.POST类型传参,在输入框中输入恶意语句

<script>alert("test")</script>

结果:
image.png

存储型xss

直接在留言板输入xss语句

<script>alert(111)</script>

提交查看效果
image.png

DOM型xss

写入xss语句之后没有效果,按F12检查
发现js进行拼接创建DOM对象
image.png

闭合然后使用事件类型:

'><img src=1 onerror=(alert(111))>

image.pngimage.png

DOM型xss-x

在输入框中提交的内容出现在了URL当中
image.png本关输入payload之后需要点击链接“有些费尽心机想要忘记的事情,后来真的就忘掉了”才能触发domxss()函数,从而触发XSS
image.png

沿用之前的payload

'><img src=1 onerror=(alert(222))>

image.png

xss盲打

(所谓盲打就是这个XSS能否触发我们是不知道的,如果可以触发,则管理员中招)

见框就写xss语句
image.png看了提示登录后台查看,是否可以触发弹窗
image.png未能触发
用事件来触发

<img src=1 onerror=alert('xss')>

成功触发
image.png

这里涉及到了pikachu xss 后台的初始化(类似第一次登录pikachu平台的初始化,只不过文件的路径在pkxss之下)
image.png

xss之过滤

试一试大小写绕过

CRIpt>alert("test")</sCRIpt>

image.png
再试试双写绕过

<scr<script>ipt>alert("test")</scr<script>ipt>

此路不通

换一个,用img标签试试

<img src=1 onerror=alert(111)>

image.png

xss之htmlspecialchars

先输一个试试
image.png木有弹窗

百度一下htmlspecialchars函数

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

预定义的字符是:

& 成为 &amp
" 成为 &quot
' 成为 &#039
< 成为 &lt
> 成为 &gt

 可用引号类型

ENT_COMPAT:默认,仅编码双引号
ENT_QUOTES:编码双引号和单引号
ENT_NOQUOTES:不编码任何引号

输入 '"<>& 来看看是否完全转义:
image.png

payload被转义成实体符号:
image.png

不管是a标签内还是href属性内,左右尖括号被编码了,因此闭合标签是不行了。仔细一看,发现单引号居然没有被html编码。

构造payload: ’ οnclick='alert(777),第一个单引号闭合href属性的的双引号,第二个单引号闭合href属性闭合的双引号(点击提交之后,还要点击这个记录才能触发):
image.pngimage.png

xss之href输出

输一个试试
image.png看看变化
image.png

经测试,单双引号都被过滤,这里使用js伪协议绕过,构造payload:

javascript:alert(777)

image.png

xss之js输出

输入XSS payload,查看网页源码,发现在js标签内,那就闭合标签
image.png

构造payload:

’</script><script>alert(1)</script>

image.png

xss的测试方法总结:

1.在目标站点上找到输入点,比如查询接口,留言板等
2.输入一组“特殊字符(单引号,双引号,尖括号等)+唯一识别字符(字母数字组合)”,点击提交后,查看返回的源码,是否有对应的处理

3.通过搜索定位到唯一识别字符,结合唯一识别字符的前后语法确认是否可以构造执行js的条件(即构造闭合)

4.提交构造的脚本代码(以及各种绕过姿势),看是否成功执行,如果成功执行说明存在xss漏洞

注意点:
1.一般查询接口容易出现反射性xss,留言板容易出现存储型xss
2.后台可能存在过滤措施,构造的script可能被过滤而无法生效  或者浏览器环境限制了执行
3.通过变化不同的script,尝试绕过后台过滤机制
# 渗透测试 # web安全 # 漏洞分析
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 wakemeup 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
wakemeup LV.4
少就是多,慢就是快
  • 13 文章数
  • 5 关注者
网站如何防止CSRF攻击
2021-11-05
DVWA DOM型XSS
2021-06-29
DVWA XSS (Stored) 存储型跨站脚本
2021-06-28
文章目录