前言前面跟着网上的文章审计过jshERP-2.3,所以现在打算自己动手审一下3.5版本的,最后收获还是不错的(doge
我自己这次采用的还是半黑盒加半白盒的手法,基本上就是根据自己要测的功能点找到对应的代码文件进行分析
项目源码下载链接:Release 管伊佳ERP_v3.5 · jishenghua/jshERP · GitHub
环境搭建该版本的环境搭建没有前面的那么简单,最开始还是将配置文件中的mysql和redis配置信息改成自己的数据,然后再将sql文件导入一下
3.5版本的jshERP项目变成了前后端分离的项目,后端比较好启动,启动完后日志里面会给你一条启动前端项目的命令
这个时候我就遇到了点问题,执行npm run serve会遇到一系列的报错,主要还是依赖冲突的问题
项目需要 vue-loader@^15.7.0(要求 webpack 5.x),但项目中已安装的 @vue/cli-plugin-babel 等依赖要求 webpack@^4.0.0,冲突的 peer 依赖导致 npm 安装失败
解决方案:
在 package.json 中添加 resolu ...
Write-Up
未读2022-长城杯-b4bycoffee首先看该题的依赖,发现rome版本为1.7,存在反序列化漏洞
注意到com.example.bab4coffee.tools目录下面自己写了一个InputSteam
1234567891011121314151617181920public class AntObjectInputStream extends ObjectInputStream { private List<String> list = new ArrayList(); public AntObjectInputStream(InputStream inputStream) throws IOException { super(inputStream); this.list.add(BadAttributeValueExpException.class.getName()); this.list.add(ObjectBean.class.getName()); this.list.a ...
Write-Up
未读best_profile首先我们先分析nginx.conf的代码
12345678910111213141516171819202122232425262728293031http { include mime.types; default_type text/html; access_log off; error_log /dev/null; sendfile on; keepalive_timeout 65; proxy_cache_path /cache levels=1:2 keys_zone=static:20m inactive=24h max_size=100m; server { listen 80 default_server; location / { proxy_pass http://127.0.0.1:5000; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf ...
0c239692b5fdf341fc97cf04ee2985d069b9636753dfdfe8594e470a92c95898034edf6599fbf5ac3f8caff8f0d53aa1efc7dbfad2e551f8aef1986fb62b0e2c4719bad78a2ccc3271fa4a591ea89057b7ae669929239d5567fe142931716417c16ca6c3be2fa7bef8f5552ad4981f2ac836b250abc589509fdbb230324a7b1fbd9c3ee1f43b53f88b57331dc4c8688f2097eff5133fe73ba635acd4ad1cdc7523b6ca57418eed348ee64b103467fccccbd3d2b3cdc52e8cd2c2254c69bb3cee367b82d4f0e9e3c6f99b1574fc3ac8685d286de0f8dda324b1229ecc4f17282c94f25160ffb407332d44b241f2785e2d661e92a3911dda364 ...
cd5699025e1016936ab721471ecd2fff10b375cd2a2a9023110763c65a9c8a1d4bfd6bea00c98829bb5ba5df05f3e04f2dcc3477da5964c42b23a52c690ce03d1d47343d09a19f5d89d3f83a275af3580d2c728972c789859853e4aca2b7b017b2e2ff0d77e0711c8347f96a9d6d4ec2fb426ce8f5a6e0bcdf5da645140f52369461df5fa2737ba46e55cd077808d6c4a8f7e1e3333b109fbba027d3ea5596cf94037d54665a5fb40458cb5090668e6165da12cf9929fb8a4aaa3be7427edea0c549e2c1965ae222fbe271a0442c9cfbee3df3805b33820f3d976ab799f2fdd45eaeb0a3d31acae8a2374fbf0c35ac99273d54e897babc366 ...
cd5699025e1016936ab721471ecd2fff10b375cd2a2a9023110763c65a9c8a1dc7561916cff8f7ca1368a56e66f1388127c614a097e515315e0d8dc6e68fefdbe3c0f2354d905d9fcfd4282bdc8a7a64abf21fd45aa43a358668ce4f6bedb3cd9951e3a17246309a2c4f54eac9408ac84c7ffa8ee28729d134220e9f17043faa5184469750c73781817e341d74cde8688190abb9323d9fb4ce1b3b46b6451f788e671fc00ac75df733dc98a18a411deb50350691dcc15969ca84d599345a2f30a9d2f73bdaf14360a4a586d3fe8890b7f113d745bf2d86a6121a922d2778ddf6888773937ceaa44b974be3584413b13069959e41d597e8b26 ...
d282e783d8801791e9fe26bf6ae163c782c4f0dbc93fab6fe82f05a302abd35333ab01a27e114fb0675c8847d570bdaf51532e3c48e9382c26fad84e5b319c067f58e1c3c294e0763093d7fc5c25ce9f6c0cee457d8b89873e183e67fc955db2e35df2093b3a8060a0cf5ef9bb33519e00cba0d71cec2baf01b0693d5c9de1ac6d87ad00739d23751cf8539e79e36f87d41c390872befa910f7a21487bc1f3bd66aeb1a97efa1cab33efc089f7cdbeb6e5797ba0474034d2e0fc27e9faf348545aad49a820231567e9bde51c54753721d9ef3b717be2e68b6c9906866cb91230403595596b5296af020261ab4ad1688ac0b6ec1086d09be93 ...
2a96eb7dfe498529d847ec0a49a2e1f1967b5c6623f629ac4d68eeea288bb7ba8093154a00b552df30c66021e5a6e7e9d2b093df2c8733591e9af4b2db8b0386f39f2905e5d2e04ab82af4305d37d79c5bceb69e7ca73e4e2db9b3a02bdf96865e163bc60c505d7f4c2833f77bd6cd4146128bd494b669964b8aea64963297cc549910663badd5034df5564d23b74221ef981baf7cc001c0b5d334ba9f196bda5211738d7a903e2501bc49f7b3b05cbee2cceaa66c34ee461c565e291dd97d028d4f9028af46d91cc3cdb2f67749f3181a7e383dd065c52ccaa9b1d2aa3d817a7725046146b9611f68b53ef0cfddc4f915ea4981653cfe4fc ...
前言这次是笔者第一次自己未借鉴任何文章审一个独立项目
这次所审的项目比较老,但非常适合像我一样的java审计新手来进行尝试,下面我会仔细写上鄙人这次的审计思路和方法
本次我用的是半黑盒+半白盒的审计方法
环境搭建项目地址:https://github.com/ZeroWdd/studentmanager
jdk 1.8
mysql 5.5
tomcat 7
我是用navicat来搭建数据库,字符集选择的是utf8,排序规则选择的是utf8_bin
新建完数据库后将项目中的sql.sql文件导入进去
然后在application.yml文件中将相关信息输入进去
做完这些之后就可以通过StudentmanagerApplication.java启动项目了,默认端口是8080
审计sql注入一拿到这个项目的时候,第一件事情就是看pom.xml文件,看有哪些可以利用的依赖以及版本,看用的数据库是哪一种
这里是用mybatis,因此我们就先从审是否存在sql漏洞开始
而mybatis的未做预处理的话所用的危险字符便是${,所以我们全局搜索一下,跟sql相关的xml文件中什么都没有 ...
参考深入学习Java代码审计技巧—详细剖析某erp漏洞-先知社区
环境搭建https://github.com/jishenghua/jshERP/releases/tag/2.3
java版本为1.8
创建完数据库之后,在application.properties文件中修改相关的数据库数据
然后就可以启动了
下面为一位师傅的审计思路,个人觉得是非常的有道理
对于Java代码审计,主要的审计步骤如下:
确定项目技术框架、项目结构
环境搭建
配置文件的分析:如pom.xml、web.xml等,特别是pom.xml,可以从组件中寻找漏洞
Filter分析:Filter是重要的组成部分,提前分析有利于把握项目对请求的过滤,在后续漏洞利用时能够综合分析
路由分析:部分项目请求路径与对用的controller方法不对应,提前通过抓包调试分析,了解前端请求到后端方法的对应关系,便于在后续分析中更快定位代码
漏洞探测
探测之前可借用工具辅助分析,如codeql、fortify、Yakit、BP等
SQL注入分析、RCE分析可先从代码入手,通过关键API及特征关键字来进行逆向数据流分析,从s ...