Report Info
- URL (보고서 URL) : https://hackerone.com/reports/1215263
- Title (보고서 제목) : Download of file with arbitrary extension via injection into attachment header
- Reported to (신고 대상) : Nextcloud
- Reported date (보고 날짜) : 2021. 6. 2
- Severity (취약 정도) : Medium (4.7)
- Weakness (취약점) : Code Injection
- Bounty (보상금) : $125
Description
상당히 간단한 내용의 취약점이다.
Nextcloud에서 이메일의 첨부파일을 다운받을 때
해당 파일명의 "(double quote)가 이스케이프되지 않아 발생한 취약점이다.
GET /nextcloud/index.php/apps/mail/api/messages/26/attachment/2 HTTP/1.1
Host: 192.168.0.101
HTTP/1.1 200 OK
[...]
Content-Disposition: attachment; filename="test.bat".png"
[...]
Content-Type: application/octet-stream
C:\Windows\system32\calc.exe
위와 같은 요청을 보내면 첨부파일의 실제 확장자는 png이기 때문에 해당 파일의 첨부가 가능하다.
그러나 Content-Disposition헤더에서 "가 이스케이프되지 않아 해당 파일의 확장자가 bat인
배치파일로 인식하게 된다. 이메일의 수신자가 해당 첨부파일을 확인했을 때는 png 파일로 보이지만
해당 파일을 다운로드 할 경우 내용이 C:\Windows\system32\calc.exe인 test.bat 파일이 다운로드 된다.
이메일의 수신자가 의심없이 해당 파일을 실행할 경우 사용자가 작성한 코드가 실행되게 된다.
파일의 확장자만 검사하고 다른 내용을 검사하지 않아 발생한 취약점이다.
느낀 점
보통 파일의 확장자만 검사하기에 파일 이름 검사의 필요성을 느끼지 못했는데
위처럼 헤더에서 파일의 확장자가 변조될 수 있다는 것을 확인했다.
또한 해당 취약점을 보면서 군에서 진행했던 해킹 메일 훈련 방식이 생각났다.
우리는 파일 이름에 .txt, .hwp와 같이 신뢰할 수 있는 확장자를 넣고
상당한 길이의 공백을 주어서 악의적인 코드를 실행할 수 있는 확장자를 주었다.
그러면 실제 확장자는 길이 문제로 인해 잘려서 보이지 않게 된다.

그 후 해당 파일의 아이콘을 위조된 확장자 파일처럼 보이게 수정하고 압축 파일로 만들어서 첨부파일로 전송하였다.
보통 사람들이 어떠한 압축 파일을 다운로드 받았을 때 압축 해제 후 파일을 실행시키는 것이 아닌
그냥 바로 해당 파일을 더블클릭하기 때문에 악의적인 코드가 바로 실행된다.
사회공학적 기법을 이용한 방식이다.
이처럼 메일을 통해서 받은 파일은 무조건적으로 신뢰하면 안된다.
물론 요즘은 어떠한 악의적인 파일을 실행하려고 하면 보안 경고 알림이 뜨긴 한다.
'web > Bug Bounty 리포트 리뷰' 카테고리의 다른 글
| Host Header Injection - hackerone report #1444675 (0) | 2024.04.03 |
|---|---|
| SMTP Command Injection - hackerone report #1509216 (1) | 2024.04.03 |
| RCE on Wordpress website - hackerone report #2248328 (0) | 2024.04.03 |
| Presigned URL을 이용한 인증 우회 - hackerone report #2337427 (0) | 2024.04.03 |
| Unrestricted File Upload in Reddit - hackerone report #1606957 (0) | 2024.04.03 |