首页 > 其他分享 >玩转CodeQLpy之用友GRP-U8漏洞挖掘

玩转CodeQLpy之用友GRP-U8漏洞挖掘

时间:2023-03-09 19:32:48浏览次数:53  
标签:CodeQLpy github U8 GRP 文件 代码 漏洞 com

0x01 前言


CodeQLpy是作者使用python3实现的基于CodeQL的java代码审计工具,github地址https://github.com/webraybtl/CodeQLpy。


玩转CodeQLpy之用友GRP-U8漏洞挖掘_文件删除


通过CodeQLpy可以辅助代码审计人员快速定位代码中的问题,目前支持对SprintBoot的jar包,SpringMVC的war包,直接下载的源码文件夹,maven项目源码等方式进行自动化代码审计,详细使用方式参考github。


本文旨在阐述CodeQLpy在代码审计中的作用,文章后续所有漏洞均以提交CNVD,以此漏洞从事任何行为均属于违法行为,与本文作者无关。


0x02 案例


用友GRP-U8是一款常见的WEB应用,经常参加比赛的小伙伴一定不会对这个产品陌生,在高校和政府有不错的使用量。如图2.1所示。


玩转CodeQLpy之用友GRP-U8漏洞挖掘_文件删除_02

图2.1 GRP-U8产品界面


使用CodeQLpy可以直接从目标源码中找到上百个高危的漏洞,包括但不限于反序列化,任意文件上传,任意文件删除,SQL注入,SSRF,XSS等,如图2.2所示。

玩转CodeQLpy之用友GRP-U8漏洞挖掘_文件删除_03

图2.2 使用CodeQLpy之后的部分结果


总计结果数接近1000个,其中有效漏洞超过100个。找了几个有代表性的漏洞来演示。


1) 任意文件删除漏洞


POST ViewExcel?djlxid=902&url=logs/info.log.1

玩转CodeQLpy之用友GRP-U8漏洞挖掘_文件删除_04

漏洞对应的代码在com.ufgov.midas.yy.servlet.ViewExcelServlet,其中用户可控的source参数是url。

玩转CodeQLpy之用友GRP-U8漏洞挖掘_文件删除_05

继续跟踪readExcelContent方法,内部处理逻辑很多,可以只关注我们关心的部分。

玩转CodeQLpy之用友GRP-U8漏洞挖掘_文件删除_06

继续跟踪deleteFile方法,这里可以很清晰的看的文件删除的操作。

玩转CodeQLpy之用友GRP-U8漏洞挖掘_文件删除_07


2)SQL注入漏洞


/listSelectDialogServlet?slType=slFZX&slCdtn=1=2;waitfor%20delay%20'0:0:3'

漏洞代码在com.ufgov.midas.yy.servlet.ListSelectDialogServlet

继续跟踪getProjectLevel方法,这里可以很清晰的看到进行了SQL语句拼接的操作。


3)任意文件上传漏洞


玩转CodeQLpy之用友GRP-U8漏洞挖掘_github_08


上传之后会在WEB跟目录生成文件2222.jsp


玩转CodeQLpy之用友GRP-U8漏洞挖掘_github_09

漏洞代码在com.mobile.action.U8AppProxy

玩转CodeQLpy之用友GRP-U8漏洞挖掘_SQL_10

继续跟踪doGet方法

跟进doPost方法,当id=saveheder时会进行文件上传操作

跟进uploadBytes方法,这里就是标准的文件写入的操作

玩转CodeQLpy之用友GRP-U8漏洞挖掘_github_11


0x03 技巧

由于项目最终保存的结果时csv文件,不利于数据流追踪,可以结合Visual Studio Code(后续简称VS)查看完整的流。


利用CodeQLpy生成的数据库,结合CSV文件中保存的有结果的插件名称,可以在VS中复现漏洞查找过程。


1) 从项目的plugins/java或者plugins/java_ext目录中找到漏洞扫描插件,并复制到VS中。


2) 要查看流,必须使用下面的写法,如图3.1所示。其中下面方框中的注释必须要有,并且最终的查询结果有四列,最好按照图3.1的写法。

玩转CodeQLpy之用友GRP-U8漏洞挖掘_github_12

图3.1 查看流的ql脚本写法


3) 查看结果中的flow流,可以看到完整的数据流,如图3.2所示。

玩转CodeQLpy之用友GRP-U8漏洞挖掘_SQL_13

图3.2 查询ql完整的flow流


0x04 总结


类似的漏洞还有几百个,把发现漏洞交给工具,把验证漏洞留给自己。目前工具仍处于前期测试阶段,如果有任何bug请在github的issue中提出。

​原文链接​

标签:CodeQLpy,github,U8,GRP,文件,代码,漏洞,com
From: https://blog.51cto.com/u_15634773/6111126

相关文章

  • 2023爬虫学习笔记 -- m3u8视频下载
    一、目标地址https://www.XXXX.com/二、获取mu38文件1、点击XHR,刷新页面,会看到这里有两个m3u8文件2、将m3u8地址复制到浏览器,会自动下载下来,index内容如下mixed内容如下3、......
  • Cisco-EIGRP的配置实例(Cisco的私有路由协议)
    什么时EIGRPEIGRP:EnhancedInteriorGatewayRoutingProtocol即增强内部网关路由协议。也翻译为加强型内部网关路由协议。EIGRP是Cisco公司的私有协议(2013年已经公有......
  • go grpc
    如下命令的含义:protoc--go_out=.--go_opt=paths=source_relative\--go-grpc_out=.--go-grpc_opt=paths=source_relative\helloworld/helloworld.proto......
  • Go创建Grpc链接池
    Go创建Grpc链接池转载请注明来源:https://janrs.com/2023/03/创建grpc链接池/常规用法gRPC四种基本使用请求响应模式客户端数据流模式服务端数据流模式双向流模......
  • Kodi直播电视添加电子节目单EPG 电视节目指南 -- 这个不建议设置,因为e.xml文件内容要
    通过kodi可以看电视直播了,如果能够显示电视节目指南实时节目表,那就更完美了。EPG就是ElectronicProgramGuide的英文缩写,意思是电子节目指南。节目表网站推荐:http://tv......
  • 谷歌开源、高性能RPC框架:gRPC 使用体验
    在广告系统实践中,精排服务基于gRPC协议调用TF-Serving在线推理服务。相信很多业务已经使用过gRPC相关语言的框架进行服务调用,尤其是基于谷歌云的出海业务的服务调......
  • 谷歌开源、高性能RPC框架:gRPC 使用体验
    在广告系统实践中,精排服务基于gRPC协议调用TF-Serving在线推理服务。相信很多业务已经使用过gRPC相关语言的框架进行服务调用,尤其是基于谷歌云的出海业务的服务调......
  • 谷歌开源、高性能RPC框架:gRPC 使用体验
    在广告系统实践中,精排服务基于gRPC协议调用TF-Serving在线推理服务。相信很多业务已经使用过gRPC相关语言的框架进行服务调用,尤其是基于谷歌云的出海业务的服务调......
  • 谷歌开源、高性能RPC框架:gRPC 使用体验
    在广告系统实践中,精排服务基于gRPC协议调用TF-Serving在线推理服务。相信很多业务已经使用过gRPC相关语言的框架进行服务调用,尤其是基于谷歌云的出海业务的服务调......
  • WebAssembly+gRPC web=未来?
    WebAssembly+gRPCweb=未来?WebAssembly是什么WebAssembly是一个可以使C#,Java,Golang等静态强类型编程语言,运行在浏览器中的标准,浏览器厂商基于此标准实现执行引擎。 ......