Server-side request forgery (SSRF) kerentanan dalam system dapat terjadi dari beberapa cara. Tapi biasanya itu karena tidak adanya kunci yang terinstall dalam system.

The same-origin policy (SOP) adalah tembok yang terpasang di setiap browser untuk menjamin dan menjaga pengguna browser agar merasa aman. Jika tembok ini tidak ada, maka pada saat anda membaca postingan ini, java script pada halaman ini akan di izinkan untuk berinteraksi dengan domain sewenang-wenang. Misalnya, javascript berbahaya bias membuat permintaan untuk mengakses https://gmail.com dan mengakses email anda.

Sehinga jelas ini tidak di ijinkan dan merupakan alasa mengapa browser menggunakan The same-origin policy (SOP).

Biasanya, JavaScript object XMLHttpRequest (), digunakan untuk mengeksekusi permintaan HTTP asynchronous, dibatasi oleh browser melalui SOP sehingga hanya dapat mengambil konten dari domain yang sama atau “asal.” Namun, ada cara melewati aspek SOP . Salah satu cara yang pengembang aplikasi web menghindari pembatasan ini adalah dengan menggunakan proxy yang lintas-domain .

Proxy lintas domain adalah pintu ke domain lain. Dalam istilah yang lebih teknis, adalah komponen server-side yang membuat permintaan http atas nama klien, dan mengembalikan respon ke http sehingga klien dapat memuat konten yang biasanya terlarang karena SOP.

PHP lintas domain proxy biasanya menggunakan javascript untuk mengambil konten dari domain lain, seperti yang di tunjukkan oleh jquery beriku

$(‘#target’).load(‘/proxy/proxy.php?csurl=https://www.google.com/finance?q=gdx’);

CUPSImage

Di atas Javascript akan mengakses file proxy.php pada domain yang sama, sehingga pada giliran akan memuat halaman Google Finance untuk simpol ticker GDX dan mengembalikan hasil ke client. Ini bukan contoh dari kerentanan keamanan karena siapapun dapat mengambil halaman di Google FInence. Mengubah proxy lintas domain menjadi kerentanan SSRF adalah kemampuan untuk mengakses segmen jaringan yang tidak dapat diakses.

Pengaturan proxy parameter konfigurasi CSAJAX_FILTER_DOMAIN yang benar adalah seperti menciptakan sebuah pintu tanpa kunci. Dalam beberapa konteks. Seperti dengan halaman Google Finence.

Exploitasi

Pertimbangkan bahwa web server aplikasi biasanya terhubungun dengan jaringan yang biasanya terlarang ke internet yang lebih besar. Sebuah contohsemua system adalah jaringan local dengan alamat 127.0.0.1, biasanya dipetakan ke localhost (nama host). Dalam konfigurasi yang rentan, penyerang dapat menyalah gunakan proxy.php untuk mengakses CUPS HTTP deamon, yang biasanya hanya dapat di akses di http://localhost:631

Contoh penyerangan

http://target/proxy.php?csurl=http://localhost:631

seperti yang terlihat penyerang mengakses SSRF untuk mengakses deamon yang berjalan do localhost, seperti CUPS.

CPUS deamon digunakan untuk mengkonfigurasi printer. Sebuah shell yang berjalan di CPUS deamon yang rentan terhadap SHELLSHOCK. CPUS deamon berjalan sebagai root, sehingga exploitasi SHELLSHOCK berhasil dalam konteks ini mengahasilkan akses root. CPUS SHELLSHOCK dapat dieksploitasi dari jarah jauh dengan mengirimkan perintah POST melalui kerentanan SSRF yang didukung oleh proxy.php

Ada banyak kesempatan serangan yang akan tersedia ketika SSRF digunakan untuk mengakses jaringan internal. Untuk membantu mengidentifikasi peluang ini, Burp Intruder ini jenis serangan Cluster Bomb dapat digunakan untuk membuat proxy.php menjadi port scanner yang berguna untuk menjelajahi jaringan internal. Untuk mengeksekusi serangan ini, mulai dengan mengkonfigurasi Penyusup seperti yang ditunjukkan pada gambar berikut:

Image12

Cluster di atas Bom jenis serangan akan menggunakan setiap permutasi dari dua daftar diwakili oleh $ localhost $ dan $ 631 $ penampung. Mantan daftar berisi alamat IP yang ingin kita scan, dan yang terakhir adalah daftar port yang dapat menjalankan daemon HTTP. Pelaksana serangan ini di lingkungan pengujian mengakibatkan berikut:

Image31

Di atas, kita melihat bahwa server HTTP berjalan pada 192.168.201.1 diakses karena kembali HTTP 200 respon. Ketika diakses menggunakan SSRF, halaman otentikasi berikut terkena:

Image4a2-e1429575387773

Solusi untuk masalah ini adalah bahwa pengembang aplikasi perlu lebih berhati-hati tentang lubang yang dibuat di dinding; kebijakan memotong sama-asal harus lebih ketat daripada proxy lintas domain yang terbuka lebar. Berbagi lintas asal sumber daya (CORS), diperkenalkan pada HTML5, diciptakan khusus untuk memungkinkan bypass selektif kebijakan yang sama-asal, dan harus digunakan di tempat proxy lintas-domain bila memungkinkan. Pada hari-hari sebelum CORS, pengembang yang dibutuhkan untuk membangun bypass kreatif mereka sendiri untuk SOP, seperti cross-domain proxy, atau JSON dengan Padding ( JSONP ) *. Pengembang akan menemukan solusi kreatif dan menarik untuk masalah yang sulit, tetapi ini tidak selalu solusi aman.

CORS bukanlah satu ukuran cocok untuk semua solusi, meskipun. Jika Anda perlu menggunakan proxy.php, mengatur CSAJAX_FILTERS untuk benar dan menentukan daftar $ valid_requests, yang masuk daftar putih permintaan bahwa server diizinkan untuk melakukan atas nama klien.Pengaturan CSAJAX_FILTER_DOMAINS ke false akan memastikan bahwa proxy.php hanya akan mengirimkan permintaan yang sebenarnya didefinisikan dalam $ valid_requests. Sementara itu, pengaturan CSAJAX_FILTER_DOMAINS untuk benar hanya akan menyaring berdasarkan nama domain, yang masih dapat menyebabkan kompromi.