ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Webhacking.kr] 47번 풀이
    Wargame/webhacking.kr (old) 2019. 5. 8. 20:33


    Mail Header Injection 문제이다.


    Mail Header Injection

    Mail 함수의 Header 파라미터의 값을 이용하여 추가적인 옵션들을 이용하여 원하는 결과를 얻어내는 공격



    내 이메일 주소를 넣고 제출한 후 메일을 확인하였으나 아무런 메일이 와있지 않았다.

    소스를 보자.



    header 변수에 post로 받은 email 값을 넣고, mail함수의 header 인자로 넘겨준다.


    mail(수신자, 제목, 내용, 추가 옵션[ From, Cc, Bcc])

    From 보내는사람, Cc (Carbon Copy) 참조, Bcc(Blind Carbon Copy) 숨은 참조


    [ mail 함수 ] https://php.net/manual/kr/function.mail.php

    [ mail header injection ] https://dzone.com/articles/what-is-email-header-injection


    위 소스의 mail 함수를 해석해보면,

    수신자 : admin@webhacking.kr

    메일 제목 : readme

    내용 : password is ~~~~~

    보내는 사람 : $_POST[email]


    내가 입력한 이메일 주소는 발신자로 메일을 받아 볼 수 없는 구조이다.

    헤더(Cc 또는 Bcc)를 추가하여 내가 참조인이 되면 해당 메일을 받을 수 있다.

    헤더를 추가할 때는 \r\n(%0d%0a)으로 구분해주어야 한다.


    헤더 추가하는 방법은 아래와 같다.



    헤더 추가하는 방법을 알았으니 Header Injection을 수행해보자.


    a@a.a%0d%0a Cc:내이메일 주소


    메일 전송 성공한 후 메일을 확인해보니 메일이 와있지 않다...

    서버의 문제로 mail 함수는 주석 처리해놓은 상태라 메일이 오지 않는것 같다.

    Fiddler를 사용하여 request를 날리고 반응을 보기로 하였다.



    request를 잡아 Raw 부분에서 email 데이터를 수정하였다.



    수정한 후 전송하였더니,,

    메일이 전송되지는 않았지만 페이지에 Password를 직접 알려준다.



    Auth 페이지에 인증하면 문제는 풀린다.



    \r\n을 사용하지 않고 직접 한 줄 띄워 입력해줘도 된다.



    참고로 Bcc는 안된다.. 왜 그런지 모르겠다.


    'Wargame > webhacking.kr (old)' 카테고리의 다른 글

    [Webhacking.kr] 49번 풀이  (0) 2019.05.08
    [Webhacking.kr] 48번 풀이  (0) 2019.05.08
    [Webhacking.kr] 46번 풀이  (0) 2019.05.08
    [Webhacking.kr] 45번 풀이  (0) 2019.05.08
    [Webhacking.kr] 44번 풀이  (0) 2019.05.08

    댓글

@Jo Grini's Blog