1. webhacking.kr old 47번 문제개요(Writeup)
문제를 들어가면 위와 같이 출력된다. 메일을 보낼 수 있는 폼이 존재하고 코드를 보니, 10초에 한번 가능하다.
쿠키나 폼에는 의심되는 것이 보이지 않는다.
일단 지금까지 얻은 힌트로는 Mail과 관련된 문제이고, 'subject를 보내는 동작을 한다.'이다.
여기까지만 봤을 때는 해킹과 방어 수업 때 들은 SMTP, IMAP, POP3 중 하나의 취약점일 것이고,
IMAP은 메시지를 읽어오는 과정이고, POP3는 메일서버에서 메일을 검색하는데 자주 사용되기 때문에,
SMTP 취약점일 것이라고 생각했다.
SMTP에도 다양한 취약점이 존재하고 있고, 내 지식은 모든 취약점에 대해 제대로 알지 못한다.
따라서 SMTP 취약점 중 대표적인 것들을 공부했다.
1. SMTP(Simple Mail Transfer Protocol)란?
간이 전자 우편 전송 프로토콜로 인터넷에서 이메일을 전송하는 데 사용되는 표준 프로토콜이다. 메일 클라이언트가 수신 서버로 메시지를 발송 및 포워드를 지원한다.
1) SMTP Relay 취약점
메일서버 외부에서 메일서버를 경유하여 타 메일서버로 메일을 발송하는 것을 말한다. 인증 시행 여부에 따라 Open Relay와 Authenticated Relay로 구분된다.
① Open Relay
Open Relay는 모든 전자메일에 대해 Relay를 하도록 설정되어, 해당 메일서버는 스팸메일의 발신지로 사용될 위험이
크다. 간단하게 점검하는 방법은 아래 링크로 들어가서 자신의 이메일을 점검하는 방법이다.
https://mxtoolbox.com/diagnostic.aspx
② Authenticated Relay
메일 서버에 인증된 메일에 대해서 Relay 해주는 방식이다. 설정을 통해 허가된 IP대역이나 발신지 대상 등을 특정하고, SMTP AUTH 설정 후 명령을 통한 동적 Relay 권한 인증이다.
2) SMTP header injection
적절하게 삭제되지 않은 사용자 입력에서 IMAP/SMTP 문을 구성하는 메일 서버 및 웹 메일 프로그램을 악용하는 데 사용되는 기술이다. 공격자가 SMTP 서버로 전송되는 데이터에 SMTP 명령을 삽입하여 공격하는 기술이다.
실제 공격 사례 보고서(Bugbounty - New Relic)
https://hackerone.com/reports/347439
공부하던 중 이번 문제가 SMTP Header Injection이라고 생각했다.
3. webhacking.kr old 47번 문제풀이(Writeup)
먼저 SMTP Header Injection을 하기 위해 입력 폼을 text에서 textarea로 변경했다.
이후 Cc에 내 이메일 주소를 넣었다. Cc는 원래 자신의 메일에서 참조하겠다는 뜻으로 내 메일함에 메일이 와야 하는데
문제 사이트에서 flag가 출력되었다.
이렇게 SMTP에 대해서와 SMTP 관련 취약점을 공부한 이후 문제를 해결하였다.
SMTP 취약점을 배운 지 오래돼서 그런지 잘 기억이 안 났었다. 취약점에 대해 다시 공부하고 SMTP, IMAP, POP3 등의 메일 관련 포트에 대해서 학습할 수 있는 좋은 기회였다.
참고사이트
https://m.blog.naver.com/skinfosec2000/221920576711
https://portswigger.net/kb/issues/00200800_smtp-header-injection
'웹해킹 > webhacking.kr' 카테고리의 다른 글
webhacking.kr old 27번 문제풀이(Writeup) (0) | 2022.09.27 |
---|---|
webhacking.kr old 25번 문제풀이(Writeup) (0) | 2022.09.26 |
webhacking.kr old 19번 문제풀이(Writeup) (0) | 2022.09.25 |
webhacking.kr old 39번 문제풀이(Writeup) (1) | 2022.09.24 |
webhacking.kr old 54번 문제풀이(Writeup) (1) | 2022.09.23 |