黑客网站入侵 编程 搭建 渗透 破解
3.64K subscribers
418 photos
13 links
Download Telegram
pojo就是我们当时 out.writeObject 进去的 LinkedHashMap。前两个类型的if里面也进不去。

注意一下这个isArray(),一会儿下个漏洞的时候会用到它。

然后就是获取class,对应的value进行实例化,然后调用每一个entry的key对应的set方法,然后value为值。

NativeJava修复

配置文件中判断是否支持Java反序列化,默认为false。
dubbo协议。其实这里打的就是hessian反序列化这个已经比较熟悉了。 看一下这个数据包。
典型的三次握手和四次挥手。dabb是dubbo的协议头。里面有hessian序列化的数据,然后 c 发送。s 确认收到。然后s再发。

这个漏洞主要是因为hessian引起的。

com.alibaba.com.caucho.hessian.io.Hessian2Output#writeString(java.lang.String)

就是在provider解析数据的时候,本应该是in.readUTF()。

但是我们构造数据包的时候用的是 out.writeObject(payload());

结果provider解析异常,然后会触发 payload() 的toString 方法。

如果此时如果有toString2rce的gadget。就会有被攻击的风险。
array_walk

array_walk 是 PHP 中的一个内置函数,用于对数组中的每个元素应用用户自定义的回调函数。它可以遍历数组,并将数组的键和值传递给回调函数进行处理。array_walk 不会返回一个新的数组,而是直接修改原始数组。
● $array:要遍历的数组(按引用传递,可以直接修改)。

● $callback:用户自定义的回调函数,接收两个参数(值,键),或者三个参数(值,键,$userdata)。

● $userdata(可选):传递给回调函数的额外数据。
DataGear 是一款开源免费的数据可视化分析平台,自由制作任何您想要的数据看板,支持接入 SQL、CSV、Excel、HTTP 接口、JSON 等多种数据源。
支持运行时接入任意提供 JDBC 驱动的数据库,包括 MySQL、Oracle、PostgreSQL、SQL Server 等关系数据库,以及 Elasticsearch、ClickHouse、Hive 等大数据引擎
在 FreeMarker 模板引擎中,new 是一个内置的关键字,用来创建新的实例对象。这个功能通常用于实例化 Java 类,并可以在创建对象时直接调用构造函数来初始化其属性。通过在模板中使用 new 关键字,你可以轻松地创建 Java 对象,并将其用在模板的渲染过程中,以支持动态数据的展示和处理。
freemarker.template.utility.ObjectConstruct 是 FreeMarker 模板引擎中的一个辅助类,主要用于创建 Java 对象,并将其转换为 FreeMarker 可以识别和处理的模板数据模型。这使得模板可以动态地实例化对象,并将它们传递给模板进行渲染。

freemarker.template.utility.JythonRuntime 是 FreeMarker 模板引擎中的一个辅助类,它用于与 Jython(一个基于 Java 的 Python 解释器)进行交互。通过这个类,FreeMarker 模板可以执行 Python 脚本,从而在模板中动态执行 Python 代码,并将结果用于模板渲染。
该方法重写了 Writer 类中的 flush 和 close 方法。在此实现中,接收到的字符序列会被附加到一个 StringBuilder 缓冲区中。当调用 flush 时,会执行 interpretBuffer 方法,该方法从缓冲区 buf 中提取字符串内容,并通过 exec 执行这些内容作为 Python 代码。
<#assign> 标签用于在模板中定义变量。通过使用 <#assign> 标签,你可以将一个值赋给变量,并在模板的其他部分引用和使用这个变量。这使得在模板中能够创建和操作变量,从而支持更复杂的逻辑和功能。
导入表(Import Directory)存储了有关PE文件在运行的生命周期中所需要的API以及相关的dll模块。
有些AV/EDR会根据
导入表中记录的API来判定一个程序是否为高危文件,比如说一个文件在1MB以内,出现了 VirtualAlloc、VirtualProtect、CreateThread 等敏感API时,很大概率会判定为高危文件。

很多工具可以查看文件的导入表,常见的有studyPE+、IDA。

在本节中,我将详细介绍动态获取API函数的三种方式,它们分别是

1. GetModuleHandle+GetProcAddress 的组合获取所需的API函数指针

2. 使用 PEB 获取 GetModuleHandle 和 GetProcAddress 的函数指针,再利用 GetModuleHandle+GetProcAddress 获取所需要的API函数指针

3. 使用 PEB 获取所需要的API函数指针

网上也有人用 LoadLibrary 作为 GetModuleHandle 的平替,其效果相差无几,只是它们的机制有些区别,比如说在 自举的代码幽灵——反射DLL注入(Reflective DLL Injection) 中我们就是利用 LoadLibrary+GetProcAddress 给我的恶意DLL加载相应的DLL获取需要的API函数指针,值得关注的一点是恶意DLL是由其自身的导出函数 ReflectiveLoader 完成自身的加载,这意味着相应的DLL并没有加载到自身的地址空间中,所以需要利用 LoadLibrary 而不应该使用 GetModuleHandle。
首先,MessageBoxW 这个弹窗API是由user32.dll导出的,我们直接使用API,编译后查看导入表信息,发现确实存在 MessageBoxW 这个API的记录
查看其导入表,发现没有 MessageBoxW 的相关信息。
1. 使用加密版将shellcode加密,并输出

2. 将shellcode保存到shellcode.txt

3. 用VS的MSVC或Cling-cl编译解密版的代码,注意编译和shellcode位数保存一致,如shellcode是x64,编译的时候要用x64位。

4. 将编译好的exe和shellcode.txt放到目标上,保证这两个文件在同一个目录
bshare插件引发的网站劫持事件剖析

QAX通报的“bshare分享插件被黑?百万级网站被劫持事件”报道的大概逻辑如下:

● 大量网站引用了名为bshare的分享按钮插件,该插件对应的服务域名为static.bshare.cn;

● 网站使用bshare组件时,需要在原网页中插入bshare网站的js资源;

● QAX通过对域名static.bshare.cn的分析,确认这是一起通过抢注过期通用插件服务域名来实施大范围网页劫持的攻击事件;

● 用户访问被嵌入了恶意js资源的网站时,网页内容会被劫持至同一色情网页处;
网页被嵌入第一段JS代码

为了搞清楚其劫持原理,笔者尝试从代码层面对其整个劫持原理进行了研究剖析。

通过查看其网页源代码,我们发现在源代码中确实存在嵌入第三方js资源代码的情况。

被嵌入的JavaScript代码如下:

1
2
<script language="javascript" src="https://www.zuizhongjs.com/js/24/12/7/ky1.js" type="text/javascript"></script>
劫持至博彩网站

通过分析,网页在成功加载资源后,即会从此响应数据中提取最终的博彩网站的资源地址,随后对其进行加载。

为了探究此次网页劫持的影响范围,笔者尝试基于网上平台进行了扩线分析,发现存在加载恶意js资源的网站确实还不少。
了解Qemu模拟运行Linux内核的基本执行流程

QEMU 是一个开源模拟器,广泛用于虚拟化不同架构的操作系统。在启动 Linux 内核时,QEMU 通过 qemu-system-x86 命令初始化虚拟机环境。这一过程包括设置 CPU、内存和设备模拟,确保虚拟机能够运行目标操作系统。

通过QEMU启动内核以及加载文件系统:

内核加载与执行: QEMU 加载内核映像文件,通常为 bzImage(压缩的内核)或 vmlinux(未压缩的内核)。根据 QEMU 文档,用户可以通过 -kernel 选项指定内核文件路径。内核加载后,会自动解压(如果为 bzImage),然后开始执行,完成硬件初始化(如设置内存结构、加载驱动)。
Initramfs(Initial RAM Filesystem)是 Linux 启动过程中的临时根文件系统,通常以 initramfs.cpio 格式存在。根据 Gentoo Wiki,其主要目的是为内核提供一个最小化的用户空间环境,以加载必要的驱动和挂载真实根文件系统。

● 加载与挂载: 内核检测到 Initramfs 文件后,将其解压并挂载为内存中的临时根文件系统(/)。这一过程通过 cpio 归档格式实现,内容包括基本的 shell、工具(如 busybox)和配置文件。

● 作用: Initramfs 特别适用于需要特殊驱动(如 RAID、LVM 或加密文件系统)的系统。例如,Debian Wiki 指出,Initramfs 允许在挂载真实根文件系统之前加载内核模块,增强了启动的灵活性。

● 解释补充: 用户提供的图表正确描述了这一阶段,但需要强调 Initramfs 是启动过程中的关键步骤,尤其在复杂存储配置下(如 USB 启动或加密分区)。
不同类型的渗透测试包括网络服务、应用程序、客户端、无线、社会工程和物理。

渗透测试可以外部或内部进行,以模拟不同的攻击媒介。

根据每个测试的目标,渗透测试人员可能对他们试图突破的环境和系统有或没有预先了解。

这分为黑盒、白盒和灰盒渗透测试。
网络渗透测试的阶段
1. 规划和侦察:这一初始阶段涉及收集尽可能多的有关目标网络的信息。其中包括确定范围、目标和交战规则。侦察可以是被动的(例如,从公共来源收集信息),也可以是主动的(例如,网络扫描)。

2. 扫描:下一阶段涉及识别开放端口、服务和潜在漏洞。Nmap 和 Nessus 等工具通常用于扫描和漏洞评估。

3. 获取访问权限:此阶段涉及利用已识别的漏洞获取网络访问权限。技术可能包括 SQL 注入、网络钓鱼和利用未打补丁的软件。

4. 保持访问权限:一旦获得访问权限,测试人员就会尝试保持其在网络中的存在。这可能涉及安装后门或创建用户帐户以确保持续访问。

5. 分析和报告:测试结果将汇编成详细报告。报告包括已识别的漏洞、利用方法、潜在影响以及补救建议。

6. 补救和重新测试:解决漏洞后,进行重新测试以确保问题得到有效缓解
在内网渗透中,当攻击者获取到内网某台机器的控制权后,会以被攻陷的主机为跳板,通过收集域内凭证等各种方法,访问域内其他机器,进一步扩大资产范围。通过此类手段,攻击者最终可能获得域控制器的访问权限,甚至完全控制基于Windows操作系统的整个内网环境,控制域环境下的全部机器。

执行net share命令,可以获得Windows默认开启的网络共享,其中C$为C盘共享,ADMIN$为系统目录共享,还有一个IPC$共享
在域渗透中、作为渗透测试人员,获取域控的权限基本上可以获取整个内网的权限。可以通过定位域管理员所登录的服务器,利用漏洞获取服务器system权限,找到域管理的账号、进程或是身份验证令牌,从而获取域管理员权

环境配置
设置pc1主机为10.10.10.158

设置域控IP地址为10.10.10.137

搭建完成
配置用户,添加test用户,密码为pass1234

通过高权限读取本地密码
当域管理员在域成员机器上登录进行工作的时候,会将明文密码保存在本地进行的lsass.exe,可以通过mimikatz来读取到本地的明文密码
CLAP是一个强化学习PPO 代理,在模拟计算机网络环境中执行渗透测试
网络攻击模拟器 (NASim) 是一个模拟计算机网络,具有漏洞、扫描和漏洞利用,旨在用作 AI 代理的测试环境和应用于网络渗透测试的规划技术。

然而,与原始论文相比,此 repo 做出了以下更改

基于CleanRL开发
为 POMDP 场景添加 LSTM
由于循环无模型强化学习可以成为许多 POMDP 的强大基线
为了支持 NASim 2D 观察空间,Transformer已实施为先例

用于Conda管理python环境和Poetry管理包。开始

克隆此 repo:

git clone /github.com/yyzpiero/RL4RedTeam.git
创建 conda 环境:

conda create -p ./venv python==X.X
并使用 poetry 安装所有 Python 包:

poetry install
后渗透框架

后渗透框架可在网络渗透测试期间轻松保持对受感染目标的访问和控制。以下在渗透测试生涯中可能遇到的一些框架。

钴攻击

Cobalt Strike用于模拟对手和红队行动的黄金标准后开发和命令与控制 (C2) 框架。包含许多功能,可模拟现实世界威胁行为者的战术、技术和程序 (TTP),并且可通过其资源和社区工具包进行扩展。
通过对攻击过程的分析,可以发现,整个攻击流程实际上仅包含两个步骤:诱导复制和诱导粘贴。因此,使用 Procmon 进行监控时,发现当用户通过 Win+R 打开运行窗口并输入命令时,系统会在注册表路径 HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerRunMRU 下创建新的键值,并将命令写入。