Web安全漏洞解决方案

这篇具有很好参考价值的文章主要介绍了Web安全漏洞解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.已解密的登录请求

Web安全漏洞解决方案

 文章来源地址https://www.toymoban.com/news/detail-663756.html

推理: AppScan 识别了不是通过 SSL 发送的登录请求。
测试请求和响应:

Web安全漏洞解决方案

 1.1.1 产生的原因

 登录接口,前端传入的密码参数没有经过md5的加密就直接传给了后端

1.1.2 解决方法

前端代码传参的时候做md5加密处理

Web安全漏洞解决方案

 

2.会话标识未更新

Web安全漏洞解决方案

推理: 测试结果似乎指示存在脆弱性,因为“原始请求”和“响应”中的会话标识相同。这些标志应该已在响
应中更新。
测试请求和响应:

Web安全漏洞解决方案

 

2.1.2 产生原因

会话标识未更新漏洞,在用户进入登录页面,但还未登录时,就已经产生了一个session,用户输入信息,登录以后,session的id不会改变,也就是说没有建立新session,原来的session也没有被销毁), 可能会窃取或操纵客户会话和cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务。
 
2.1.3 解决方法
如果用的是shiro框架,使用 shiro自己提供的api方法 SecurityUtils.getSubject().logout(); 在登录验证时生成新的session

 

Web安全漏洞解决方案

 

3.“Content-Security-Policy”,“X-Content-Type-Options”,“X-Content-Type-Options”头缺失或不安全

Web安全漏洞解决方案

 

推理: AppScan 检测到 Content-Security-Policy 响应头缺失或具有不安全策略,这可能会更大程度地暴露于各种跨站点注入攻击之下
 

Web安全漏洞解决方案

 

推理: AppScan 检测到“X-Content-Type-Options”响应头缺失或具有不安全值,这可能会更大程度地暴露
于偷渡式下载攻击之下
 

Web安全漏洞解决方案

 

推理: AppScan 检测到 X-XSS-Protection 响应头缺失或具有不安全值,这可能会造成跨站点脚本编制攻击

 

3.1.1 产生原因

nginx.conf配置里没有添加对应的请求头

 

3.1.2 解决方法

nginx.conf里配置缺失的请求头

Web安全漏洞解决方案

 

4.垂直越权

4.1.1 漏洞分析

登录测试账号test并分析下列JS代码:js/app.eb5ecba8.js
可获取若干隐藏配置菜单:

Web安全漏洞解决方案

 

发现通过访问上述对应menuAction即可实现越权:
 
4.1.2.风险分析
攻击者可基于低权限账户获取高权限账户的模块权限。
 
4.1.3.风险等级
 
4.1.4.安全建议
对相关menuAction对应的接口完善鉴权。
 
4.1.4.问题复现
1)浏览器打开F12,找到vue.js中配置的一些项目接口的路由
2)登录低权限test账号,然后在地址栏中直接访问vue.js中的某个路由地址,例如:http://221.***.**.50:58000/#/earlyReport 前提条件是该接口的是test用户不具有访问权限的一个模块中的接口
3)结果是在浏览器能够直接访问接口所在的页面,并能访问数据
 
4.1.5.什么是垂直越权
一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞 ,简单来说就是低权限用户能访问高权限用户,就是垂直越权
 
4.1.6.解决方法
采用AOP,切每个接口,对每个接口做权限校验;自定义一个注解,加在需要控制权限的接口方法上,并且设置这个接口的权限角色。然后通过AOP,切点就是这个自定义注解的方法,前置通知把方法拦截后,先拿到当前登录用户的角色,再拿到自定义注解中该方法的权限角色,根据这些判断当前登录用户有没有权限调用这个接口。如果有权限请求正常继续往下走,如果没有权限抛出异常,代码如下:
 
自定义注解类:
 1 @Target(ElementType.METHOD)
 2 @Retention(RetentionPolicy.RUNTIME)
 3 public @interface SecurityAuth {
 4 
 5    /**
 6     * 拥有权限的角色名
 7     * @retuen
 8     */
 9    String roleName();
10 }
AOP切点类:
 1 @Aspect
 2 @Component
 3 public class SecurityAspect {
 4 
 5     @Autowired
 6     private SysRoleUserService sysRoleUserService;
 7 
 8     /**
 9      * 自定义注解切点
10      */
11     @Pointcut("@annotation(com.broadu.modules.filter.SecurityAuth)")
12     public void annotationAspect(){}
13 
14     /**
15      * 前置通知
16      */
17     @Around("annotationAspect()")
18     public Object doBefore(ProceedingJoinPoint joinPoint) throws Throwable {
19         // 拿到响应
20         HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
21         // 拿到当前登录用户
22         UserDetail user = SecurityUser.getUser();
23         if(null == user){
24             // 未登录
25             throw new RenException(ErrorCode.ACCOUNT_NOT_EXIST,"该用户不存在");
26         }
27         // 从切面织入点处通过反射机制获取织入点处的方法
28         MethodSignature signature = (MethodSignature) joinPoint.getSignature();
29         // 获取切入点所在的方法
30         Method method = signature.getMethod();
31         // 获取注解
32         SecurityAuth auth = method.getAnnotation(SecurityAuth.class);
33         // 获取该方法使用的角色
34         String roleNames = auth.roleName();
35         // 获取该用户的角色列表
36         if(ObjectUtil.notEqual(user.getSuperAdmin(),1)){
37             List<String> roleList = sysRoleUserService.getRoleNameList(user.getId());
38             List<String> list = new ArrayList<>();
39             if(null != roleList && roleList.size() > 0){
40                 String[] roleName = roleNames.split(",");
41                 for (String str : roleName) {
42                     for (String s : roleList){
43                         if(ObjectUtil.equal(str,s)){
44                             list.add(s);
45                             break;
46                         }
47                     }
48                 }
49                 if(list.size() == 0){
50                     // 没有权限
51                     throw new RenException(ErrorCode.ACCOUNT_NOT_PERMISSION,"该用户无权限访问");
52                 }
53             }
54         }
55         // 有权限
56         return joinPoint.proceed();
57     }
58 
59 }
Controller类:
 1 @RestController
 2 @Slf4j
 3 @RequestMapping("/ftpConfiguration")
 4 public class FtpConfigurationController {
 5 
 6     @Autowired
 7     FtpConfigurationService ftpConfigurationService;
 8 
 9     @Autowired
10     FactorService factorService;
11 
12     @SecurityAuth(roleName = "用户角色")
13     @GetMapping("/page")
14     @ApiOperation("统计报表")
15     public Result<PageData<FtpConfigurationDto>> page(@ApiIgnore @RequestParam Map<String, Object> params) {
16         PageData<FtpConfigurationDto> page = ftpConfigurationService.page(params);
17         List<FtpConfigurationDto> list = page.getList();
18         // 用户密码md5加密
19         list.forEach(item ->{
20             try {
21                 item.setPassword(DigestUtils.md5Hex(item.getPassword()));
22             } catch (Exception e) {
23                 log.info("加密异常信息:{}"+e.getMessage());
24             }
25         });
26         page.setList(list);
27         return new Result<PageData<FtpConfigurationDto>>().ok(page);
28     }
 
前端也对代码做了相关的权限校验

Web安全漏洞解决方案

 

静态路由绑定按钮跳转:

Web安全漏洞解决方案

 

4.1.7.验证是否修复成功
先用不是用户角色的用户登录系统后,然后直接在浏览器地址输入“分页查询用户列表”的url,查看页面上是否有数据返回。如果有,则说明漏洞没修复成功;如果没有,则修复成功。

Web安全漏洞解决方案

 

Web安全漏洞解决方案

 

到了这里,关于Web安全漏洞解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【安全狗高危安全通告】VMware Aria Operations 安全漏洞解决方案

    近日,安全狗应急响应中心关注到VMware官方发布安全公告,披露出在VMware Aria Operations Networks 6.x系列版本中存在安全漏洞(CVE-2023-20887),具有网络访问权限的攻击者利用该漏洞通过执行命令注入攻击,从而导致远程代码执行。 漏洞描述 VMware Aria Operations for Networks (以前称为vReal

    2024年02月11日
    浏览(35)
  • 信息服务上线渗透检测网络安全检查报告和解决方案4(网站风险等级评定标准、漏洞危害分级标准、漏洞安全建议)

    信息服务上线渗透检测网络安全检查报告和解决方案3(系统漏洞扫描、相对路径覆盖RPO漏洞、nginx漏洞修复) 信息服务上线渗透检测网络安全检查报告和解决方案2(安装文件信息泄漏、管理路径泄漏、XSS漏洞、弱口令、逻辑漏洞、终极上传漏洞升级) 信息服务上线渗透检测网络安

    2024年02月12日
    浏览(48)
  • Spring Cloud Gateway集成Actuator的安全漏洞和解决方案

    Spring Cloud Gateway是一个基于Spring Boot2.0和Spring WebFlux的API网关,它可以将请求转发到多个微服务并对请求进行路由、过滤和修改。Spring Cloud Gateway集成Actuator后可以提供更多的监控和管理功能,但是也可能导致安全漏洞。 最近线上环境出现一起安全事件,就是由于Spring Cloud Gat

    2024年02月09日
    浏览(48)
  • 常见的Web安全漏洞有哪些,Web安全漏洞常用测试方法介绍

    Web安全漏洞是指在Web应用程序中存在的可能被攻击者利用的漏洞,正确认识和了解这些漏洞对于Web应用程序的开发和测试至关重要。 一、常见的Web安全漏洞类型: 1、跨站脚本攻击(Cross-Site Scripting,XSS):攻击者通过向Web页面注入恶意脚本来执行恶意操作,例如窃取用户敏感信

    2024年02月11日
    浏览(56)
  • Web安全——Web安全漏洞与利用上篇(仅供学习)

    漏洞描述   Web 程序代码中对于用户提交的参数未做过滤就直接放到 SQL 语句中执行,导致参数中的特殊字符打破了 SQL 语句原有逻辑,黑客可以利用该漏洞执行任意 SQL 语句,如查询数据、下载数据、写入 webshell 、执行系统命令以及绕过登录限制等。 测试方法    在发现

    2024年02月10日
    浏览(44)
  • Web安全漏洞介绍及防御-文件上传漏洞

    🐳博客主页:举杯同庆 – 生命不息,折腾不止 🌐订阅专栏:『Web安全』 📰如觉得博主文章写的不错,或对你有所帮助的话,请多多支持呀! 👉关注✨、点赞👍、收藏📂、评论。 话题讨论 中国经济周刊-2022-07-08 新闻 万豪国际集团证实了近期一起数据泄露事件,一个月

    2024年02月02日
    浏览(43)
  • 5.5 漏洞扫描:Web安全漏洞扫描及审计

    目录 一、预备知识:Web漏洞的获取方法与w3af 1. 漏洞扫描 2. 漏洞扫描器 3.  w3af 二、实验环境 三、实验步骤 四、实验思考 1. 漏洞扫描         漏洞扫描除用于网络攻击外,还用于对网络的安全防御。系统管理员通过对网络漏洞的系统扫描,全面地了解网络的安全状态,

    2024年02月09日
    浏览(45)
  • 《WEB安全漏洞100讲》(第4讲)CSRF漏洞

    CSRF(Cross-site request forgery),跨站请求伪造,简写 CSRF/XSRF。指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作

    2023年04月08日
    浏览(44)
  • Web安全:文件包含漏洞测试(防止 黑客利用此漏洞.)

    文件包含的漏洞是  程序员在开发网站的时候,为了方便自己开发构架,使用了一些包含的函数(比如:php开发语言,include() , include_once() , require_once() 等等 ),而且包含函数中的变量,没有做一些过滤或者限制,使得用户可以 控制传到服务器中的数据,导致文件包含漏洞

    2024年02月08日
    浏览(58)
  • Web安全:文件上传漏洞测试(防止 黑客利用此漏洞.)

    现在大多的网站和Web应用系统都会有上传功能(比如:文档,图片,头像,视频上传等.),而程序员在开发文件上传功能时,没有对代码做严格校验上传文件的后缀和文件类型,此时攻击者就可以上传一个与网站脚本语言相对应的恶意代码动态脚本,例如(php,jsp、aspx,asp文

    2024年02月11日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包