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

代码审计-java项目-组件漏洞审计

代码审计必备知识点:

1、代码审计开始前准备:

环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。

2、代码审计前信息收集:

审计目标的程序名,版本,当前环境(系统,中间件,脚本语言等信息),各种插件等。

3、代码审计挖掘漏洞根本:

可控变量及特定函数,不存在过滤或过滤不严谨可以绕过导致的安全漏洞。

4、代码审计展开计划:

审计项目漏洞原理->审计思路->完整源码->应用框架->验证并利用漏洞。

代码审计两种方法

功能点或关键字分析可能存在的漏洞

   -抓包或搜索关键字找到代码出处及对应文件。

   -追踪过滤或接收的数据函数,寻找触发此函数或代码的地方进行触发测试。

 

   -常规或部分MVC模型源码可以采用关键字的搜索挖掘思路。

   -框架 MVC 墨香源码一般会采用功能点分析抓包追踪挖掘思路。

1.搜索关键字找敏感函数

2.根据目标功能点判断可能存在的漏洞

案例:CNVD-悟空CRM9.0JAVA)-Fastjson组件

1.根据cnvd公开的漏洞信息得知悟空CRM9.0存在命令执行漏洞。

2.下载悟空CRM9.0源码:https://github.com/72wukong/72crm-9.0-JAVA    。将源码导入到IntelliJ IDEA ,部署好环境,启动服务器。

3.进入IntelliJ IDEA,第一步就是打开pom.xml文件,查看项目引用了哪些组件。

当将鼠标移动到fastjson组件时提示使用的1.2.54版本存在漏洞。

4.搜索fastjson组件产生过的历史漏洞,找到对应版本的漏洞,查看漏洞利用信息。

5.知道产生的漏洞之后还需要知道fastjson在源码中是怎么使用的。

搜索后得知:使用fastjson时最常用的方法就是parseobject()。所以就可以在源码中搜索  parseobject  确认源码中使用fastjson的位置

6.全局搜索queryTaskByWorkId方法,看是谁调用了,路由地址是多少。

7.通过跟踪代码得知路由地址为:work/queryTaskByWorkId     需要以post方式传递json参数,

数据类型为:Content-Type:application/json;charset=UTF-8

8.访问路由地址抓包修改。配合dnslog测试是否成功执行命令——传递的json数据:{"@type":"java.net.Inet4Address","val":"dnslog地址"}

9.dnslog成功接收到请求信息,漏洞存在。

http://www.lryc.cn/news/127120.html

相关文章:

  • 接口测试的测试用例该怎么写呢
  • C语言例题讲解(if语句,循环语句,函数)
  • 深入探索JavaEE单体架构、微服务架构与云原生架构
  • 【STM32】FreeRTOS互斥量学习
  • Docker容器基础
  • Ajax及前端工程化
  • electron的使用和操作
  • Python最重要的数据结构是列表(list)的使用方法
  • 二开ChatGPT微信小程序源码 AI聊天微信小程序源码 适配H5和WEB端 支持AI聊天次数限制
  • VGG简单学习
  • Stable Diffusion - 人物坐姿 (Sitting) 的提示词组合 与 LoRA 和 Embeddings 配置
  • [oneAPI] 手写数字识别-GAN
  • 爬虫逆向实战(十五)--阿某某营登录
  • 【计组】校验码(奇偶校验码、海明校验码、CRC)
  • File Inclusion
  • 函数性能探测:更简单高效的 Serverless 规格选型方案
  • 嵌入式Linux Qt5 (C++)开发栏目概述
  • C语言“牵手”微店商品详情数据方法,微店商品详情API接口申请指南
  • C++ volatile
  • 空洞卷积学习笔记
  • WPF中的UseLayoutRounding和SnapsToDevicePixels
  • Windows权限维持—自启动映像劫持粘滞键辅助屏保后门WinLogon
  • Mysql之explain详解
  • 每天一道leetcode:1926. 迷宫中离入口最近的出口(图论中等广度优先遍历)
  • Mysql_5.7下载安装与配置基础操作教程
  • 【业务功能篇68】电商项目相关核心设计
  • 微信开发之一键退出群聊的技术实现
  • 〔012〕Stable Diffusion 之 中文提示词自动翻译插件 篇
  • 【C++】一文带你初识C++继承
  • SDK是什么,SDK和API有什么区别