XSS跨站脚本攻击(原理+实战操作)

XSS(Cross Site Scripting) 跨站脚本攻击,通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

一、XSS原理

        当你输入的东西可以在网页中被显示出来或者存储到数据库中,并且未被做严格的安全过滤时,就可以通过插入JavaScript相关代码让网页执行你插入的代码。

        通用核心危害:

  • Cookie窃取与会话劫持:恶意脚本可以读取当前域下的Cookie(特别是未设置HttpOnly属性的会话Cookie)。攻击者利用窃取的Cookie即可直接冒充用户登录账户,进行任何用户可执行的操作。这是最常见、最直接的危害。

  • 敏感信息窃取:脚本可以读取并外传页面上的任何内容,包括用户的个人资料、邮箱、地址、电话号码、信用卡信息等。可以伪造登录框(钓鱼),诱骗用户在当前页面上输入用户名和密码并发送给攻击者。可以进行键盘记录,捕获用户的输入。

  • 网站前端内容篡改:脚本可以动态修改DOM,插入虚假信息、诽谤内容、恶意链接或完全重写页面(如“网页 defacement”)。可以显示伪造的系统消息或勒索提示(如“您的文件已被加密,请支付比特币”)。

  • 重定向用户:将用户浏览器重定向到攻击者控制的钓鱼网站,进一步骗取凭证,或重定向到恶意软件下载页面。

二、XSS类型

        1.反射型XSS

        恶意脚本作为请求的一部分发送给服务器,服务器将其反射回响应中,浏览器执行。通常存在于URL或请求头中。

        危害特点高度针对性。攻击通常通过钓鱼邮件、社交工程精准投递给特定目标(如某公司员工)。危害在用户点击链接的瞬间发生,服务器不留存恶意代码,难以追踪。

        原因:服务器对攻击者构建恶意脚本的URL或请求体没有严格的检测和转义,导致浏览器解析响应时直接拼接在页面之中。

        典型场景:搜索结果页、URL参数展示页面

        2.存储型XSS

        恶意脚本被提交并永久存储在服务器上(如数据库、评论区、用户资料等),所有访问该存储内容的用户都会触发脚本执行,影响范围广。

        危害特点: 危害范围最广、持续时间最长。一旦恶意代码被存入服务器,它会对所有访问受影响页面的用户自动生效,无需再次欺骗。就像一个“污染源”,持续造成伤害。

        原因:用户提交的恶意内容未经过滤直接存储到数据库中,服务器后续读取这些数据时未经转义直接渲染到页面中,浏览器加载页面时,误将恶意脚本当作合法代码并执行。

        典型场景:论坛评论区、博客留言、用户个人资料等

        3.DOM型XSS

        整个攻击过程完全在客户端完成,不涉及服务器。恶意脚本通过操作DOM树注入。

        危害特点:隐蔽性极强。因为攻击不经过服务器,传统的服务器端日志监控和Web应用防火墙(WAF)很难发现和防御。其危害与反射型类似,但更难检测和修复。

        原因:前端JS直接使用URL参数、Cookie、localStorage等不可信数据,将这些不可信数据通过innerHTML、document.write、eval()等危险API直接插入页面DOM

        典型场景:单页面应用(SPA)中用URL参数渲染页面内容、前端直接处理用户输入并插入页面等

三、实战操作

1.XSS检测

        XSS漏洞多出现于搜索结果页面,可通过搜索search.php/html等相关页面进行检测。

        首先在fofa.info上搜索search.php/search.html,利用工具xsser——是可以在kali上使用的一款XSS检测工具


git clone https://github.com/epsylon/xsser

将fofa上的搜索结果一一使用xsser进行检测(如果有fofa会员可以将结果一键导出,进行批量检测)

xsser基础用法

检测GET接口XSS

xsser -u "http://example.com/search.php?q=XSS"

这里xsser将会对参数q进行XSS检测

加cookie(登陆后检测)

xsser -u "http://example.com/search.php?q=XSS" --cookie="SESSIONID=xxxx"

这里的cookie直接使用发送请求时请求头中的cookie值

POST请求

xsser -u "http://example.com/login.php" --data="username=XSS&password=XSS"

设置自定义请求头

xsser -u "http://example.com/search.php?XSS=1" -H "User-Agent: XSS-Babe" --referer "http://ref.com"

使用编码绕过/启发式检测

xsser -u "http://example.com/search.php?p=XSS" --auto

开启爬虫功能(自动发现接口)

xsser -u "http://example.com/" --Crawling

常见参数速查表

参数说明

-u

目标URL
--dataPOST请求参数
--cookie设置Cookie
-H设置自定义Header
--referer设置Referer头
--auto启发式检测
--Crawling启用爬虫自动检测接口

详细参数见Xsser-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值