Kingkk's Blog

菜的要死

CVE-2022-22965 SpringFramework 漏洞分析

前言好久没写博客了,正好最近出现了一个比较严重的Spring框架漏洞,有几个点还蛮有意思的,花了一些时间看了下。 官方通告中的漏洞利用条件如下(实际中可能会有更多细小的出入点) jdk9+ spring tomcat war部署方式 漏洞复现环境搭建 docker: tomcat8-jdk11 spring: 5.2.12.RELEASE 关于springboot如何搭建部署war包,......

从JS源码层面看node启动过程

前言为什么要写“从JS源码层面”呢,因为众所周知,node是由C++赋予了其控制操作系统的能力,因此node服务本身自然也是从C++层面开始启动,但本文目前暂不涉及C++相关内容,仅从JS代码层面来看下node服务的启动过程。主要是为了弄清主模块的加载、require导入模块的加载 以及preload模块的加载过程。三个文件的代码如下。 123456789// index.jsrequire......

runc容器逃逸漏洞分析(CVE-2021-30465)

前言虽然漏洞的利用难度比较高,但是个人感觉还是很有意思的一个洞,值得记录一下。不过分析起来可能会像是一篇译文23333,欢迎直接阅读原文。 http://blog.champtar.fr/runc-symlink-CVE-2021-30465/ 漏洞利用1、首先需要创建多个容器,一个正常启动的容器c1,以及多个无法正常启动(即image为donotexists.com/do/not:e......

docker容器核心技术与实现简介

Namespacesnamespace是linux提供的一种操作系统级别的资源隔离。 https://man7.org/linux/man-pages/man7/namespaces.7.html 命名空间是被不断完善加入到linux内核当中的,这里介绍几个常用的namespace(runc里会多一个Cgroup namespace) UTS(CLONE_NEWUTS):主要用于hostn......

配置不当导致的容器逃逸

前言代码安全搞不动了,这几天又开始摸鱼k8s,记录下一些由于配置不当导致的容器逃逸,以及一些利用方式和原理。 privileged特权模式privileged简介docker中提供了一个--privileged参数,这个参数本身最初的目的是为了提供在docker中运行docker的能力https://www.docker.com/blog/docker-can-now-run-within-......

静态程序分析笔记

前言本来2020年就写完了的,但最近发生了比较多事情,就一直也忘了更新,希望2021剩下的日子能好一些吧。 说实话一部分过程内的数据流分析算法现在也没搞太懂,凑活看吧,仅供参考。 AST & IR通常来说,一个程序从源码(Source Code)到二进制程序/机器码(Machine Code)通常需要经过如下几个步骤 编译器在获取到源码之后,会先对源代码进行词法分析(Lexica......

从MethodHandle到InvokeDynamic指令

前言之前在用ASM处理字节码的时候,发现rt.jar中居然有比较多的invokedynamic指令,并且ASM对该指令提供了一个单独的结构体来描述InvokeDynamicInsnNode,甚至不能一眼看出这个指令具体调用了个什么方法。 之后便翻了几天文档和一些文章,在这里做一下记录,文章难免有疏漏,欢迎指出。 MethodHandleMethodHanlde是Java7之后出现的API,以......

ASM历险记

前言之前就一直说着要学ASM,但每次看着一堆JVM指令就脑壳疼,前段时间算是静下心来看了一遍文档,不得不说ASM的文档写的确实很赞,和Soot简直鲜明对比。 本文主要内容来自于ASM4官方文档,推荐直接看原文档,本文仅做个人学习记录,不保证正确性。 https://asm.ow2.io/asm4-guide.pdf JVM基础类结构 如上就是一个类文件的大体文件结构(其中Attribut......

CVE-2020-14644分析与gadget的一些思考

前言前段时间Weblogic出了七月份的补丁,其中比较受关注的有4个9.8评分的RCE,目前14625和14645在网上也都有了详情,话说有个老哥一己之力包了其中三个属实nb。 之前也有几个朋友问起14644的详情,正好一起分享下14644的利用,和之前疫情半年在家挖gadget的一些思考。 CVE-2020-14644和2883、14645不同的是,这应该算是一条全新的gadget,并不......

Java中的反射

前言个人对反射的理解就是在运行时动态去获取、操作Java程序,反射赋予了Java这门静态语言动态执行的能力。反射的对象是在JVM中运行时的方法、属性、构造函数。在现代化Java框架中都不可避免的运用到了反射,赋予程序更好的动态执行能力。过于随意的反射操作也会带来一些安全隐患,比如反序列化中知名的cc链、weblogic中的coherence链,以及tomcat中rmi工厂类的绕过payloa......