본문 바로가기
Security

JSP 기반의 Web hacking 방법

by Hide­ 2007. 3. 31.
반응형
┏┳━┳┳━━┳━━━┳━━━┳━━━┳━┳━┳━┳━┳━━━┓
┃┃  ┃┃    ┃    ━┫    ━┫      ┃  ┃  ┃  ┃  ┃    ━╋┓
┃      ┃    ┃      ┃      ┃  ┏━┫      ┃      ┃      ┃┃
┃      ┃    ┣━    ┃    ━┫      ┃      ┣┓  ┏╋━    ┃┃
┣━━━┻━━┻━━━┻━━━┻━━━┻━━━┛┗━┛┗━━━┫┃
┃Since 2002.  W / I / S / E / G / U / Y / S  in HackerSchool ┃┃
┃http://research.hackerschool.org  wiseguys@hackerschool.org ┃┃
┗┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛┃
  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
   

━[Document Infomation] ━━━━━━━━━━━━━━━━━━━━━
:: Title  :: jsp 기반의 web hacking 방법.
:: Date   :: 2004. 1. 30
:: Author :: pr0z4g3r
:: Contact:: E-Mail(pr0z4g3r@hotmail.com)
             Homepage(http://prosager.hackerschool.org)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


━[Notice]━━━━━━━━━━━━━━━━━━━━━━━━━━━━

본 문서의 저작권은 저자 및 WiseGuys에게 있습니다.
상업적인 용도외에 어떠한 용도(복사,인용,수정,배포)로도 사용할수
있으며 Wiseguys의 동의 없이 상업적인 목적으로 사용됨을 금지합니다.

본 문서로 인해 발생한 어떠한 사건에 대한 책임도 저작권자에게는
없음을 밝힙니다.

본 문서의 잘못된 부분이나 지적이나 추가하고 싶은 내용은
저자에게 메일을 보내기 바랍니다.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



━[Index] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━

0x00. jsp 란?
0x01. jsp 기반의 특징.
0x02. jsp 기반 웹 공격.
0x03. jsp 기반 공격 이후.
0x04. 끝맺음.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━




━[Contents]━━━━━━━━━━━━━━━━━━━━━━━━━━━

0x00. jsp 란?

우선 jsp 란 무엇인지에 대해서 알아보자. jsp 는 php, asp 와 더불어

웹 기반의 server side script 이다. 우리는 php 그리고 asp 의 공격에 대해서는

꽤나 많은 지식을 가지고 있지만, jsp 즉 자바를 이용한 스크립트 언어에 대해서는

생소하고, 또한 공격하기 어렵다는 어떤 선입관을 가지고 있다고 볼 수 있다.

이런 jsp 를 공격하고, 실제로 어떻게 jsp 기반의 시스템들을 공격하는지에 대해서

알아보도록 하겠다.

------------------------------------------------------------------

0x01. jsp 기반의 특징.

jsp 의 특징은 당연히 자바다.

jsp 는 자바를 기반으로 하여서 만들어진 스크립트 랭귀지 이므로, 당연히 자바를

기반으로 하여서 프로그램이 돌아가고, 기본적인 틀에 대해서 조금은 이해를 하여야만,

이 문서를 정확히 파악할수 있을것이라고 본다.

크게 자바의 특징이라고 말하지는 않을것이지만, 우선 우리가 알아야 할 부분에 대해서만

정확히 말하면, 우리가 알아왔던, php, asp 와 다른 점을 알아보도록 하겠다.

우리가 php, asp 의 소스를 볼 수 있게 되는 순간에 우리는 그 서버를 점령했다 라는 말을

쓸수 있을것이다. 소스를 봄으로 인해서 DB 접근과 같은 일들도 가능하며, 쉘을 얻는

것 역시 가능하다. 하지만 jsp 의 소스를 보면 다들 조금은 당황하게 되는데, 대부분의

큰 기관에서는 자바 beans 를 사용해서 프로그램을 하게 된다. php 에서 include 파일을 열면

그 파일에 모든 내용이 들어있는데, include "../../test.inc"; 와 같은 부분에서 우리는

상대 경로를 예측하여서 소스의 위치를 유추가능하지만, jsp 에서는 그런것이 없이

바로 class 의 상속을 받아서 그냥 선언후에 사용하여 버린다.

이것때문에 우리가 원하는 소스와 id, pw 를 알아내기가 약간은 어렵게 된다는 것이다.

이것은 모두다 자바의 특징인 class 그리고 beans 를 사용할시에 나타난다는 것임을

우선 숙지하고 다음으로 넘어가자.

------------------------------------------------------------------

0x02. jsp 기반 웹 공격.

자 이제 그럼 jsp 가 class 를 사용하고, 그것도 java beans 를 사용할때 어떻게 우리는

웹을 공격할 수 있을것인가? 이것에 대해서는 잠시 말해 보겠다.

예전에 있었던 그리고 흔히 jsp 사이트 소스에서 download.jsp 에서 볼수 있는 취약점을 보면

download.jsp?file=test.jsp&name=test.jsp

와 같은 경로로 지정되는데 앞의 file 이 서버 내부의 파일명이며, name 은 저장되는

파일명으로 지정되는 경우가 많다. 이런 경우에는 우리가 원하는

download.jsp?file=../../../../../../../etc/passwd&name=hack.txt

와 같은 방법으로 etc/passwd 를 읽어 들일수 있게 된다는 것이다.

이제 이 방법을 통해서 jsp 의 소스를 읽어 보면, jsp 의 소스에서 약간은 특이한 점을

발견할 수 있게 된다.

<jsp:useBean id="myPoint" class="Point"/>

이런 소스를 발견하게 되는데 이것은 빈즈를 사용함으로 인해서 클래스 상속을 받은후에

이것의 클래스에 이미 선언된 변수와 함수를 사용하는 것이다.

이 설명이 이해 되지 않으면, oop 에 대해서 조금만 생각해 보기를 바란다.


이렇게 되면 문제가 발생된다, 우리는 변수명따위에는 관심이 없다는 것이다.

변수명이나 함수명은 관심없고 우리가 원하는 것은 DB 연결에 들어가는 ID, PW 란 것이다.
(혹은 함수내부 구조, 혹은 DB 관련 쿼리들)

이러한 중요소스를 포함하고 있는 class 파일들은 기본적으로 http://att-host/WEB-INF/
(위의 위치는 톰캣의 기본 class 파일 저장위치이다.)

라는 디렉토리에 들어가 있다. 우선은 소스를 보게 되면,

그 소스를 통해서 우리는 저 디렉토리가 존재하는지를 우선 파악하고,

class 파일이 있다면, 그 파일들을 download.jsp 취약점을 통해서 다운을 받은후에, 그것을

strings 같은 스트링으로 보게 되면, 우리가 원하는 ID, PW 를 얻어 낼수 있게 된다.


자세한 공격은 문제가 될 수 있으므로, 예를 들지는 않겠다.

------------------------------------------------------------------

0x03. jsp 기반 공격 이후.

jsp 의 공격을 통해서 shell 혹은 DB 계정과 같은 권한의 상승을 한 후에

최종적인 목표인 쉘을 획득하기 위해서는 우리는 조금더 작업을 할 필요가 있다.

목표의 쉘을 얻은 후에는 그 서버의 버젼 정보와 취약점 정보를 수집하여서 최종적인

root 를 따기 위해서 노력할수도 있으며, NAT 환경일 경우에는 DB 서버와 LOG 서버까지

점유할수 있는 방법도 존재할 것이다.

NAT 환경에서 DB 서버 해킹 혹은 공격에 대해서는 beist 님의 문서를 보기 바란다.

expect 란 것을 사용하는데 재밌다!

jsp 는 단순히 php, asp 와 같이 사람들이 가장쉽게 에러를 나타내고, 그리고 가장 빈번한

공격의 루트가 된다. 하지만 jsp 가 안전하다고 하는 이유는 우리가 자바에 대해서는

많이 알고 있지 않기 때문이며, 쉽게 공격이 불가능하다고 여기기 때문이다. 하지만

이런 것들은 다시 말하면, 하나의 취약점만 발견 되더라도, 방심하고 있는 마음의 큰 허점을

찔러 손쉽게 권한을 상승시킬수도 있다는 말과도 동일하다.

------------------------------------------------------------------

0x04. 끝맺음.

우선은 jsp 의 기본적인 내용과 그 공격 내용을 담으려고 하였으나, 공격내용을 담게 되면

나의 신상에도 좋지 못하며, 다른 공격을 유발시킬수도 있다는 입장이라서, 단순히 이론적이며

아주 개념적으로 전개를 하게 되었다. 기본적으로 내가 하고 싶은 말은, php 라고 해서 하나만

집착하지 말라는 말이다. asp 가 나왔을때 소스조차 읽어나가지 못하는데 무슨 해킹을 하고

어떻게 취약점을 찾는가? c 를 모르는 사람에게 bof 를 가르치려 해봐도 무리란 것을 잘 알것이다.

언어에 대해서 깊게 잘 아는것은 c 면 족하다, 하지만 다른 언어의 기본적인 내용과 그 독해력

정도는 다들 있어야 하지 않을까? 하는 의구심이 든다.


다들 열심히 공부하고, 조금은 넓은 시각에서 해킹을 바라보고, 공부해 나갔으면 한다.

노력하는 사람에게는 언제나 빛이 난다..

화이팅!! WiseGuys!!

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

'Security' 카테고리의 다른 글

AHF 2005 보고서  (0) 2007.03.31
JSP 웹해킹  (1) 2007.03.31
XSS - 실전사용예제  (1) 2007.03.31
Down it  (0) 2007.03.31
Netcat 을 이용한 웹해킹  (0) 2007.03.28