Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/novysodope/javaeasyscan
javaeasyscanner - 富婆系列,代码审计辅助工具,致力于解放大脑,方便双手
https://github.com/novysodope/javaeasyscan
audit codeaudi java
Last synced: 2 months ago
JSON representation
javaeasyscanner - 富婆系列,代码审计辅助工具,致力于解放大脑,方便双手
- Host: GitHub
- URL: https://github.com/novysodope/javaeasyscan
- Owner: novysodope
- Created: 2024-06-13T07:34:03.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-06-18T02:13:39.000Z (7 months ago)
- Last Synced: 2024-08-02T15:21:59.693Z (6 months ago)
- Topics: audit, codeaudi, java
- Language: Java
- Homepage: https://github.com/novysodope/javaeasyscan
- Size: 161 KB
- Stars: 239
- Watchers: 3
- Forks: 11
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-hacking-lists - novysodope/javaeasyscan - javaeasyscanner - 富婆系列,代码审计辅助工具,致力于解放大脑,方便双手 (Java)
README
```bash
███████╗██╗ ██╗██████╗ ██████╗
██╔════╝██║ ██║██╔══██╗██╔═══██╗
█████╗ ██║ ██║██████╔╝██║ ██║
██╔══╝ ██║ ██║██╔═══╝ ██║ ██║
██║ ╚██████╔╝██║ ╚██████╔╝
╚═╝ ╚═════╝ ╚═╝ ╚═════╝
JAVAEASYSCANNER Fupo's series
—————————————————————————————————————————————————————
```
致力于解放大脑,方便双手富婆系列,不想努力就用它
# JAVA审计辅助工具
本工具以辅助审计***Springboot/Springmvc项目为主***,效果更佳# 使用
java环境:JDK1.8本工具的优势在于不用你写规则,所以在打包好项目后(懒得打包的可以直接到这里下载已经打包好的: [releases](https://github.com/novysodope/javaeasyscan/releases)),直接按照以下方式启动即可
```java
java -jar javaeasyscan.jar 源码目录(暂不支持反编译class)
```## 工具实现思路:
使用反向跟进的方法: `定位漏洞点 ⟶ 定位漏洞所属方法、所属类 ⟶ 往上查找所属类及所属方法被调用的地方 ⟶ 直至没有被调用为止`
**示例:**
有一个SQL注入的场景如下
```java
select * from subusers where id = ${id}
```
首先记录`selectUser`,以及所在的Mappper,根据Mapper配置找到对应的Mapper接口
```java
@Mapper
public interface ProductMapper {List selectUser(ProductExample example);
}
```
随后记录`ProductMapper`接口以及`selectUser`方法,接着往上找到调用该接口和方法的地方
```java
public class ProductServiceImpl implements ProductService {
@Autowired
private ProductMapper productMapper;
public List selectUser(ProductExample example) {
return productMapper.selectUser(example);
}
```
随后记录`ProductServiceImpl`类、`selectUser`方法和`ProductService`,然后往前找调用了`ProductService.selectUser`的地方
```java
@ResponseBody
@RequestMapping("/sqlin")
public List sqlin(HttpServletRequest req, HttpServletResponse rep, ProductExample example) throws IOException {
String v = req.getParameter("sql");
try {
List reta = productService.selectUser(example);
return ret;
} catch (Exception e) {
return Collections.singletonList(e.getMessage());
}
}
```
这个跟进的操作会重复到往上再没有调用,且如果mybatis xml文件存在注入写法,但是方法没有被调用,则工具就会忽略该场景等所有漏洞扫描完后,会在当前目录生成一个***HTML报告***,报告示例:
![image](https://github.com/novysodope/javaeasyscan/assets/45167857/6e299953-fe42-4aa0-b96d-b0786f638655)
![image](https://github.com/novysodope/javaeasyscan/assets/45167857/71e07f90-44d4-4ea8-9e73-74334d5d379e)
# 计划
因为时间仓促,本工具只写了mybatis的SQL注入、JDBC拼接SQL注入、Fastjson反序列化、Groovy代码执行、命令注入五个模块,目前mybatis的SQL注入模块比较完善## 后续需要优化的地方:
- 所有模块增加入参校验,如果参数不可控则忽略场景,减少误报
- JDBC拼接导致的注入需要增加调用链跟踪(目前只是输出了存在拼接的地方)
- Fastjson反序列化增加版本检测
- this.method没有被识别,会影响调用链跟踪## 后续新增
- 各种漏洞模块
- 界面?# 其他
- 如果打包没有把依赖打包进去,请查看 [解决maven打jar包时不把依赖打包进去的问题](https://blog.csdn.net/qq_30786785/article/details/125506886)
- 因为要带项目了,所以要视情况挤时间出来更新,如果你有想法等不及的话可以下载代码改或者加入本项目直接pull更新或者提交issues,我会不定期查看,谢谢
- 不爱请别伤害,不好的评论我会删