thinkphp 5.0.23 RCE分析
0x01 前言回头看thinkphp了,在开java代码审计之前锻炼一下php的审计能力,php和java都不能丢了。回想一下自己还没有怎么分析过框架,于是这次整了个thinkphp来分析,顺便也把phpstorm的调试配置也弄好了,也算是开始补坑了。
0x02 thinkphp RCE分析本次复现参考Y4师傅的文章:https://blog.csdn.net/solitudi/article/details/113796433
thinkphp的开发框架就不说了,其实我也不太懂,RCE的分析会说的详细点,在此只记录这次分析过程中我对于thinkphp的认识。
主要有两个poc,其实都大同小异
poc1/?s=captchaPOST_method=__construct&filter[]=system&method=get&get[]=whoami
贴个执行截图
还有类似验证码的图片,怎么来的
下断点调试,打入poc看看thinkphp内部的一个执行流程。
断点下在哪,thinkphp框架都有一个入口文件index.php,在public目录下,既然我们要 ...
DASCTF X CBCTF 2023 bypassjava 复现
前言本次比赛其他的不说,web题个人感觉质量还是挺高的(因为做不出来)赛题复现先从java题入手,bypassjava这道题涉及到的知识点挺多,复现下来能学到不少新东西。由于本题是边学边打边复现,所以文章篇幅可能比较长,所以单独写一篇文章来记录这道题的复现过程。
出题人WP:官方WP(真的很顶)
题目附件分析给的源码,代码并不是很多
常规的反序列化点,只不过自己定义了一个Filter
限制了payload的长度,pom.xml里也没有特别明显能打的依赖
只有Springboot的依赖。
复现过程jackson原生反序列化看了出题人师傅的WP才知道可以打jackson原生的反序列化,也算是唤起了我一些记忆。之前复现的2023极客巅峰的babyurl题目就用到了jackson反序列化(链接:babyurl)更早是今年 AliyunCTF 爆出来的新链子。
本来是知道Springboot的依赖自带 jackson 的
固化思维以为 jackson 依赖只能打 Json 反序列化。
简单说一下链子的流程
出发点是jdk自带的 BadAttributeValueExpExcept ...
hackme2-DHCP 打靶记录
0x01 靶场环境
局域网网段:192.168.111.0/24
攻击机 kali:192.168.111.128/24
目标机 hackme2-DHCP:192.168.111.131/24
0x02 打靶目标
拿到目标主机的ROOT权限
0x03 信息收集nmap扫描到目标主机
接着扫描开放的端口以及服务
开放了web服务和远程SSH登录,打开web网站是一个简易的登录框
并且有注册功能,可以注册账号登录进去
登录进来后是一个查询的功能,测试了几次都没回显,扫描器扫一波目录文件
渗透前的信息收集到这
0x04 Web渗透sql注入这么多可能与数据库交互的地方,第一个猜测的就是可能会存在sql注入漏洞,打算在查找书名的地方入手
空白查询的时候会显示所有的书籍信息
当我输入书籍名称的时候也会出现该书籍的相关信息
起初我试了各种闭合符以及万能密码都显示不出信息,直到测试输入一个O
这就有意思了,类似于like的模糊查询,只要输入书籍名字的前一部分查询,都能回显信息
猜测后端的代码逻辑可能是
like' " ...
AI-WEB-2.0打靶记录
靶场环境
局域网网段:192.168.111.0/24
攻击机 kali:192.168.111.128/24
目标机 AI-WEB-2.0:192.168.111.130/24
打靶目标
获得靶机的ROOT权限,拿到唯一的flag
信息收集因为是在同一网段,所以直接扫描存活主机,用nmap或者arp-scan都可以
其他两个IP为主机和kali机,所以目标机的ip为192.168.111.130,
端口开放了80和22端口,分别是web和ssh远程登录服务,那么就从web服务入手
游览器访问该网站的web服务,网站做的很简洁,就是一个登录注册的功能,而且也没有过多的js文件和有用的注释
随便注册一个,登录进去,然而登录进去之后就是一个静态页面,没有特定功能,有点难办啊
找不到什么有用的信息,那么就扫一下目录
唯一可能有用的东西就是download.php了,但是访问是空白页面
web渗透在此之前做了一些尝试,比如登录页或者注册页可能会存在sql注入
但是实际上防御的非常严格,注册页的登录框过滤了字符,应该是找不到sql注入的点的, ...
shiro721漏洞分析
0x01 前言来填坑了,拖了很久的shiro721漏洞,涉及的加密解密挺让人头疼的。注:水文,写给自己看的
漏洞影响版本是 1.2.5 <= Apache Shiro <= 1.4.1
以往版本中,AES加密的key是已知固定的,但是在1.2.5版本之后,key就是随机的了,我们不可能猜到随机的key值,但是可以绕过key构造任意密文执行反序列化
0x02 漏洞分析环境搭建就不多说了,网上有很多的教程。
Apache Shiro Padding Oracle Attack 的漏洞利用必须满足如下前提条件:
开启 rememberMe 功能;
rememberMe 值使用 AES-CBC 模式解密;
能获取到正常 Cookie,即用户正常登录的 Cookie 值;
密文可控;
Padding Oracle Attack以下思路来自此文章:https://goodapple.top/archives/217,并基于此文章做一些简单的说明
Padding 填充,AES是分组加密,消息明文会分为特定长度的分组,比如8字节或者16字节,CBC是分组模式,在分组 ...
ATT&CK红队评估(红日靶场一)
0x01 靶场环境靶场搭建这一块就不再说了,errorr0师傅写的很详细,我的环境配置就是跟着他的文章搭建的
https://blog.csdn.net/qq_51295677/article/details/124174404
网络拓扑
加上攻击机一共四台靶机
环境IP配置
kali (攻击机):192.168.19.140
Windows 7 (web服务器,两网卡):192.168.19.144(外网和kali连通)、192.168.5.128(内网)
Windows 2008 (域控):192.168.5.130
Win2k3 (域管):192.168.5.129
0x02 外网渗透外网信息收集win7作为一台服务器暴露在外网,与kali机存在同一网段
用nmap扫描网段,找到外网服务器的真实IP
外网IP为144结尾,那么再用nmap详细扫描一下开放的端口以及服务
开的端口挺多,主要就是web服务,从扫描信息来看,得知服务器是一个Win32的机器
访问服务器IP的80端口
主页就是一个phpStudy的探针
底部可以连接数据库,可以试一下账号密码,mysql默 ...
Spring内存马浅析
前端时间学习完tomcat相关的内存马,由于一道ctf题的契机,打算再了解一下spring的内存马构造,于是有了下文,文章也是拖了很久才完成。
0x01 Spring概述Spring框架是一个开源的轻量级的java应用框架,它提供了一个全面的编程和配置模型,用于构建现代的、可扩展的Java应用程序。Spring的设计目标是提高Java应用程序的开发速度、模块化性、可维护性和测试性。
Spring有几种特性
依赖注入
依赖注入只是一个模糊的概念,你不用从代码层面上去创建对象,只需要通过在配置文件里描述对象创建的过程,以及创建对象所需要的条件,之后容器(也就是IOC容器)会读取xml配置文件的内容,并将它们组装成一个对象。
面向切面编程(AOP)
AOP也就是面向切面编程,顾名思义,实现一个切面,比如你定义好了一个类,在这个类中间切一刀,然后在这个地方添加一些新的东西,在实例化这个类或者调用这个类的某些方法的时候就会去执行我们添加的东西。有点类似于tomcat里面的Filter过滤器。
IOC容器
IOC翻译过来也就是控制反转,不是一种技术,而是设计思想。在传统的java SE设计模式中, ...
结合反序列化注入tomcat内存马
0x01 前提概述通过前几个内存马的学习我们可以知道,将内存马写在jsp文件上传并不是传统意义上的内存马注入,jsp文件本质上就是一个servlet,servlet会编译成class文件,也会实现文件落地。借用木头师傅的一张图
结合反序列化注入内存马是动态注入内存马的常用方法,然而通过反序列化注入的方式没有jsp文件的request内置类,所以获取回显的方式我们也需要考虑,在此写下这篇文章分析总结反序列化注入的方法细节。
0x02 搭建反序列化环境反序列化就用CC链来打,引入springboot和commons-collections还有javassist库的依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> <version>2.5.6</version></dependency><depend ...
初识Java Agent内存马
这个Agent内存马和之前分析的不太一样,毕竟涉及到java Agent这种我之前没有接触过的新技术,所以刚开始学起来可能会有些摸不着头脑。在此写一篇文章记录我初学java Agent内存马的一些认识和理解。
0x01 认识Java Agent在 jdk 1.5 之后引入了 java.lang.instrument 包,该包提供了检测 java 程序的 Api,比如用于监控、收集性能信息、诊断问题,通过 java.lang.instrument 实现的工具我们称之为 Java Agent ,Java Agent 能够在不影响正常编译的情况下来修改字节码,即动态修改已加载或者未加载的类,包括类的属性、方法
一般情况下,我们要修改java文件的内容就必须重新编译,而java agent技术可以在字节码层面上修改类,方法等,也有点像代码注入的方式。而本文要说的Agent内存马就利用动态修改字节码来将特定类的特定方法添加恶意代码。
java agent也只是一个java类,只不过它和普通java类不一样,它是以 premain 和 agentmain 方法作为入口,而不是main 方法。
...
java内存马连续剧——Valve内存马
0x01 什么是Valve我们知道,tomcat是由连接器(Connector)和容器(Container)两部分组成。Connector主要作用是监听并且转换为socket请求,然后再交给Container处理,Container里有四类子容器,分别为Engine,Host,Context,Wrapper,这四种容器层层嵌套,我们需要将消息传递到最底层了Wrapper,也就是Servlet里,该怎么传递?
tomcat的管道机制也称pipeline机制,pipeline就是管道,上面所说的四个容器都有自己的pipeline组件,每个Pipeline组件上至少会设定一个Valve(也就是阀门)我们可以把http请求比作在pipeline(管道)流淌的水,那么阀门(Valve)就可以用来在管道中实现各种功能,如控制流速等。通过管道机制,我们能按照需求,给在不同子容器中流通的请求添加各种不同的业务逻辑,并提前在不同子容器中完成相应的逻辑操作。
Pipeline 中会有一个最基础的 Valve ,为basic Valve,在最末端执行
我们可以自己尝试写进去一个Valve
0x02 Va ...