Fulcrum

IppSec's walkthrough can be found here: https://www.youtube.com/watch?v=46RJxJ-Fm0Y

Tags: XML External Entity, XXE, SSRF

Recon

nmap -sC -sV -p- -oA nmap/initial 10.10.10.62

Starting Nmap 7.92 ( https://nmap.org ) at 2022-06-17 20:53 BST
Nmap scan report for 10.10.10.62
Host is up (0.011s latency).
Not shown: 995 closed tcp ports (conn-refused)
PORT     STATE SERVICE VERSION
4/tcp    open  http    nginx 1.18.0 (Ubuntu)
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_http-server-header: nginx/1.18.0 (Ubuntu)
22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA)
|   256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:29:92:74:1c:1f (ECDSA)
|_  256 18:cd:9d:08:a6:21:a8:b8:b6:f7:9f:8d:40:51:54:fb (ED25519)
80/tcp   open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Input string was not in a correct format.
| http-methods: 
|_  Potentially risky methods: TRACE
88/tcp   open  http    nginx 1.18.0 (Ubuntu)
|_http-title: phpMyAdmin
| http-robots.txt: 1 disallowed entry 
|_/
|_http-server-header: nginx/1.18.0 (Ubuntu)
9999/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-title: Input string was not in a correct format.
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: nginx/1.18.0 (Ubuntu)
56423/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-title: Site doesn't have a title (application/json;charset=utf-8).
|_http-server-header: Fulcrum-API Beta
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Initial XXE Detection

Port 56423 has a custom heartbeat API. The default response of Ping Pong can be modified to Ping Ping by sending a simple XML statement.

Standard Request/Response

Modified Request/Response

Blind XXE PoC

This behavior indicates that the site is likely vulnerable to XXE. As a proof of concept we can attempt to request an external document on a remote system under our control by using a Blind XXE Payloadarrow-up-right. The server response hangs but netcat recieves a request for /notes.

Successful PoC For Blind XXE

XXE Get Files

Last updated