Pengantar Eksploitasi SSRF: Tutorial Praktis untuk Peretas Etis — StackZero

Feb 22 2023
Artikel lengkap diterbitkan di https://stackzero.net/ssrf-introduction/ Server-side request forgery (SSRF) adalah jenis kerentanan aplikasi web yang memungkinkan penyerang mengirim permintaan buatan dari aplikasi web yang rentan ke sembarang tujuan.

Artikel lengkap diterbitkan dihttps://stackzero.net/ssrf-introduction/

Pemalsuan permintaan sisi server (SSRF) adalah jenis kerentanan aplikasi web yang memungkinkan penyerang mengirim permintaan buatan dari aplikasi web yang rentan ke tujuan yang sewenang-wenang. Ini dapat mencakup sistem internal, seperti server database atau server file.

Kerentanan terjadi saat aplikasi web mengambil input yang disediakan pengguna yang tidak bersih dan menggunakannya untuk membuat permintaan.
Dengan cara ini dimungkinkan untuk membuat permintaan jahat dan memaksa server yang rentan untuk mengirimkannya.

Misalnya, bayangkan sebuah aplikasi web yang:

  • mengambil URL sebagai masukan
  • menampilkan konten halaman web terkait.

Singkatnya, SSRF VS CSRF :

Apa perbedaan antara SSRF dan CSRF ?

  • CSRF: targetnya adalah pengguna/klien dan dia harus melakukan beberapa tindakan, untuk menjadi korban. Kerentanan tidak bergantung langsung padanya, tetapi pada server yang menghosting aplikasi yang berpotensi rentan.
  • SSRF: seorang peretas dapat menggunakan aplikasi itu sendiri untuk mengirim permintaan jahat dari domain tepercaya. Dalam hal ini, kerentanan tidak bergantung pada faktor eksternal tetapi langsung pada kode aplikasi.
  • Ingin Bertaruh Bahwa CSRF Tidak Sesulit yang Anda Pikirkan?

Dalam praktik singkat ini, kami akan melakukan eksploitasi yang sangat sederhana pada server yang memiliki kode buruk. Ini bukan situasi nyata tetapi dapat banyak membantu untuk memahami kerentanan.

Apa yang akan saya lakukan adalah menyiapkan Mesin Kali kami di VirtualBox sedemikian rupa sehingga kami menjalankan dua server:

  • Yang pertama adalah aplikasi yang rentan (di dalam direktori utama proyek).
  • Yang kedua adalah server yang menampilkan konten direktori rahasia dan hanya dapat dilihat dari localhost (berjalan di dalam direktori rahasia).

Jika Anda ragu, Anda dapat menemukan seluruh kode di repositori GitHub .

Server rentan SSRF

Sebelum menulis kode dari server yang rentan, kita membutuhkan alamat IP, jadi mari ketik terminal:

ifconfig

Setelah mengambil IP kita dapat menulis kode aplikasi yang rentan.
Misalnya, jika 192.168.1.116 ini akan menjadi kode terkait untuk menjalankan server di LAN pada port 8000.


from flask import Flask, request
import requests


app = Flask(__name__)

my_ip = '192.168.1.116'

@app.route("/")
def index():
    url = request.args.get("url")
    response = requests.get(url)
    return response.text


if __name__ == "__main__":
    app.run(host=my_ip, port=8000)

Aplikasi ini memiliki titik akhir tunggal yang menggunakan URL sebagai parameter kueri dan membuat permintaan GET ke URL tersebut menggunakan pustaka permintaan. Respons dari permintaan tersebut kemudian dikembalikan ke pengguna.

Dengan cara ini, kami dapat memaksa server web untuk menunjukkan kepada kami apa yang dapat dilihatnya, bahkan jika kami tidak memiliki hak.

Kita dapat menjalankan aplikasi dengan mengetik di terminal kita:

python vulnerable_application.py

Jika Anda belum menginstal flask, Anda harus melakukannya dengan perintah:

pip install flask

Kerentanan dalam aplikasi ini adalah memungkinkan penyerang membuat URL yang mengarah ke layanan internal, tetapi mari kita lihat cara melakukannya.

Dinas Dalam

Saya ingin membuat pengantar ini sesederhana mungkin, jadi untuk menjalankan layanan internal saya akan menggunakan modul internal python: http.server .
Kami ingin menjalankannya di localhost di port 8888:

  1. Buka terminal atau prompt perintah.
  2. Arahkan ke direktori "supersecretdir" yang berisi flag.
  3. Ketik perintah berikut untuk memulai server:
  4. python -m http.server 8888
    
           
                    

  • Pindah ke mesin host Anda
  • Buka peramban
  • Coba sambungkan ke URL ini:http://192.168.1.116:8000?url=http://localhost:8888

Jadi kami mendapat akses ke server internal yang biasanya tidak dapat kami akses!
Seperti yang kami harapkan, eksploit bekerja dengan baik!

Kesimpulan

Kami telah melihat bukti konsep sederhana meskipun dalam skenario dunia nyata, kerentanan bisa lebih kompleks untuk dieksploitasi dan dicegah. Namun, saya harap artikel ini menarik dan memberikan nilai bagi mereka yang ingin mempelajari lebih lanjut tentang Server Side Request Forgery (SSRF).

Dengan meningkatnya prevalensi aplikasi web dan infrastruktur cloud, semakin penting untuk menyadari potensi kerentanan keamanan yang ditimbulkan oleh serangan SSRF. Dengan memahami dasar-dasar SSRF, dampaknya, dan cara mencegahnya, kami dapat melindungi sistem dan data kami dengan lebih baik dari aktor jahat. Ingat, pencegahan selalu lebih baik daripada reaksi, dan dengan mengambil langkah proaktif untuk mengamankan aplikasi web kita, kita dapat menghindari konsekuensi yang berpotensi menimbulkan bencana.

Jika Anda menganggap artikel ini informatif, saya mengundang Anda untuk mengikuti blog saya untuk wawasan lebih lanjut tentang keamanan siber.
Tetap up-to-date dengan tren dan teknik terbaru untuk melindungi sistem Anda dari potensi ancaman. Jangan ragu untuk meninggalkan komentar atau membagikan artikel ini kepada orang lain yang mungkin merasa berguna.
Terima kasih telah membaca dan kami berharap dapat melihat Anda di blog!

Awalnya diterbitkan di https://stackzero.net pada 17 Februari 2023.

Ikuti saya di media untuk menerima artikel baru saya. Dan jika Anda ingin berlangganan Medium, pertimbangkan untuk menggunakan tautan referensi saya, itu bukan biaya tambahan untuk Anda tetapi akan sangat membantu saya.

Artikel lain yang mungkin Anda sukai: