目录
简介
所用工具
XSS的类型
反射型XSS/不持久型XSS
存储型XSS/持久型XSS
基于DOM的XSS
常用Payload与工具
XSS扫描工具
Payloads
script标签类
结合js的html标签
伪协议
绕过
危害
防御
简介
跨站脚本攻击(全称Cross Site Scripting,为和CSS(层叠样式表)区分,简称为XSS)是指恶意攻击者在Web页面中插入恶意javascript代码(也可能包含html代码),当用户浏览网页之时,嵌入其中Web里面的javascript代码会被执行,从而达到恶意攻击用户的目的。XSS是攻击客户端,最终受害者是用户,当然,网站管理员也是用户之一。
XSS漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
php中常见的输出函数有:
echo
printf
print
print_r
sprintf
die
var-dump
var_export
所用工具
Google出品:开源Web App漏洞测试环境:Firing Range
XSS的类型
反射型XSS/不持久型XSS
选择的是echo函数,不加过滤,直接输出
input.php
<?php
$input = $_GET['input'];
echo 'output:<br>'.$input;
?>
显示
可以看到我们的输入直接被输出。 那么,如果我们的参数是JavaScript代码呢?
<script>alert('xss attack by lady_killer9')</script>
js代码执行
也就是说js能够做到的事情,都可在这里插入去实现,比如跳转到钓鱼网站。
Firing Range的Html Body存在的反射型XSS
反射性XSS攻击之html Body
脚本插入
下面是在dvwa中的展示
插入js代码
提交
查看网页源代码
存储型XSS/持久型XSS
和反射型XSS的即时响应相比,存储型XSS则需要先把代码保存到数据库或文件中,下次读取时仍然会显示出来,利用的问题依然是没有对用户的输入进行过滤。使用靶机pikachu的存储型xss。
<script>alert(document.cookie)</script>
XSS注入
注入成功
注入后留言列表
基于DOM的XSS
基于文档对象模型(Document Object Model,DOM)的一种漏洞。客户端的脚本可以通过DOM动态地修改页面内容,它不依赖于提交数据到服务器,而是从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM型XSS漏洞。
没了解过DOM的可以看一看HTML DOM教程
HTML DOM就像数据结构中的树,有根节点,叶子节点等,通过document对象进行写入。
F12查看源代码
使用F12查看,发现是把id为text的输入框的内容显示出来。单引号闭合即可,而且F12的时候就直接看见了。
提示给的是
'onclick="alert('lady_killer9')">
我使用的是
'onclick='alert('lady_killer9')
注入成功
常用Payload与工具
XSS扫描工具
工具不在于多,学一个就可以了,我学习的是第一个网络安全-XSStrike中文手册(自学笔记)
Payloads
script标签类
对于没有过滤的很简单的XSS漏洞,可以使用
有的时候会过滤掉script,大小写、双写等无法绕过,可使用后面的payload。
结合js的html标签
可结合一些onclick、onerror等事件
<IMG οnmοuseοver=“alert(‘xxs’)”>
<img src=xss οnerrοr=alert(1)>
伪协议
上面的都不行的话,可以试试伪协议
绕过
大小写绕过
双写绕过
html编码绕过
<script>alert(“XSS”)</script>
等价于
等价于
标签优先级绕过
标签比标签解析优先性更高,所以会优先闭合,导致标签逃逸,从而造成xss执行
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/8bbae88d3eae4a2f91b46cb27f3c441a.png)
危害
- 用户的Cookie被获取,其中可能存在Session ID等敏感信息。若服务器端没有做相应防护,攻击者可用对应Cookie登陆服务器。
- 攻击者能够在一定限度内记录用户的键盘输入。
- 攻击者通过CSRF等方式以用户身份执行危险操作。
- XSS蠕虫。
- 获取用户浏览器信息。
- 利用XSS漏洞扫描用户内网。
防御
- 标签过滤
- 事件过滤
- 敏感字符过滤
- 设置httponly防止Cookie被获取
- 内容安全策略(CSP)
- 在将不可信数据插入到HTML标签之间时,对这些数据进行HTML Entity编码
- 在将不可信数据插入到HTML属性里时,对这些数据进行HTML属性编码
- 在将不可信数据插入到SCRIPT里时,对这些数据进行SCRIPT编码
- 在将不可信数据插入到Style属性里时,对这些数据进行CSS编码
当然,如果过过滤不全,或者CSP配置错误,也可能被绕过。
读者福利:知道你对网络安全感兴趣,便准备了这套网络安全的学习资料
对于0基础小白入门:
如果你是零基础小白,想快速入门网络安全是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案
包括: 网络渗透、逆向分析、漏洞攻击、内核安全、移动安全、破解PWN等众多子方向。 带你从零基础系统性的学好网络安全!
👉网安学习成长路线图、网安视频合集👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉精品网安学习书籍👈
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
👉网络安全源码合集+工具包👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉CTF项目实战👈
学习网安技术最忌讳纸上谈兵,而在项目实战中,既能学习又能获得报酬的CTF比赛无疑是最好的试金石!
👉网络安全面试题板块👈
这份完整版的学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
👉[[[CSDN大礼包:《黑客&网络安全入门&进阶学习资源》免费分享]]](安全链接,放心点击)