java代码审计——若依v4.6.0
继续审计框架源码,这次审计若依的一个比较老的版本,它是一个基于SpringBoot的权限管理系统,采用该站点的系统还是挺多的,所以研究这种大型,大众化的框架漏洞还是比较有价值的。
若依采用的核心技术:
SpringBoot
Mybatis
Shiro
Thymeleaf
Bootstrap
0x01 前言该框架有很多模块,后端代码目录介绍如下
几个模块的依赖关系如下
所以application 启动类在 admin 模块里。启动成功后游览器访问就是一个后台登录页面。
若依中shiro的权限问题权限管理采用了shiro框架,首先需要看看若依中的shiro是如何管理登录和限制权限的。
登录的控制器方法如下:
账号密码为参数生成一个token对象,这里有shiro的关键标志,就是remberMe。然后调用 getSubject方法获取一个主体。那什么是Subject主体主体,若依的官方文档是这么说的:
Subject主体,代表了当前的“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject
然后就调用它的 login 方法
这里会调用 s ...
java代码审计——Jfinalcms
想在网上找点 java 代码看看,于是在 gitee 上找到了一个很久不更新的系统,最后一次更新版本还是在两年前。官网由于没有备案也寄了,看来已经不维护了,非常适合我这种新手拿来练习。
gitee 项目源码地址:https://gitee.com/heyewei/JFinalcms
0x01 前言下载好源码之后,使用 tomcat搭建环境,导入sql 文件,运行
搭建成功,不知道图片干哪去了,其他功能都正常。
随便翻看了一下源码,不是springboot,没有启动程序,存在webapp,但是又存在controller,走路由的,第一时间也迷了,不知道这是什么东西。
于是就看了看这个项目所采用的技术和框架
JFinal?之前根本没听说过。
简介:JFinal 是基于Java语言的极速 WEB + ORM 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。
JFinal 官方开发文档:https://jfinal.com/doc
0x02 开发基础config 配置基于JFinal的web项目需要创建一个继承自JFinalConfig ...
java代码审计--华夏ERP_v2.3
审计这个erp框架源码也是一波三折,下载好的源码运行登录后一直刷新卡BUG,idea控制台数据库查询日志框框刷,弄了好久,最后不明所以就好了。
漏洞复现刚开始路由都没整明白,并不是说它难,只是我不了解 Spring MVC 中的可变路径。
有些复现文章分析一半就没了。。
看了 Drunkbaby 审计的文章,感觉其审计的思路非常值得我学习。在代码审计中,除了通过代码了解漏洞产生的原因和利用方式,如何让我们去发现漏洞也至关重要。
师傅文章:Java 代码审计之华夏 ERP CMS v2.3
0x01 前言之前总在公众号上刷到 华夏ERP出了什么什么漏洞,那它是什么?它是立志为中小企业提供开源好用的ERP软件,国产开源的ERP系统。
那什么是erp系统,ERP(企业资源计划)说太多更容易晕,直接引入网上的例子:
假设你的企业是一家制造业公司,有生产、销售、采购等多个环节。生产部门需要知道销售部门的订单信息,销售部门需要了解采购部门的库存情况,而采购部门则需要协调生产计划。ERP系统就像一位全知全能的管理者,帮助各个部门高效协同,保持信息畅通,让整个企业运转如钟。
本文章主要分析 2.3 ...
snakeYaml反序列化分析
0x01 前言之前
0x02 snakeYaml 简介SnakeYAML 是一个用于处理 YAML 格式的 Java 库。它提供了将 YAML 数据加载到 Java 对象中的功能,以及将 Java 对象转换为 YAML 格式的功能。它就是Yaml的解析器。
引入依赖
<dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.27</version></dependency>
yaml.load 反序列化,yaml.dump 序列化
Yaml 格式数据加载成对象
String yamlStr = "key:hello yaml";Yaml yaml = new Yaml();Object ret = yaml.load(yamlStr);System.out.println(ret);System.out.println(ret.getCl ...
java代码审计——Jspxcms
0x01 前言只做php的代码审计没法满足当前的市场需求了,国内的php建站系统越来越少。主流的还是java的框架,正好这段时间开始去审计一些java的框架,做一个从php到java代码审计的过渡,理解对java框架或者组件的审计思想。
Jspxcms是灵活的、易扩展的开源网站内容管理系统(java cms,jsp cms),支持多组织、多站点、独立管理的网站群。
0x02 漏洞审计环境搭建不再说了,网上有相关文章,在 com.jspxcms.core 包下有Application启动程序,运行该程序即可启动springboot项目。
启动后访问网址:http://localhost:8080
代码很多,找控制器文件都得找半天,甚至连后台登录地址都不知道是什么,,看了框架的说明文档是http://localhost/cmscp/ 看了半天代码也没看懂是怎么判断 cmscp 为后台地址的。看来还是得学学开发了。
1. XSS漏洞主页面随便点击一个新闻,下面有留言功能,猜测这里应该会存在XSS。
前台随便注册一个账户发表评论
评论了刷新并没有弹窗,应该是存储型的xss,会写进 ...
安全狗apache4.0版绕过分析
0x01 前言起因就是在一场面试中突然问到我有没有自己分析过一些常用WAF的绕过,就很懵。于是就打算分析一下。
0x02 WAF绕过——sql注入使用的waf是安全狗Apache4.0版,网上免费下载。搭建好环境之后配合sqli-labs靶场进行测试。
输入payload :?id=1’ and 1=1–
那就把该payload拆分一下,分为几个敏感字符,例如
单引号,and = 注释符
经过测试都会正常报错或者回显
看来不是单个敏感字符的绕过,那么应该就是敏感词组合检测了,于是又经过两次测试:
http://192.168.111.137/sqli-labs-master/Less-1/?id=and 1=1
http://192.168.111.137/sqli-labs-master/Less-1/?id=and 1
均被WAF拦截,那么可以明确WAF过滤的规则就是 and+空格+字符的形式
那怎么绕过呢?
最快想到的方法就是url编码绕过,内联注释,但是都被waf拦截。url编码没法改了,所以在内敛注释上做改进,我们知道
/**/里 ...
应急响应训练——web1
0x01 前景描述小李在值守的过程中,发现有CPU占用飙升,出于胆子小,就立刻将服务器关机,这是他的服务器系统,请你找出以下内容,并作为通关条件:
1.攻击者的shell密码2.攻击者的IP地址3.攻击者的隐藏账户名称4.攻击者挖矿程序的矿池域名
账户密码:
administratorZgsf@admin.com
0x02 应急措施1.攻击者的shell密码打开虚拟机,桌面上有一个phpstudy,根据通关条件,攻击者是肯定上传了shell的,所以打开找一下
使用D盾扫描web根目录的文件,找一下后门
本来想着把源码全压缩的,结果电脑自带的安全卫士好像把木马给删了,于是就重开
扫描到一个后门,打开是一个冰蝎的马。
默认连接密码为 rebeyond,找到shell密码了,很简单。
2.找到攻击者的IP查看一下Apache的日志信息,在logs目录下,很多,ctrl f 查找一下跟shell.php有关的日志。
找到攻击者的IP为 192.168.126.1
3.找到攻击者的隐藏账户翻看文件夹找到一个酷似攻击者的隐藏账户
实际上就是,但是现在没有证据
继续翻了一下 ...
从0学代码审计——梦想CMS
0x01 前言梦想CMS的最新版本好像是21年发布的,已经很久没更新了,毕竟也比较小众。于是就拿来锻炼一下自己的代码审计能力。
环境说明:
梦想CMS 1.4.1
php 5.4.45nts
mysql 6.5
有的游览器加载不了后台,可能是版本不兼容。
0x02 路由分析梦想CMS是典型的MVC框架,弄清楚繁琐的路由是我们审计的第一步。
其实代码中都会有注释,看起来也不是那么吃力,根目录下有两个文件 index.php和 admin.php,分别为前台和后台的入口文件。
就拿前台来举例子
这里包含了两个文件。
config.inc.php 是一个配置文件,主要初始化一些前台相关的配置,注释很多,很人性化。
run.inc.php
根据前台还是后台获取不同的模板
加载一些控制器类,往下就进入到程序的入口
如果入口类型不是 extend ,就把它赋值为 Action。然后传递一个m参数,与 Action进行拼接,判断该类是否存在,如果存在就实例化,然后调用它的run方法。
这就解释了为什么前台和后台的控制器都是后缀为 Action 的格式了。
每个控制器都继承 ...
phpems代码审计——西湖论剑题目复现
0x01 前言春节之前参加的西湖论剑比赛,数据安全赛道的phpems框架代码审计几乎0解,也是最近才挖出来的洞。打算复现一下却拖到了现在。这几天也玩够了,于是重新看这道题,写下这篇文章记录一下。审计过程中的技巧与思路还是值得学习。
0x02 题目复现一个phpems框架,有登录注册功能,但是是前台登录,看一下phpems官方手册去分析路由,就能够找到phpems框架的地址(路由就不分析了,调试一下就明白)
需要知道管理员账号密码,题目附件给了sql文件,注册一个账户,发现前台账号密码和后台管理员密码存放在一个表中。
分析一下后台登陆代码逻辑
首先根据用户提交的用户名在数据库中查找该用户的所有信息,如果该用户存在就比对密码的md5值是否相同。最后就是关键的一点,判断该用户是否为管理员权限,则判断用户表的 groupid 字段是否为1。
如果存在sql注入,那么就能够修改我们注册的用户的 groupid 字段,或者修改管理员密码都能够实现后台登录。
一. 漏洞分析针对于框架的漏洞挖掘,首先分析功能点多且较为明显的地方。比如前台的登录注册。
1.反序列化当我们点击注册
首先会 ...
内网穿透与端口转发
本篇文章记录内网穿透与端口转发的几种工具使用和部分原理。
0x01.LCXLCX是一款十分经典的内网端口转发工具。基于Socket套接字,具有端口转发和端口映射的功能。目前很多杀软都已经将LCX工具加入了特征库,在实际使用的时候还需要做免杀处理。
为什么要做端口转发呢?
在内网环境中,通常会存在防火墙,限制了外部网络对内部网络的直接访问。例如限制了外部流量去连接内网机器的3389端口,那么我们就可以利用某些工具将3389端口的远程桌面服务转发到本机的4444端口,那么攻击者就可以访问4444连口来远程桌面连接。当然,这只是其中一个例子。
1.目标机有公网IP环境:
攻击机:Windows 11 IP:192.168.17.1目标机:windows server 2003 IP:192.168.17.133(有公网IP)
前提概要:
攻击者已经拿下了winserver 2003的主机权限,并且有公网IP能够直接访问。接下来攻击者需要连接3389开启远程桌面,但是防火墙限制连接3389端口的IP必须为内网地址
既然已经拿到了目标机权限,向该主机传一个LCX.exe,注意这里没做免杀
...