본문 바로가기

WarGame/webhacking.kr

[webhacking.kr] Challenge 47 :: Mail Header Injection


▼ Challenge 47은 다음과 같습니다.



▼ index.phps는 다음과 같습니다.



메시지 내용이 가려져 있으므로,


admin에게 보내는 메일 내용을, 본인에게도 보낸다면 Password를 볼 수 있을 것 같습니다.


Mail Header Injection 이라는 말이 나와 있어서 쉽게 풀 수 있었습니다.



PHP의 mail함수는


mail ( 수신자, Subject, Massage, Header(이메일 헤더 마지막에 추가될 문자열) )


과 같이 구성되어 있고 더 자세한 사항은 PHP Manual에서 확인하시면 됩니다.


http://php.net/manual/kr/function.mail.php



여기서 중요한 Header 부분에는 From, Cc, Bcc 등을 추가할 수 있고 


Header는 CRLF(\r\n)으로 구분해야 합니다.


From 외에 참조나 숨은참조를 보낼 수 있으니 이것을 이용하여 


본인에게도 메일을 보낸다면 Password를 읽을 수 있겠죠?


    • Cc (Carbon Copy, 참조) : 수신자 외 다른 사람에게도 수신

    • Bcc (Blind Carbon Copy, 숨은 참조) : 수신자 외 다른 사람에게도 수신 (수신자에게 보이지 않음.)



바로 문제를 풀어 보겠습니다.


"Mail : " 이곳에 메일 주소를 입력하고 쿼리를 전송한 것을 Burp Suite로 Intercept 해보니


다음과 같은 값이 나옵니다.



▼ 이것을 이용해서 다음과 같이 입력하면 Success!




다만 아쉬운 것이 실제 mail 함수를 작동시키는 것이 아니라 하드코딩으로 정답을 확인하다 보니, 


다양한 정답 도출이 아쉬웠습니다.



( 사실 cc는 다른 사람에게도 노출되므로 bcc를 이용하는 것이 정답에 더 가까워 보입니다.


또, 입력 폼에서 %0D%0A (CRLF)를 사용하여 정답을 해결할 수 없었습니다. )