代码审计
文章平均质量分 94
java、php等语言代码审计的笔记
hldfight
微信公众号:小胖的安全之旅
展开
-
log4j官方漏洞修复史(更新至2.17.1/CVE-2021-44832)
0x00 前言自从log4j2.14.1版本爆出漏洞后,官方截止目前为止,共发布了3个稳定版本,分别是15.0、16.0、17.0。本篇文章就分析一下每个版本都做了哪些事情,以此来评估每个版本升级的必要性。0x01 2.15.0版本1.1 修复方案此版本是为了修复最初的 CVE-2021-44228漏洞,它的修复方式总结如下:1、默认禁用msg lookup功能2、在org.apache.logging.log4j.core.net.JndiManager#lookup方法中限制了ldap服务原创 2021-12-23 14:35:26 · 13218 阅读 · 1 评论 -
ThinkPHP的SQL注入问题
ThinkPHP常见SQL注入问题0x00 前言0x01 where()方法 + exp表达式1.1 漏洞代码1.2 漏洞利用1.3 漏洞原理1.4 漏洞修复0x02 数据查询方法参数可控导致可拼接操作符2.1 漏洞代码2.2 漏洞利用2.3 漏洞原理2.4 漏洞修复0x03 where()方法 + bind表达式 + save()方法3.1 漏洞代码3.2 漏洞利用3.3 漏洞原理3.4 漏洞修复0x04 order()方法4.1 漏洞代码4.2 漏洞利用4.3 漏洞原理4.4 漏洞修复0x05 参考文章原创 2020-11-22 22:07:51 · 6505 阅读 · 1 评论 -
Java反射与Golang反射简单对比
0x00 前言前段时间学习了golang的基础语法,发现其反射的概念与Java的差别挺大,做个简单对比,记录一下。为了测试Java反射,创建如下User类:public class User { public String username; private String password; public User() {} public User(String username, String password) { this.username = u原创 2020-08-15 15:35:41 · 2890 阅读 · 2 评论 -
Spring RCE漏洞分析2(CVE-2018-1273)
0x00 前言继续分析Spring的历史漏洞,本篇记录Spring Data Commons的远程代码执行漏洞(CVE-2018-1273)的分析。0x01 环境搭建使用的Spring Data Example Projects提供的示例代码。但该项目中包含有15个子模块,如果将其整体导入IDEA,则需要下载所有模块中的依赖,显然这是没有必要的。通过参考这篇文章,发现只需导入web模块中的...原创 2020-05-07 00:36:52 · 1989 阅读 · 1 评论 -
Spring RCE漏洞分析1(CVE-2018-1270)
0x00 前言趁着五一休息,分析了一下Spring的历史漏洞,这里记录一下对Spring-Messaging远程代码执行漏洞(CVE-2018-1270)的分析。该漏洞涉及到如下概念:1、WebSocket协议,是HTML5提供的一种可在单个TCP连接上进行全双工通讯的协议。即允许服务端主动向客户端推送数据,详情可以参考这里,讲的挺好的。2、SockJS,一个JavaScript库,它在浏览...原创 2020-05-04 16:44:29 · 8270 阅读 · 0 评论 -
struts2漏洞分析(S2-057为例)
0x00 前言利用空闲时间分析了一下struts2框架的历史高危漏洞,发现除了S2-052(XStream反序列化漏洞)以外,其他漏洞的本质都是由于框架执行了恶意用户传进来的OGNL表达式,从而造成远程代码执行。只不过需要精心构造不同的OGNL代码而已。发生OGNL表达式注入的点也是多种多样,如:请求参数名、请求参数值、content-type请求头、文件上传时的filename值、url地址...原创 2020-04-15 21:07:04 · 2916 阅读 · 1 评论 -
Fastjson历史漏洞分析
0x00 初识Fastjson前段时间分析了一下Fastjson的历史漏洞,在这里做下记录。为了方便切换Fastjson的版本,我用idea新建了一个maven项目,在pom.xml中引入Fastjson:<dependencies> <dependency> <groupId>com.alibaba</gro...原创 2020-04-07 21:51:15 · 1755 阅读 · 0 评论 -
ysoserial exploit/JRMPListener原理剖析
ysoserial exploit/JRMPListener原理剖析0 前言1 payloads/JRMPClient1.1 Externalizable1.2 生成payload1.3 gadget链分析2 exploit/JRMPListener3 总结0 前言上一篇文章讲了ysoserial exploit/JRMPClient的原理,本篇接着讲一下ysoserial exploit/J...原创 2020-03-19 23:38:09 · 2360 阅读 · 1 评论 -
ysoserial exploit/JRMPClient原理剖析
0 前言ysoserial中的exploit/JRMPClient是作为攻击方的代码,一般会结合payloads/JRMPLIstener使用,攻击流程就是:1、先往存在漏洞的服务器发送payloads/JRMPLIstener,使服务器反序列化该gadget后,会开启一个rmi服务并监听在设置的端口2、然后攻击方在自己的服务器使用exploit/JRMPClient与存在漏洞的服务器...原创 2020-03-15 20:53:42 · 2929 阅读 · 0 评论 -
通过动态调试了解Java RMI底层通信
0 前言 为了明白ysoserial中提供的exploit中的JRMPClient与JRMPListener攻击原理,于是去动态调试了Java RMI来了解其底层通信原理,在此做个记录:1 RMI服务端首先先调试RMI服务端的代码,如下是我编写的简易RMIServer代码:public class RMIServer { public stati...原创 2020-03-14 23:07:17 · 916 阅读 · 0 评论 -
java命令执行的三种方式
0 前言本篇文章总结一下java命令执行的三种方式,并且测试了在win环境一次方法调用中可同时执行多个命令的方式。1 java.lang.Runtimepublic class RuntimeTest { public static void test1() throws IOException{ Runtime runtime = Runtime.getR...原创 2020-03-12 16:21:01 · 12498 阅读 · 0 评论 -
JEP 290之后攻击Java RMI服务
1 RMI基础1.1 概述 远程方法调用是分布式编程中的一个基本思想。实现远程方法调用的技术有很多,例如WebService,两者的区别就是:WebService是独立于编程语言的,它可以跨语言实现项目间的方法调用,而Java RMI是专用于Java环境的。 远程服务器实现具体的Java方法并提供接口,客户端本地仅需根据接口类的定义,提供相应的参数即可调用远...原创 2020-03-12 12:06:46 · 1551 阅读 · 0 评论 -
Padding Oracle Attack(Java代码实现攻击)
之前看到过一个关于Apache Shiro的一个漏洞,它的Cookie使用AES-128-CBC模式进行加密,导致攻击者可以通过Padding Oracle攻击方式构造序列化数据进行反序列化攻击,这里可以复现该漏洞。但今天的主题不是Apache Shiro,这个以后会讲到。 今天主要讲下Padding Oracle攻击的原理,元旦放假一天,没事干,就自己用Java代码复现了下这...原创 2020-03-12 11:22:23 · 1101 阅读 · 0 评论