내가 만든 홈페이지 해킹하기(3)

Jang Seok Woo·2020년 9월 25일
2

보안

목록 보기
12/19

내가 만든 홈페이지 해킹하기(3)

개발환경 : JSP, Oracle11g

파일 다운로드 취약점

파일 다운로드 취약점은 파일 다운로드 기능이 존재하는 웹에서 파일 다운로드 시 파일의 경로 및 파일명을 파라미터로 받아 처리하는 경우 이를 적절히 필터링 하지 않으면 공격자가 이를 조작하여 허용되지 않은 파일을 다운 받을 수 있는 취약점이다. 공격자는 취약점을 이용하여 시스템 환경 설정 파일, 소스 코드 파일, DB 연동 파일 등 중요한 파일을 다운 받을 수 있다.

점검 방법

  • 게시판 또는 공지사항, 자료실 등에서 cgi, jsp, php 등의 프로그램을 이용하여 파일을 다운로드 받는 페이지가 있는지 조사한다.
  • 다음과 같이 파일 다운로드를 시도한다.
    • ../../../../etc/passwd
    • ../../../../winnt/win.ini
    • ../../../../boot.ini
    • ../../../../wp-config.php (워드프레스인 경우)
    • xx/direct_download.php?file=./direct_download.php
  • 인코딩을 적용하여 해당 파일 내용이 표시되는지 확인한다.
    • url 인코딩 : .(%2e), /(%2f), (%5c)
    • 16bit 유니코드 인코딩 : .(%u002e), /(%u2215), (%u2216)
    • 더블 url 인코딩 : .(%252e), /(%252f), (%255c)
  • ..//, ....\, 등을 적용하여 패턴을 반복하지 않음으로써 방화벽 우회를 시도한다.
  • null바이트 인젝션 시도한다.
    • ../../../../etc/passwd%0a.jpg
  • 특정 디렉터리나 파일을 먼저 입력한 후 탐색 문자열을 입력한다.
    • /was/tomcat/image/../../../../etc/passwd

대응방안

  • 외부에서 입력하는 파일 경로와 이름에 대해 허용하는 경로 이외의 디렉터리와 파일에 접근할 수 없도록 처리한다.
  • 외부 입력값에 대해 파일 경로를 변경할 수 있는 문자열에 대해 필터링한다.
  • php로 개발된 경우 php.ini의 내용 중 magic_quotes_gpc 항목을 on으로 설정하여 ".\와 ./" 입력 시 치환되도록 설정한다.

이론은 이러하고, 지금부터 다운로드 취약점을 통해 해당 서버의 정보를 모의로 빼오는 작업을 해보자.

가장 먼저 떠오르는 질문은

  1. downloadAction 취약점이 존재하는가?

다운로드를 클릭할 시 URL주소를 보면 downloadAction파일을 통해 파일을 다운로드 받는다.

  1. downloadAction 파일을 다운받을 수 있을까?

  2. 다른 소스파일들은 접근 할 수 있을까?

  3. 현재 위치를 알 수 있을까?

  1. Download 취약점이 존재하는가?

/etc/passwd 파일을 다운받는 시도를 하며 우선 취약점의 존재 여부를 파악해 보도록 한다.

URL에 ../ 를 이용해 상위 폴더로 이동 후, passwd파일에 접근한다.

다운 받은 파일을 열어보자

다음과 같이 정보 열람을 할 수 있음을 확인했다.

  1. downloadAction 파일을 다운받을 수 있을까?

먼저 경로를 통해 downloadAction.class 파일이 있는 곳으로 URL을 입력한다.

JAD 프로그램을 이용해 class 파일을 읽을 수 있는 java 파일로 디컴파일

  1. JAD 파일을 다운로드 받아 class 파일과 같은 폴더에 넣어준다.

  2. 시작 -> 실행 -> cmd 확인

  3. 커맨드창에서 class 파일이 있는 폴더 위치로 찾아간다.

  4. jad -o -sjava 파일명.class 명령어를 입력하면 java 파일로 디컴파일된다.

  5. class 파일에서 디컴파일된 java 파일은 원본 java 파일과 100% 일치하지는 않는다.

다음과 같이 코드가 그대로 드러나게 됨을 확인

  1. 다른 소스파일들은 접근 할 수 있을까?

다른 소스파일들 현 게시글 페이지인 view.jsp와 DB와 연동하는 DAO파일 user클래스 파일에 접근 가능한지 시도해보자

먼저 view.jsp 파일의 경로 입력

파일 다운로드 확인

View.jsp 파일을 메모장으로 열어 본 결과 코드가 그대로 추출됨을 확인

User.class 와 UserDAO.class 파일 다운로드 하기

두 파일 다 다운로드 확인

파일을 읽기 위해 JAD 프로그램으로 class 파일에서 java 파일로 디컴파일 후 코드를 추출하기

  1. 현재 위치를 알 수 있을까?

현재 view.jsp의 절대경로나, downloadAction 파일의 절대경로를 알 수 있을까?

알기 어렵다. 프로그램을 쓰면 될지 모르겠으나 아직 해결책을 찾지 못했다.

Dir 경로를 브루트포싱을 이용해 찾아주는 프로그램을 사용해보자

BurpSuite 확장기능 DirBuster 이용

아래 URL을 따라 설치
https://m.blog.naver.com/PostView.nhn?blogId=crehacktive3&logNo=220957973295&proxyReferer=http:%2F%2F203.229.225.135%2Ftm%2F%3Fa%3DCR%26b%3DWIN%26c%3D300021097092%26d%3D32%26e%3D5301%26f%3DbS5ibG9nLm5hdmVyLmNvbS9jcmVoYWNrdGl2ZTMvMjIwOTU3OTczMjk1%26g%3D1601023295458%26h%3D1601023295536%26y%3D0%26z%3D0%26x%3D1%26w%3D2020-06-02%26in%3D5301_1741_00023429%26id%3D20200925

자동으로 브루트포싱을 통해 dir 경로를 탐색해준다.

경로가 잘 안나온다.

profile
https://github.com/jsw4215

0개의 댓글