
CVE-2019-14751에 대한 개념 증명
CVE-2019-14751을 위한 개념 증명(PoC)
NLTK Downloader 3.5 이전 버전은 디렉터리 트래버설(directory traversal)에 취약하여, 압축 해제 과정에서 부적절하게 처리되는 NLTK 패키지(ZIP 아카이브) 내의 ../ (dot dot slash)를 통해 공격자가 임의의 파일을 쓸 수 있습니다.
자세한 내용은 다음을 참조하십시오: https://salvatoresecurity.com/zip-slip-in-nltk-cve-2019-14751/
index.xml과 zip-slip.zip을 웹 서버가 제공할 디렉터리에 배치합니다. 파일이 제공될 수 있도록 권한을 조정합니다.
NLTK Downloader 실행
$> python3
>>> import nltk
>>> nltk.download()
"Server Index" 필드의 값을 1단계의 index.xml을 가리키도록 변경합니다.
"Download"를 클릭하여 악성 패키지를 설치합니다.
"/tmp/evil.txt" 파일이 존재하는지 확인합니다.
$> cat /tmp/evil.txt
This is an evil file
$>
이 취약점은 NLTK 버전 3.4.5 이상에서 수정되었습니다. 다음 커밋이 취약점을 해결합니다: https://github.com/nltk/nltk/commit/f59d7ed8df2e0e957f7f247fe218032abdbe9a10