前端常见漏洞总结
- 测试目的
- 从攻击者的角度进行测试将有助于发现并识别出一些隐性存在的安全漏洞和风险点。
- 从用户的角度来说,在运行安全项目之前进行渗透测试,可以对信息系统的安全性得到较深的感性认知,有助于后续的安全建设。
- 在实施过安全项目之后进行渗透测试,则可以用于验证经过安全保护后的资产是否真实达到了预定安全目标、遵循了安全策略。
- 风险管理
- 相对于其他服务而言,渗透测试是一种需要相当技术深度的专业服务,要求渗透测试人员有丰富的经验及新颖的思路。
- 在渗透测试过程中,虽然我们尽量避免影响业务的正常运行,也会采取适当的风险规避的方法,但是由于测试的不确定性,渗透测试服务仍然有可能对网络和系统运行造成不同程度的影响。
- 另外,对于安全防护措施严密的网络和系统,在有限的时间内进行渗透测试可能不会获得成功的结果。但这同时也证明了网络、系统能够在相当的程度上抵抗黑客的攻击。
1、Cookie未设置HttpOnly
漏洞名称 | Cookie未设置HttpOnly |
---|---|
漏洞分类 | Cookie配置类缺陷 |
漏洞描述 | Cookie中的HttpOnly标识会指示浏览器Cookie只能由服务器访问,而不能由js访问。即使攻击者通过控制了页面(xss),也无法获取敏感Cookie,加大攻击难度。 |
漏洞危害 | 敏感Cookie被攻击者窃取。 |
漏洞地址 | http://test.cn/auth/iam/checkTicket |
漏洞详情 | 在POST方法的请求http://test.cn/auth/iam/checkTicket中,存在Cookie未设置HttpOnly |
请求信息 | POST http://test.cn/auth/iam/checkTicket?v=1713941981114 HTTP/1.0 sec-fetch-mode: cors Cookie: 1579414716316221441=f00ed4c7-438c-45b6-99dd-dcc24bf8b2d9 referer |
修复建议 | 如果此Cookie不需要前端js来操作,只由后端服务器读取,则建议设置HttpOnly。 |
解决办法 | 在Nginx中,不能直接通过配置来设置HTTP响应头中的Cookie的HttpOnly 属性,因为Nginx本身不解析或修改Cookie的内容。这是在应用程序代码中完成的,而不是在Nginx配置中。 |
2、Cookie未设置Secure
漏洞名称 | Cookie未设置Secure |
---|---|
漏洞分类 | Cookie配置类缺陷 |
漏洞描述 | 通过HTTPS访问内容时,如果在cookie上设置了Secure,那么浏览器将不会在使用未加密的HTTP连接的任何请求中提交cookie,从而防止cookie被监视网络流量的攻击者轻易拦截。 |
漏洞危害 | 敏感Cookie在HTTP明文传输时可能发生泄露。 |
漏洞地址 | http://test.cn/auth/iam/checkTicket |
漏洞详情 | 在POST方法的请求http://test.cn/auth/iam/checkTicket中,存在Cookie未设置Secure |
请求信息 | POST http://test.cn/auth/iam/checkTicket?v=1713941981114 HTTP/1.0sec-fetch-mode: corsCookie: 1579414716316221441=f00ed4c7-438c-45b6-99dd-dcc24bf8b2d9referer |
修复建议 | 如果网站配置了将HTTP请求重定向为HTTPS,并且所有涉及次Cookie的逻辑都在HTTPS下完成,建议将其设置为Secure。 |
解决办法 | 在 Nginx 配置中,无法直接设置 HTTP 响应头中的 Set-Cookie 字段的 Secure 属性,因为这个属性是由应用程序(例如一个 Web 应用程序的后端服务器)在发送 Set-Cookie 响应头时设置的。 |
3、X-XSS-Protection
漏洞名称 | XSS防护头未启用 |
---|---|
漏洞分类 | 其它配置缺陷 |
漏洞描述 | HTTP X-XSS-Protection 响应头是 Internet Explorer,Chrome 和 Safari 的一个特性,当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面,启用它可提升攻击难度。 |
漏洞危害 | 网站未能有效配置X-XSS-Protection响应头,存在XSS漏洞被利用的安全风险。 |
漏洞地址 | http://test.cn/internalPush/hrReceive/receivingSysUser |
漏洞详情 | 在POST方法的请求http://test.cn/internalPush/hrReceive/receivingSysUser中,存在XSS防护头未启用 |
请求信息 | POST http://test.cn/internalPush/hrReceive/receivingSysUser HTTP/1.0 x-real-ip: 127.0.0.1 x-real-port: 127.0.0.1 Content-Type: application/json; charset=UTF-8 user-agent: Apache-HttpClient/4.5.12 (Java/1.8.0_202) |
修复建议 | 正确配置“X-XSS-Protection”头部,比如设置X-XSS-Protection:1; mode=block。 |
解决办法 | add_header X-XSS-Protection "1; mode=block"; |
4、X-Content-Type-Options
漏洞名称 | MIME嗅探攻击防护未启用 |
---|---|
漏洞分类 | 其它配置缺陷 |
漏洞描述 | X-Content-Type-Options HTTP 消息头相当于一个提示标志,被服务器用来提示客户端一定要遵循在 Content-Type 首部中对 MIME 类型 的设定,而不能对其进行修改,这就禁用了客户端的 MIME 类型嗅探行为。 |
漏洞危害 | 通常浏览器会根据响应头的Content-Type字段来分辨它们的类型,利用这个特性,攻击者甚至可以让原本应该解析为图片的请求被解析为JavaScript。 |
漏洞地址 | http://test.cn/internalPush/hrReceive/receivingSysUser |
漏洞详情 | 在POST方法的请求http://test.cn/internalPush/hrReceive/receivingSysUser中,存在MIME嗅探攻击防护未启用 |
请求信息 | POST http://test.cn/internalPush/hrReceive/receivingSysUser HTTP/1.0 x-real-ip: 127.0.0.1 x-real-port: 127.0.0.1 Content-Type: application/json; charset=UTF-8 user-agent: Apache-HttpClient/4.5.12 (Java/1.8.0_202) |
修复建议 | 这个头可以防止浏览器猜测响应的内容类型,从而防止某些类型的XSS攻击。 正确配置X-Content-Type-Options报头, 例如设置 X-Content-Type-Options: nosniff |
解决办法 | add_header X-Content-Type-Options nosniff; |
5、X-Frame-Options
漏洞名称 | 点击劫持漏洞 |
---|---|
漏洞分类 | 其它配置缺陷 |
漏洞描述 | 网站未设置X-Frame-Options头,存在点击劫持的风险。 |
漏洞危害 | 用户不知情的情况下,被诱骗执行各类点击劫持操作,危害业务安全。 |
漏洞地址 | http://test.cn/internalPush/hrReceive/receivingSysUser |
漏洞详情 | 在POST方法的请求http://test.cn/internalPush/hrReceive/receivingSysUser中,存在点击劫持漏洞 |
请求信息 | POST http://test.cn/internalPush/hrReceive/receivingSysUser HTTP/1.0 x-real-ip: 127.0.0.1 x-real-port: 127.0.0.1 Content-Type: application/json; charset=UTF-8 user-agent: Apache-HttpClient/4.5.12 (Java/1.8.0_202) |
修复建议 | 建议所有请求响应都设置X-Frame-Options头,值为DENY或者sameorigin,比如X-Frame-Options:sameorigin,一般可以在服务器统一配置该响应头。 |
解决办法 | add_header X-Frame-Options DENY; 或者 add_header X-Frame-Options "SAMEORIGIN"; |
6、Strict-Transport-Security (HSTS)
漏洞名称 | XSS防护头未启用 |
---|---|
漏洞分类 | 其它配置缺陷 |
漏洞描述 | Strict-Transport-Security (HSTS) 虽然这个头与XSS不直接相关,但它可以通过强制使用HTTPS来增加安全性,从而帮助减少中间人攻击的风险,这些攻击可能会使XSS攻击更容易成功。 |
漏洞危害 | 网站未能有效配置Strict-Transport-Security响应头,存在XSS漏洞被利用的安全风险。 |
漏洞地址 | http://test.cn/internalPush/hrReceive/receivingSysUser |
漏洞详情 | 在POST方法的请求http://test.cn/internalPush/hrReceive/receivingSysUser中,存在XSS防护头未启用 |
请求信息 | POST http://test.cn/internalPush/hrReceive/receivingSysUser HTTP/1.0 x-real-ip: 127.0.0.1 x-real-port: 127.0.0.1 Content-Type: application/json; charset=UTF-8 user-agent: Apache-HttpClient/4.5.12 (Java/1.8.0_202) |
修复建议 | 正确配置“Strict-Transport-Security”响应头。这是一个强大的安全特性,可以减少XSS攻击。 |
解决办法 | add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"; |
7、Referrer-Policy
漏洞名称 | XSS防护头未启用 |
---|---|
漏洞分类 | 其它配置缺陷 |
漏洞描述 | Referrer-Policy这个头可以控制浏览器在发送引用(referrer)信息时的行为。虽然它主要用于隐私保护,但也可以帮助减少某些类型的XSS攻击。 |
漏洞危害 | 网站未能有效配置Referrer-Policy响应头,存在XSS漏洞被利用的安全风险。 |
漏洞地址 | http://test.cn/internalPush/hrReceive/receivingSysUser |
漏洞详情 | 在POST方法的请求http://test.cn/internalPush/hrReceive/receivingSysUser中,存在XSS防护头未启用 |
请求信息 | POST http://test.cn/internalPush/hrReceive/receivingSysUser HTTP/1.0 x-real-ip: 127.0.0.1 x-real-port: 127.0.0.1 Content-Type: application/json; charset=UTF-8 user-agent: Apache-HttpClient/4.5.12 (Java/1.8.0_202) |
修复建议 | 正确配置“Referrer-Policy”响应头。这是一个强大的安全特性,可以减少和报告XSS攻击。 |
解决办法 | add_header Referrer-Policy "no-referrer-when-downgrade"; |
8、Content-Security-Policy (CSP)
漏洞名称 | 内容安全策略头缺失 |
---|---|
漏洞分类 | 其它配置缺陷 |
漏洞描述 | Content-Security-Policy响应头允许网站管理员控制允许用户代理为给定页面加载的资源。除少数例外,策略主要涉及指定服务器源和脚本端点。这有助于防止跨站点脚本攻击(XSS)。 |
漏洞危害 | 内容安全策略(CSP)是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本 (XSS) 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件,这些攻击都是主要的手段。 |
漏洞地址 | http://test.cn/internalPush/hrReceive/receivingSysUser |
漏洞详情 | 在POST方法的请求http://test.cn/internalPush/hrReceive/receivingSysUser中,存在内容安全策略头缺失 |
请求信息 | POST http://test.cn/internalPush/hrReceive/receivingSysUser HTTP/1.0 x-real-ip: 127.0.0.1 x-real-port: 127.0.0.1 Content-Type: application/json; charset=UTF-8 user-agent: Apache-HttpClient/4.5.12 (Java/1.8.0_202) |
修复建议 | 正确配置“Content-Security-Policy”响应头。这是一个强大的安全特性,可以帮助减少和报告XSS攻击。CSP允许你指定哪些外部资源(如脚本、样式表等)可以被加载和执行。 注意:CSP是一个复杂的特性,需要仔细配置以确保不会意外地阻止你的网站正常工作。 |
解决办法 | 将本站内部http链接自动改为https,并不限制内容加载来源。 add_header Content-Security-Policy "default-src 'self' 'unsafe-inline';img-src data: 'self';font-src data: 'self';script-src 'self' 'unsafe-inline' 'unsafe-eval';"; |
9、CORS(跨域资源共享)漏洞
漏洞名称 | CORS(跨域资源共享)漏洞 |
---|---|
漏洞分类 | 其它配置缺陷 |
漏洞描述 | CORS允许网页的某些内容(如字体、JavaScript等)从与提供该内容的域不同的域进行加载。网站启用了敏感的CORS方法,存在跨域攻击的风险,可能导致敏感信息被窃取或进行敏感操作等危害。 |
漏洞危害 | CORS跨域攻击有两种类型的攻击方式。一种是在攻击者自己控制的网页上嵌入跨域请求,用户访问链接,执行了跨域请求,从而攻击目标,比如访问了内网敏感资源。还有一种是正常的网页被嵌入了到攻击者控制页面的跨域请求,从而劫持用户的会话。 |
漏洞地址 | http://test.cn/internalPush/hrReceive/receivingSysUser |
漏洞详情 | 在POST请求http://test.cn/internalPush/hrReceive/receivingSysUser中,参数origin存在CORS漏洞 |
请求信息 | POST http://test.cn/internalPush/hrReceive/receivingSysUser HTTP/1.0 x-real-ip: 127.0.0.1 x-real-port: 127.0.0.1 Content-Type: application/json; charset=UTF-8 user-agent: Apache-HttpClient/4.5.12 (Java/1.8.0_202) |
修复建议 | 1、正确配置CORS有关响应头,比如Access-Control-Allow-Origin严格限制域白名单,而不是使用*;尽量避免使用Access-Control-Allow-Credentials。 2、不信任未经身份验证的跨域请求,应该首先验证Session ID或者Cookie。 3、对于请求方来说验证接收的数据有效性,服务方仅暴露最少最必须的功能。 4、通过多种条件屏蔽掉非法的请求,例如HTTP头、参数等。 |
解决办法 | 1、add_header 'Access-Control-Allow-Origin' '*'; 2、add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE'; 3、add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; 4、add_header 'Access-Control-Allow-Credentials' 'true'; |
10、http host头攻击漏洞
漏洞名称 | host头攻击漏洞 |
---|---|
漏洞分类 | 其它配置缺陷 |
漏洞描述 | 为了方便的获得网站域名,开发人员一般依赖于HTTP Host header。但是这个header是不可信赖的,如果应用程序没有对host header值进行处理,就有可能造成恶意代码的传入。 |
漏洞危害 | 网站未能有效配置host header值响应,存在host头攻击漏洞被利用的安全风险。 |
漏洞地址 | http://test.cn/internalPush/hrReceive/receivingSysUser |
漏洞详情 | 在POST方法的请求http://test.cn/internalPush/hrReceive/receivingSysUser中,存在host头攻击漏洞 |
请求信息 | POST http://test.cn/internalPush/hrReceive/receivingSysUser HTTP/1.0 x-real-ip: 127.0.0.1 x-real-port: 127.0.0.1 Content-Type: application/json; charset=UTF-8 user-agent: Apache-HttpClient/4.5.12 (Java/1.8.0_202) |
修复建议 | web应用程序应该使用SERVER_NAME而不是host header。 在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法host header。 |
解决办法 | # HTTP host头攻击的技术NGINX防护 xxx.com为server_name if ($http_host != 'xxx.com'){ return 403; } |
11、X-Forwarded-For伪造IP
漏洞名称 | X-Forwarded-For伪造IP |
---|---|
漏洞分类 | 其它配置缺陷 |
漏洞描述 | X-Forwarded-For伪造IP 响应头是 Internet Explorer,Chrome 和 Safari 的一个特性,当检测到了用户通过伪造请求头来伪造真实ip时,浏览器将停止加载页面,启用它可提升攻击难度。 |
漏洞危害 | 用户可以通过自己设置请求头来伪造IP,存在漏洞被利用的安全风险。 |
漏洞地址 | http://test.cn/internalPush/hrReceive/receivingSysUser |
漏洞详情 | 在POST方法的请求http://test.cn/internalPush/hrReceive/receivingSysUser中,存在通过伪造请求头来伪造真实IP。 |
请求信息 | POST http://test.cn/internalPush/hrReceive/receivingSysUser HTTP/1.0 x-real-ip: 127.0.0.1 x-real-port: 127.0.0.1 Content-Type: application/json; charset=UTF-8 user-agent: Apache-HttpClient/4.5.12 (Java/1.8.0_202) |
修复建议 | 正确配置“X-Forwarded-For”响应头。可以减少伪造请求头来伪造真实IP。 |
解决办法 | proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; |
12、升级协议为WebSocket
漏洞名称 | 升级协议为WebSocket |
---|---|
漏洞分类 | 其它配置缺陷 |
漏洞描述 | 升级协议为WebSocket响应头浏览器将开始WebSocket的数据帧协议实现数据交换,启用它可提升攻击难度。 |
漏洞危害 | 握手成功之后,服务器端和客户端便角色对等,就像普通的Socket一样,能够双向通信。 不再进行HTTP的交互,而是开始WebSocket的数据帧协议实现数据交换。 |
漏洞地址 | http://test.cn/internalPush/hrReceive/receivingSysUser |
漏洞详情 | 在POST方法的请求http://test.cn/internalPush/hrReceive/receivingSysUser中,可升级协议为WebSocket。 |
请求信息 | POST http://test.cn/internalPush/hrReceive/receivingSysUser HTTP/1.0 x-real-ip: 127.0.0.1 x-real-port: 127.0.0.1 Content-Type: application/json; charset=UTF-8 user-agent: Apache-HttpClient/4.5.12 (Java/1.8.0_202) |
修复建议 | 正确配置协议为WebSocket响应头。浏览器将开始WebSocket的数据帧协议实现数据交换。 |
解决办法 | add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; |