Brainstorm
Vietnamese version
Enumeration
└─$ nmap -sC -sV -Pn 10.10.143.81
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-01 11:58 EST
Stats: 0:02:43 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 66.67% done; ETC: 12:02 (0:01:14 remaining)
Nmap scan report for 10.10.143.81 (10.10.143.81)
Host is up (0.23s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: TIMEOUT
| ftp-syst:
|_ SYST: Windows_NT
3389/tcp open tcpwrapped
|_ssl-date: 2025-03-01T17:01:44+00:00; 0s from scanner time.
| rdp-ntlm-info:
| Target_Name: BRAINSTORM
| NetBIOS_Domain_Name: BRAINSTORM
| NetBIOS_Computer_Name: BRAINSTORM
| DNS_Domain_Name: brainstorm
| DNS_Computer_Name: brainstorm
| Product_Version: 6.1.7601
|_ System_Time: 2025-03-01T17:01:13+00:00
| ssl-cert: Subject: commonName=brainstorm
| Not valid before: 2025-02-28T15:30:13
|_Not valid after: 2025-08-30T15:30:13
9999/tcp open abyss?
| fingerprint-strings:
| DNSStatusRequestTCP, DNSVersionBindReqTCP, FourOhFourRequest, GenericLines, GetRequest, HTTPOptions, Help, JavaRMI, RPCCheck, RTSPRequest, SSLSessionReq, TerminalServerCookie:
| Welcome to Brainstorm chat (beta)
| Please enter your username (max 20 characters): Write a message:
| NULL:
| Welcome to Brainstorm chat (beta)
|_ Please enter your username (max 20 characters):
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port9999-TCP:V=7.95%I=7%D=3/1%Time=67C33CBA%P=x86_64-pc-linux-gnu%r(NUL
SF:L,52,"Welcome\x20to\x20Brainstorm\x20chat\x20\(beta\)\nPlease\x20enter\
SF:x20your\x20username\x20\(max\x2020\x20characters\):\x20")%r(GetRequest,
SF:63,"Welcome\x20to\x20Brainstorm\x20chat\x20\(beta\)\nPlease\x20enter\x2
SF:0your\x20username\x20\(max\x2020\x20characters\):\x20Write\x20a\x20mess
SF:age:\x20")%r(HTTPOptions,63,"Welcome\x20to\x20Brainstorm\x20chat\x20\(b
SF:eta\)\nPlease\x20enter\x20your\x20username\x20\(max\x2020\x20characters
SF:\):\x20Write\x20a\x20message:\x20")%r(FourOhFourRequest,63,"Welcome\x20
SF:to\x20Brainstorm\x20chat\x20\(beta\)\nPlease\x20enter\x20your\x20userna
SF:me\x20\(max\x2020\x20characters\):\x20Write\x20a\x20message:\x20")%r(Ja
SF:vaRMI,63,"Welcome\x20to\x20Brainstorm\x20chat\x20\(beta\)\nPlease\x20en
SF:ter\x20your\x20username\x20\(max\x2020\x20characters\):\x20Write\x20a\x
SF:20message:\x20")%r(GenericLines,63,"Welcome\x20to\x20Brainstorm\x20chat
SF:\x20\(beta\)\nPlease\x20enter\x20your\x20username\x20\(max\x2020\x20cha
SF:racters\):\x20Write\x20a\x20message:\x20")%r(RTSPRequest,63,"Welcome\x2
SF:0to\x20Brainstorm\x20chat\x20\(beta\)\nPlease\x20enter\x20your\x20usern
SF:ame\x20\(max\x2020\x20characters\):\x20Write\x20a\x20message:\x20")%r(R
SF:PCCheck,63,"Welcome\x20to\x20Brainstorm\x20chat\x20\(beta\)\nPlease\x20
SF:enter\x20your\x20username\x20\(max\x2020\x20characters\):\x20Write\x20a
SF:\x20message:\x20")%r(DNSVersionBindReqTCP,63,"Welcome\x20to\x20Brainsto
SF:rm\x20chat\x20\(beta\)\nPlease\x20enter\x20your\x20username\x20\(max\x2
SF:020\x20characters\):\x20Write\x20a\x20message:\x20")%r(DNSStatusRequest
SF:TCP,63,"Welcome\x20to\x20Brainstorm\x20chat\x20\(beta\)\nPlease\x20ente
SF:r\x20your\x20username\x20\(max\x2020\x20characters\):\x20Write\x20a\x20
SF:message:\x20")%r(Help,63,"Welcome\x20to\x20Brainstorm\x20chat\x20\(beta
SF:\)\nPlease\x20enter\x20your\x20username\x20\(max\x2020\x20characters\):
SF:\x20Write\x20a\x20message:\x20")%r(SSLSessionReq,63,"Welcome\x20to\x20B
SF:rainstorm\x20chat\x20\(beta\)\nPlease\x20enter\x20your\x20username\x20\
SF:(max\x2020\x20characters\):\x20Write\x20a\x20message:\x20")%r(TerminalS
SF:erverCookie,63,"Welcome\x20to\x20Brainstorm\x20chat\x20\(beta\)\nPlease
SF:\x20enter\x20your\x20username\x20\(max\x2020\x20characters\):\x20Write\
SF:x20a\x20message:\x20");
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 212.74 secondsBạn có thể thấy trên Target đang có 3 port mở. Trong đó:
21/tcp open ftp Microsoft ftpd
3389/tcp open tcpwrapped
9999/tcp open abyss?
Trong đó ftp có thể login bằng account Anonymous
Sử dụng Acc anonymous để login:

Trên Server có 2 file sau:

Sử dụng command binary trước khi get nó về để tệp sẽ không bị hỏng khi truyền tệp qua FTP.

Trong đó:
1 File EXE chịu trách nhiệm chính cho service chạy tại port 9999 và load dll lên
1 File dll sử dụng để contain các chức năng cần thiết của program.
Exploit
Sau khi đã xác định được service có thể bị tấn công. Tôi sẽ recon nó vài thứ như sau:

Kết nối đến service ta nhận thấy đây là 1 service chat message. Bây giờ tôi sẽ đáp vào IDA để dịch ngược:

Đây chính là logic của chương trình:
Hàm Overflow:
Sau khi gửi payload sau
tôi nhận được thông báo lỗi:

Opcode của JMP ESP là FF E4:
Search > sequence of bytes:

Đây là tất cả các gadget JMP ESP mà thư viện essfunc.dll có:

Sau khi JMP ESP, chương trình sẽ thực thi đoạn mã trong stack mà ta có quyền điều khuyển:

Tạo shellcode với payload sau:
Áp dụng nó ta sẽ có payload cuối cùng như sau:
Running...

Áp payload lên server:

Bây giờ tôi sẽ đi đọc file root.txt

Các bạn có thể trực quan hơn bằng cách xem video:
Ngoài ra có 1 bài BOF đơn giản hơn nhưng được giải thích khá kĩ bởi anh Kienmanowar, các bạn có thể tham khảo thêm tại dây:
Last updated
Was this helpful?


