web安全-xss弹弹弹
xss的filter绕过
- 一、xss原理和分类
- 1、xss原理
- 2、xss分类
- (1)反射性xss
- (2)存储型XSS
- 二、XSS漏洞的危害
- 三、xss漏洞的测试
- 1、黑盒测试
- 2、白盒测试
- 四、XSS的各种bypass技巧
- 五、常用的标签以及个人学习心得
- 1、常用标签
- 2、学习心得
- 七、开源网站的xss复现
- 1、appcms
- 2、wordpress
一、xss原理和分类
1、xss原理
跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击!
2、xss分类
(1)反射性xss
反射型XSS 是非持久性、参数型的跨站脚本。反射型XSS 的JS 代码在Web 应用的参数(变量)中,如搜索框的反射型XSS。在搜索框中,提交PoC[scriptalert(/xss/)/script],点击搜索,即可触发反射型XSS。值得注意的是我们提交的poc 会出现在search.php 页面的keywords 参数中。
(2)存储型XSS
存储型XSS 是持久性跨站脚本。持久性体现在XSS 代码不是在某个参数(变量)中,而是写进数据库或文件等可以永久保存数据的介质中。存储型XSS 通常发生在留言板等地方。我们在留言板位置留言,将恶意代码写进数据库中。此时,我们只完成了第一步,将恶意代码写入数据库。因为XSS 使用的JS 代码,JS 代码的运行环境是浏览器,所以需要浏览器从服务器载入恶意的XSS 代码,才能真正触发XSS。此时,需要我们模拟网站后台管理员的身份,查看留言以此来触发xss。
二、XSS漏洞的危害
在HTML中常用到字符实体,将常用到的字符实体没有进行转译,导致完整的标签出现,在可输入的文本框等某些区域内输入特定的某些标签导致代码被恶意篡改。就出现了危害,它的危害主要针对用户和web服务两个对象,如图所示。
三、xss漏洞的测试
1、黑盒测试
尽可能找到一切用户可控并且能够输出在页面代码中的地方,比如下面这些:
URL的每一个参数、URL本身、表单、搜索框、常见业务场景
重灾区:评论区、留言区、个人信息、订单信息等
针对型:站内信、网页即时通讯、私信、意见反馈
存在风险:搜索框、当前目录、图片属性等
2、白盒测试
关于XSS的代码审计主要就是从接收参数的地方和一些关键词入手。
PHP中常见的接收参数的方式有GET、POST、REQUEST等等,可以搜索所有接收参数的地方。然后对接收到的数据进行跟踪,看看有没有输出到页面中,然后看输出到页面中的数据是否进行了过滤和html编码等处理。
也可以搜索类似echo这样的输出语句,跟踪输出的变量是从哪里来的,我们是否能控制,如果从数据库中取的,是否能控制存到数据库中的数据,存到数据库之前有没有进行过滤等等。
大多数程序会对接收参数封装在公共文件的函数中统一调用,我们就需要审计这些公共函数看有没有过滤,能否绕过等等。
四、XSS的各种bypass技巧
xss绕过我们以网站XSS Challenges为选择,通过练习来提升自己的技巧和思维。
Stag#1:
通关代码:
<script>alert(document.domain)</script>
通过输入测试以及检查网页,我们发现本关无过滤,可直接弹出。
Stag2:
通关代码:
1" οnclick="alert(document.domain)
通过测试发现过滤了关键字‘script’,所以得找一个没有‘script’关键字的输入,这时候就可以用到JavaScript的js事件了,先用 1”
闭合输入,然后执行js事件中的‘onclick’事件,即可弹出窗口,轻松通关。
Stag#3:
通关代码:
<script>alert(document.domain)</script>
通过上传参数测试发现输入无法绕过,然后检查元素和抓包可知,提交方式为“post”方式,分别有p1、p2两个参数,p1有过滤且无法绕过无法实现弹窗,但是通过观察发现p2是通过选项选择输出,未发现过滤。
随意输入一个参数作为p1,通过抓包软件将请求包修改,将p2的值’Japan’修改为xss代码提交。
返回以后出现弹窗,顺利通过。
Stag#4:
通关代码:
1" > <script>alert(document.domain)</script>
与Stag#3思路相同,抓包时发现参数多了p3,且经过尝试p1、p2均无法绕过。所以我们将注意力放在了p3。经过尝试,先用1”
闭合输入,然后用>
闭合input标签,最后加上xss代码提交。
返回以后出现弹窗,顺利通过。
Stag#5:
通关代码:
1" > <script>alert(document.domain)</script>
在尝试中我发现它对输入的字符长度做了限制,但是在包中输入就没有了限制,于是跟与Stag#3思路相同,抓包将p1的值修改为xss代码提交。
返回以后出现弹窗,顺利通过。
Stag#6:
通关代码
1" οnclick="alert(document.domain)
在尝试中发现它将<>
转义了,所以我得找一个没有<>
的xss语句,于是使用js事件轻松过关。
Stag#7:
通关代码
1' onclick=alert(document.domain)
本关与Stag#6一模一样,只是将1"
闭合改为1'
闭合,轻松过关。
Stag#8:
通关代码:
javascript:alert(document.domain)
通过测试我发现它是将值放入a标签直接返回在URL中点击,则直接使用javascript伪协议即可轻松愉快通关。
Stag#9:
跳过。打开检查元素,具体操作如下:
Stag#10:
通关代码:
1' onclick=alert(document.ddomainomain)
通过简单的测试,我们发现过滤了需要弹窗的关键字domain,但是弹窗需要domain,一个简单的双写小技巧即可,通过先闭合输入然后双写domain即可轻松通过。
Stag#11就打不开了,练习就此结束。
五、常用的标签以及个人学习心得
1、常用标签
首先给出常用标签的基本形式,如下:
<script>alert(document.domain)</script>
<script>confirm('1')</script>
<script>alert(1)</script>
<script>alert(document.cookie)</script>
<script>alert(String.fromCharCode(65))</script>
<ouyangxiangan/onclick="alert('xss')">lilin
<img src=1 onerror="alert('xss')">
<img src=1 onerror=alert(document.cookie)>
<svg onload=alert(1)>
<a href="javascript:alert('xss')">aaa</a>
<video src=1 onerror=alert(1)>
<button onfocus=alert(1) autofocus>
<body onload=alert(1)>
<input type="text" onclick=alert('xss') />
<img src=1" ononerrorerror=location="javajavascripscrip:alert%25282%2529"/>
2、学习心得
通过对xss的学习,我主要想通过本人遇到可使用xss的情况下的思考方式,然后记录一些遇到的问题以及解决方法。
遇到一个搜索框,首先随意传一个参数,然后通过网页检查看以下四个很重要的东西传参方式、参数个数、是否回显、是否可以闭合输入、是否过滤符号、关键字。
遇到以后可以试试以下思路:闭合、双写、编码、寻找其他标签、反斜杠代替空格、合理使用注释、location拼接字符串‘+’、使用抓包工具。可以使用一种也可以多种混合使用,xss就是一个试错的过程,也许不经意间就成功了。
七、开源网站的xss复现
本文的开源网站主要选取了appcms、wordpress两个开源网站来复现。
如果需要这两个网站的压缩包请自取:https://blog.csdn.net/weixin_45873676/article/details/112985656
1、appcms
网页打开如下所示:
随意点开某个软件它都存在留言板如下:
用户可以随意评论,如下所示:
直接上传xss恶意代码显然不可取,也无法成功。
检查网页元素,不难发现它的评论是在依次出现的,那它是不是存在xss弹弹弹的可能性呢?
首先评论是依次出现的,然后发现回显评论的时候它会带着我们本机ip地址,那它是怎么获取我们的ip地址的呢?ip地址是可以伪造的。两者情况都有了,现在我们还需要知道PHP是怎么注释的呢?
依次出现的问题已解决,X-FORWARDED-FOR用来表示 HTTP 请求端真实 IP伪造,我们通过伪造X-FORWARDED-FOR字段同样也可以达到伪造ip的目的,最后是PHP的注释如下:
//这是单行注释
/*这就是多行注释*/
那最后我们忙活了这么久有什么用呢?<script>alert(12148)</script>
标签一次性传输不了,那我们是不是可以把它拆开传输呢?由于它是依次出现,显然可取但是中间还有其他部分,那是不是多行注释就有用了?说干就干!
正常标签如下:<script>alert(12148)</script>我们是不是可以写成这样呢?<script>/**/alert(12148)/**/</script>将它拆分成如下:<script>/*其他代码*/alert(12148)/*其他代码*/</script>
拆分成如上三段,我们就可以使用两条留言来上传这段代码了,每条留言我们都有留言内容和X-FORWARDED-FOR这两个地方可以用,那我们是不是可以这样上传呢?
第二条:内容:随便写X-FORWARDED-FOR:<script>/*
第一条内容:*/alert(12148)/*X-FORWARDED-FOR:*/</script>
思路清晰,那我们就上传吧。上传以后由于它是存储型,我们需要模拟管理员登录后台才能看到。
展示结果如下:
可见弹窗成功,漏洞复现成功。观看源代码结果也和我们预想的一模一样,如下所示:
漏洞复现成功。
2、wordpress
网站打开如下:
它的漏洞是由于mysql输入长字节会发生截断,导致出现了这个漏洞。
<abbr title="qweqw style=display:block;position:fixed;width:100%;height:100%;top:0; οnmοuseοver=alert(1)//
web安全-xss弹弹弹相关推荐
- 高德地图绘制标记点,点击弹出弹框进入第三方地图软件
需求:根据经纬度绘制标记点,点击标记点弹出弹框和底部按钮,点击顶部弹框进入二级界面,点击底部按钮弹出第三方地图软件选择页,实现跨进程跳转. 效果图: 项目是公司项目,只放出重要部分代码. final ...
- 为何使用云原生应用架构 三 :独霸天下之四大绝技 — 弹,弹,弹性扩展篇
文章目录 为何使用云原生应用架构 三 :独霸天下之四大绝技 - 弹,弹,弹性扩展篇 业务/服务能力快速增长才是软件生命周期主旋律 产品/服务持续增长背后是技术架构的全力输出 服务垂直扩展 服务水平扩展 ...
- selenium,设置火狐浏览器下载文件时不要弹出弹框问题、以标签页打开新的页面及设置失效问题
使用火狐浏览器做自动化时, 1.火狐浏览器下载文件会弹出弹框,可以通过设置火狐浏览器不要弹出弹框的方式,来完成自动化测试 def setup_method(self):# 创建一个存放自定义浏览器配置 ...
- 跨平台移动开发 模仿正点日历引导页弹一弹动画
正点日历引导页弹一弹动画效果 正点日历引导页弹一弹动画 -示例代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/ ...
- js canvas仿微信《弹一弹》小游戏
前言 半年前用js和canvas仿了热血传奇网游(地址),基本功能写完之后,剩下的都是堆数据.堆时间才能完成的任务了,没什么新鲜感,因此进度极慢.这次看到微信<弹一弹>比较火,因为涉及到物 ...
- js+canvas仿微信《弹一弹》小游戏
前言 半年前用js和canvas仿了热血传奇网游(地址),基本功能写完之后,剩下的都是堆数据.堆时间才能完成的任务了,没什么新鲜感,因此进度极慢.这次看到微信<弹一弹>比较火,因为涉及到物 ...
- 微信小程序_小球弹啊弹(画布的简单使用)
看了下小程序的画布功能,简单的使用了一下,用蹩脚的逻辑做了个 "弹啊弹,弹走鱼尾纹的小球",一起来看下吧.过程不重要主要是画布的使用哦.(本来想传gif的来着,后来发现不会传,就传 ...
- web漏洞-xss漏洞
web漏洞-xss漏洞 文章目录 web漏洞-xss漏洞 前言 xss介绍 什么是xss xss漏洞产生原因 xss漏洞危害 xss漏洞分类 反射型xss 存储型xss DOM型xss xss漏洞防护 ...
- 【web安全】第三弹:web攻防平台pentester安装及XSS部分答案解析
web for pentester是国外安全研究者开发的的一款渗透测试平台,通过该平台你可以了解到常见的Web漏洞检测技术. 下载链接及文档说明: http://pentesterlab.com/ex ...
最新文章
- 外网访问arm嵌入式linux_嵌入式Linux系统编程——文件读写访问、属性、描述符、API
- 2018中国移动机器人行业十大热词
- Android学习日记(1)
- WebApi数据验证——编写自定义数据注解(Data Annotations)
- 15 分钟搭建一个基于XLNET的文本分类模型——keras实战
- [转]bootstrapTable refresh 方法使用简单举例
- 可迭代协议与for-of循环
- 用linux命令通常做什么,如何知道你在 Linux 里最常使用的几个命令?
- 李迟2021年7月知识总结
- 【Linux】服务管理命令和压缩管理的详细解读
- excel小写转大写公式_喂!这边居然有演示的Excel快捷键!
- 807. 保持城市天际线
- Unity接入Facebook SDK--android篇
- 我从to B 角度看百度
- 半监督学习和直推式学习
- 从零开始学习SEO的基础概念
- Open3D点云处理
- 人工智能导论——遗传算法求解TSP问题实验
- 无线网络安全————2、无线路由器配置和选择测试环境
- Heavy Transportation - dijkstra
热门文章