gossip2007.03.02 11:10


예전에 싸이월드의 자바스크립트 보안처리의 맹점을 이용하여 방문자를 알아내는 스크립트를 짜 게시판에 공개했다.

싸이월드도 그렇지만 대부분 사이트들이 글 입력시 스크립트 코드 처리는 미흡하게 처리하고있다.
싸이월드를 예로들면,

1차로 JScript를 이용한 <Script.. Tag를 제거하는것이다.

스크립트를 통한 방법은 얼마든지 해당 메소드를 수정하거나 건너뛰는 꼼수를 통과 할 수 있다.

2차로 ServerSide에서 <Script.. Tag를 제거하는것이다.

이것은 뚫을 방법이 없다.
하지만 싸이의 구조와 개발자의 고뇌(?)를 잘 생각해보면 약점이 보인다.
예를들어 싸이 게시판의 구조는 기본적으로 모두 한가지로 가거나 동일한 DB스키마를 사용해야한다.
그렇다 한다면 운영측면에서 봤을때 운영자가 스크립트를 사용하지 않으리란 없다고 예상이 된다.
<Script Tag없이 Script를 어떻게 실행할까?
해결법은 DHTML의 eventHandler를 사용하는것이다.



예전엔 이 방법으로 싸이에 스크립트 쓰기가 잘 되었는데, 어느새부터인가 이벤트핸들러도 모두 막아버렸다.

그래서 또 생각해낸 방법은 <Img src="script code" ... 를 쓰는 방법이다.

브라우저의 태그파싱 원리는 잘 모르지만 결과적으로 src태그의 스크립트도 실행이 된다는 사실을 발견했다.
하지만 이것이 된다는건 <img src="javascript:.... 즉 javascript: 구문이 들어가야 하는데, 문제는 싸이서버측에서 javascript:구문을 삭제해 버린다는것이었다.



하지만 위에서 말했다시피..
운영자의 요구와 개발자의 귀차니즘을 잘이해한다면 맹점은 어디에나 보이기 마련이다.

아마도 싸이서버측에서는 보안에 관련된 태그와 스크립트를 정규식으로 모두 체크해 삭제하는것 같았는데, '나 \를 String에 표현할때 ''나 \\로 입력하는 것과 같이 :도 ::로 입력하니 :로 출력되는것을 발견했다.

따라서 javascript:를 쓰면 :를 삭제했지만 javascript::를 쓰면 javascript:로 출력되는것이었다.

어쨌든 javascript가 실행되는것을 알아냈으니 javascript로 못할것은 없었다. 싸이월드는 싸이월드 구조상 스크립트에 개인정보를 거의 담고있다. 따라서 변수명만 알면 로그인 사용자의 정보는 대부분 알아낼 수 있다.

따라서 방문자의 tid(싸이 고유번호)만 알면 댓글을 강제 submit할 수 있었다.





뭐 여기까지는 개발 스토리이고..  결론적으로 싸이에서 이용정지를 당해버렸다.. ㅡㅡ;
훈련다녀온 새에 방문자 추적 프로그램이 많은 논란이 되었던지 내 스크립트가 네이트에서 검색되어 하루에 100명 가량이 낚이기 시작했다.

스크랩수가 1000건이 될때까지 아무 문제없다가, 1000건 이상되면 별도 관리를 하는지 갑자기 로그인 자체가 안되는
무기한 이용정지가 걸려버린것이다 ㅠㅠ

싸이에 미련은 없지만 클럽들과 그간 정리한 내 비공개 자료들은 어찌한댜..ㅠㅠㅠㅠ

어쨌든 평소에도 넓찍한 블로그로 이사하려고 계획은 했지만 싸이에 익숙함을 버리기란 쉽지 않았는데 이참에 반강제(?)적으로 이사하게 되어 기쁘다 ㅠㅠ

앞으로는 넓찍한 화면답게 많고 충실한 내용의 정보를 포스팅 해야겠다...ㅠㅠㅠㅠㅠ



근데 잠깐.........

이글루스도 SK아냐....? .................................설마 여기서도 짤리는거??? OTL 
신고
Posted by 귀뫄뉘

댓글을 달아 주세요


티스토리 툴바