绿盟 检测到目标URL存在http host头攻击漏洞

文章描述了一个技术问题,即通过curl命令使用特定Host头访问服务器时收到301重定向。问题源在于ELB配置,但服务器Nginx上添加Host判断后影响了正常访问。通过分析nginx日志,找到一个100开头的IP也需要排除在外,经确认该IP稳定,最终在Nginx配置中的Host判断规则中包含了这个IP,从而解决了403Forbidden的问题。

这个问题的整个排查思路和解决方案

问题描述

用curl -v -H 'Host: www.attack.com' http://139.0.0.1:80

响应头:
HTTP/1.1 301 Moved Permanently
Date: Sat, 29 Apr 2023 23:07:02 GMT
Content-Type: text/html
Content-Length: 150
Connection: keep-alive
Location: https://www.attack.com:443/
Server: elb

由于其他项目已经做过host判断,验证发现用ELB外网地址就存在这个,而直接用服务器地址就不存在这个问题,

这个问题是ELB的问题,属于误报

现在的问题是需要服务器nginx配置上加上host判断

if ($host !~* ^example.com.cn|10.0.0.1$)
{
	return 403;
} 

但是加上之后,正常的页面无法访问,有时页面进不去,有时后端接口调用不了

为了解决这个问题,在nginx日志配置上最后加上$host

  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" "$host" ';

通过查看nginx的access.log排查了解目前的调用有哪些host

通过查看日志,定位到一个100开头的ip也是host,于是把这个ip加进去,果然解决了问题

现在还有一个问题是这个100开头的ip是否会变化?会在重启服务时变化吗?如变化的话就不能只加ip,得知道ip的子网掩码得到这个ip范围,写个正则匹配这个范围的ip,后经运维确认这个是个虚拟服务器IP,总之不会随意变更,所以最终就是如下

if ($host !~* ^example.com|10.0.0.1|100.0.0.1$)
{
	return 403;
} 

验证curl -v -H 'Host: www.attack.com' http://10.0.0.1:80

返回403,ok

Vue.js 是一个流行的前端 JavaScript 框架,其本身在设计上具有较高的安全性,但像所有软件一样,旧版本可能存在已知的安全漏洞。当使用较旧版本的 Vue.js 时,确实有可能导致与 JavaScript 框架库相关的安全漏洞检测到,尤其是在进行安全扫描(如绿盟 RSAS)时。 ### 漏洞成因与影响 Vue.js 的版本更新通常包括对安全问题的修复。例如,在某些版本中曾发现客户端模板注入(Client-Side Template Injection)漏洞,这可能导致 XSS(跨站脚本攻击攻击[^1]。如果应用程序未对用户输入进行适当的转义或过滤,攻击者可以通过构造恶意输入来执行任意 JavaScript 代码,从而危害网站的安全性。 此外,即使项目中未直接使用 jQuery,某些依赖库(如 `js-cookie` 或 `jsencrypt`)也可能引入旧版本的第三方库(如 YUI),这些库可能包含已知的安全漏洞。例如,`jsencrypt` 在某些版本中会引入旧版 YUI,这可能在扫描中触发“JavaScript 框架库漏洞”警告[^3]。 ### 检测方法 为了检测目标站点是否使用了存在漏洞的 Vue.js 版本,可以采取以下几种方式: 1. **检查 Vue.js 版本号** 通过浏览器开发者工具查看网页加载的 Vue.js 文件路径和版本号。例如,在浏览器控制台中输入以下命令: ```javascript Vue.version ``` 然后比对 [Vue.js 官方安全公告](https://v3.vuejs.org/guide/security.html) 或 [CVE 数据库](https://cve.mitre.org/),确认该版本是否存在已知漏洞。 2. **使用自动化工具进行扫描** 使用漏洞扫描工具(如 [Snyk](https://snyk.io/)、[npm audit](https://docs.npmjs.com/cli/v8/commands/npm-audit) 或 [Retire.js](https://retire.js.org/))来检测项目中依赖的 JavaScript 库是否存在已知安全问题。这些工具可以识别 Vue.js 以及其依赖项中的漏洞。 3. **查看 HTTP 响应与资源文件** 检查网页加载的 Vue.js 文件是否来自 CDN(如 `https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js`),并确认其版本是否已过时[^1]。 4. **审查依赖树** 使用 `npm ls` 或 `yarn list` 查看项目中是否存在间接依赖引入的旧版库,例如 `jsencrypt` 或 `jsrsasign`,这些库可能引入了旧版 YUI[^4]。 ### 修复建议 - **升级 Vue.js 至最新稳定版本** Vue 2 已于 2023 年底停止官方支持,建议升级至 Vue 3 以获得最新的安全更新和性能优化。 - **避免使用存在漏洞的依赖库** 替换或移除如 `js-cookie`、`jsrsasign` 等可能引入旧版 YUI 的依赖。对于加密需求,推荐使用 `jsencrypt` 的压缩版本或现代 Web Crypto API。 - **使用本地引入方式替代 npm 包** 对于 `jsencrypt` 等库,建议手动引入压缩版本(如 `jsencrypt.min.js`),以避免引入不必要的依赖[^3]。 - **定期运行安全审计工具** 将 `npm audit` 或 `yarn audit` 集成到 CI/CD 流程中,确保每次提交都进行依赖安全性检查。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值