本文详细介绍了Java安全中的URLDNS反序列化链的原理和应用

URLDNS 简介

URLDNS 是 ysoserial 中一个利用链的名字,但准确来说,这个其实不能称作利用链。因为其参数不是⼀个可以利用的命令,而仅为⼀个 URL,其能触发的结果也不是命令执行,而是⼀次 DNS 请求,该 Payload 的目的只有一个,就是确定目标系统上是否存在可控的readObject()方法,即是否存在 Java 反序列化漏洞,该链具有以下的特点:

  • 不限制 JDK 版本,使用 Java 内置类,对第三方依赖没有要求
  • 目标无回显,可以通过 DNS 请求来验证是否存在反序列化漏洞
  • URLDNS 利用链,只能发起 DNS 请求,并不能进行其他利用

ysoserial:Java 反序列化工具,利用它通过指定利用链,获取恶意代码序列化之后的内容,将内容发送给目标,目标对内容发序列化进而触发恶意代码

阅读全文 »

本文介绍 Python 装饰器的使用和原理,并且编写了一个简单的插件式聊天 Bot 框架

装饰器是什么

装饰器本质上是一个 Python 函数或类,它可以让其他函数或类在不需要做任何代码修改的前提下增加额外功能,装饰器的返回值也是一个函数或类对象

它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景,装饰器是解决这类问题的绝佳设计。有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码到装饰器中并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。

阅读全文 »

Python asyncio 异步协程 I/O

asyncio 是 Python 的一个内置库,主要用于编写单线程并发代码,通过协程实现异步 I/O 操作。它在 Python 3.4 版本中引入,提供了基于事件循环的并发模型,本文介绍了如何使用 Python asyncio,以及举出几个常见的应用场景

基本概念

阻塞与非阻塞

阻塞状态指程序未得到所需计算资源时被挂起的状态。程序在等待某个操作完成期间,自身无法继续干别的事情,则称该程序在该操作上是阻塞的。 常见的阻塞形式有:网络 I/O 阻塞、磁盘 I/O 阻塞、用户输入阻塞等。阻塞是无处不在的,包括 CPU 切换上下文时,所有的进程都无法真正干事情,它们也会被阻塞。如果是多核 CPU 则正在执行上下文切换操作的核不可被利用。

阅读全文 »

红日靶场二的流程笔记

本文详细记录了对红日靶场二的渗透过程,包括外网打点、内网横移、权限维持等

文章说明

环境说明:

  1. 环境搭建部分不介绍
  2. 在打靶场前我已经在这个靶场做过很多攻击测试,在某些地方可能会和原版靶场不同
  3. 因为环境不同,可能某些攻击无法在原本靶场复现

网络配置:

  1. 10.10.10.xxx(不可访问外网):DC、PC、WEB
  2. 192.168.12.xxx(可访问外网):PC、WEB
阅读全文 »

对 Kerberos 认证的简单介绍

Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。

本文结合 windows server 操作系统解释 Kerberos 如何在 windows server 上运作,并提出几个 Kerberos 的安全问题

认证流程

Kerberos 认证由 KDC(Key Distribution Center)服务提供,以下为 Kerberos 认证流程:

阅读全文 »