[하루한줄] Escalating a bug in a vulnerable markdown parser to exploit LFI and get RCE

URL

Pwning a Server using Markdown

Target

  • Hashnode

Explain

커스텀 도메인을 가지고 블로그를 무료로 호스팅할 수 있는 개발자용 블로깅 플랫폼 Hashnode의 “Bulk Markdown Importer” 기능에서 LFI(Local File Inclusion) 취약점이 발견되었습니다. 이를 통해 실제 IP를 찾아 RCE가 가능합니다.

Markdown은 파일에서 이미지를 참조할 수 있는 기능이 존재합니다. MD 파일에서 이미지를 출력하는 구문은 다음과 같습니다.

![image.png](https://img.url/img_file.png)

이때, URL이 아닌 경로를 지정하여 이미지를 삽입하도록 하면 파일을 찾을 수 없다는 ENOENT 오류가 발생합니다. 파일에 상대 경로를 지정할 경우, 폴더가 아닌 해당 .md 파일 뒤에 경로가 붙게 되어 이를 통해 LFI가 가능합니다.

---
title: "Why I use Hashnode"
date: "2020-02-20T22:37:25.509Z"
slug: "why-i-use-hashnode"
image: "Insert Image URL Here"
---

![notimage.png](../../../../../etc/passwd)

해당 .md 파일을 업로드하면, response가 아닌 Hashnode CDN에 업로드 되고, contentMarkdown에 내부 파일이 업로된 경로와 CDN URL이 반환됩니다. 이를 통해 RSA 키와 서버 IP 주소를 통해 RCE가 가능합니다.



본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.