pikachu靶场XSS

作者:xiaowu 日期: 分类:xiaowu 浏览:420

XSS(跨站脚本)概述


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

●XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
●XSS是一种发生在Web前端的漏洞,所以其危害的对象也主要是前端用户。
●XSS漏洞可以用来进行钓鱼攻击、钓鱼攻击、前端js挖矿、用户cookie获取。甚至可以结合浏览器自身的漏洞对用户主机进行远程控制等

XSS(窃取cookie)攻击流程

在这里插入图片描述

xss漏洞形成的原因:

形成XSS漏洞的主要原因是程序对输入和输出的控制不够严格,导致“精心构造”的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害。

跨站脚本漏洞测试流程:
①在目标站点上找到输入点,比如查询接口,留言板等;
②输入一组”特殊字符+唯一识别字符”, 点击提交后,查看返回的源码,是否有做对应的处理;
③通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件 (构造闭合) ;
④提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞;

提示:
1.一般查询接口容易出现反射型XSS ,留言板容易出现存储型XSS ;
2.由于后台可能存在过滤措施,构造的script可能会被过滤掉,而无法生效或者环境限制了执行(浏览器) ;
3.通过变化不同的script ,尝试绕过后台过滤机制;

反射型XSS(get&post)

image.png

被长度限制,提交不了,尝试抓包

image.png

在get部分加上xss语句

<script>alert(1)</script>

发送,成功

image.png

post类型先登录,得到一个输入框,随便输入

image.png

继续抓包,改post

image.png

发送,成功

image.png

存储型XSS


在留言框输入xss语句后提交

image.png


每次刷新都会出现弹窗

image.png

DOM型XSS

我们先了解什么是DOM。

From w3school

通过JavaScript,可以重构整个HTML文档。可以添加、移除、改变或重排页面上的项目。
要改变页面的某个东西,JavaScript 就需要获得对HTML文档中所有元素进行访问的入口。这个入口,连同对HTML元索进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的( DOM) 。
所以,你可以把DOM理解为一个一个访问HTML的标准编程接口。

打开题目,先随便输入“1”,再看源码

image.png

输入的字符串被拼接到a标签中,并点击那几个字会显示,既然是a标签,就直接用javascriptwei协议

javascript:alert(1)

点击后直接跳转弹窗

image.png

查看源码image.png

也有其他方法

'onclick="alert('xss')">
'><img src="#" onmouseover="alert('xss')">

DOM型XSS-X

和上题一样,直接javascript伪协议即可

image.png

另外两种方法也和上题一样

XSS盲打

image.png

输入框提交注入代码,然后进入后台即可触发

image.png

XSS过滤

先尝试<script>alert(1)</scrript>,结果被过滤

直接大小写绕过

<SCRIPT> aLeRT(111)</sCRIpt>

image.png

或者不用script标签

'><img src="#" onmouseover="alert('xss')">

也可以

XSS之htmlspecialchars()函数

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

预定义的字符是:

&(和号)成为&
“(双引号)成为”
‘(单引号)成为’
<(小于)成为<
‘>’(大于)成为>

可用的引号类型:

ENT_ COMPAT -默认。仅编码双引号。
ENT QUOTES -编码双引号和单引号。
ENT NOQUOTES -不编码任何引号。

还是直接用伪协议

javascript:alert(1)

202405081715156598719658.png

XSS之herf输出

先查看源码

image.png

看到a标签,直接伪协议

image.png

XSS之js输出

不管输入什么都只会输出同一段文字

image.png

查看源码,发现还有段js语句

image.png

直接尝试闭合js加入注入语句

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

image.png

关键词:

网友评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。