Webhacking.kr Challenge 47.
47번 문제를 클릭하면 나오는 화면.
제목에 Mail Header Injection이라는 제목이 존재.
서버 문제로 mail 함수를 주석처리 해놓았다는 말이 있는데 참고 정도만 한다.
소스를 본다.
별다른 건 없고 index.phps를 보러간다.
일단 POST 방식으로 POST[email]을 입력 받는다.
$header="From: $_POST[email]\r\n"; <= header option에 From 변수 사용.
mail("admin@webhacking.kr", "readme", "password is $pass",$header);
mail 함수에 대해 간단히 언급해본다.
mail(받는 사람,제목,내용,참조[=comment]). <= 이게 정의.
소스 코드에 대입해보면.
받는 사람 = > admin@webhacking.kr
제목 => readme
내용 => password is $pass.
참조 => From $_POST[email]\r\n
Mail Header Injection라는 건 header에 cc와 bcc 등이 취약.
Cc ==>(Carbon Copy, 참조) 수신자 외 다른 사람에게도 수신.
Bcc ==> (Blind Carbon Copy, 숨은 참조) 수신자 외 다른 사람에게도 수신(Blind니까 수신자에게 보이지 X).
Mail Header Injection을 좀 더 검색.
1.발신자 인수 후 참조 및 숨은 참조 삽입.
2.주입 인자.
3.제목 인수 삽입.
4.메시지 본문 변경.
더 자세한 건 http://php.net/manual/kr/function.mail.php 확인.
제 4가지 방법 중에는 1번이 가장 무난할 거 같다.
위에서 언급한 cc를 이용해서 다른 사람에게도 메일을 보낼 것.
Header 부분에는 From, Cc, Bcc를 추가할 수 있고, Header는 \n\n으로 구분해야 한다.
From 말고 Cc or Bcc를 보낼 수 있으니 이 점을 이용해서 나한테 메일을 보낼 수 있다면 Password를 읽을 수 있다.
일단 mail 입력란에 메일 주소를 아무렇게나 입력 후 쿼리를 전송한 것은 파로스나 다른 것들도 많지만, 익숙한 Burp suite로 인터셉트.
이렇게 cc를 입력 후 위의 화면처럼 입력하면 된다.
물론 메일함수가 주석 처리 되어있고, 하드 코딩 되었다고 하니까 나처럼 자신의 이메일 안 쳐도 되고, 아무렇게나 써도 된다.
위의 화면처럼 값을 넣고 Forward 해서 파라미터가 수정된 Request를 보내니 아래와 같은 화면이 등장한다.
인증해본다.
'# Related site issues > WEBHACKING.KR' 카테고리의 다른 글
Webhacking.kr Challenge 5. (0) | 2018.05.12 |
---|---|
Webhacking.kr Challenge 11. (0) | 2018.05.12 |
Webhacking.kr Challenge 42. (0) | 2018.05.06 |
Webhacking.kr Challenge 12. (0) | 2018.05.06 |
Webhacking.kr Challenge 23. (0) | 2018.05.04 |