'Vulnerability'에 해당되는 글 2건

반응형

파일 다운로드 취약점이 발생되었을 때 DB에 접근할 수 있는 정보 혹은 업로드하는 파일의 소스코드를 봐서 FU 취약점이 발생될 수 있는지를 확인한다. 이 때 Spring Framework에서 Controller의 위치를 한번에 알 수 있는 방법이 있는지에 대해 공부한 일련의 과정을 정리해둔다.


※ View 위치 찾기

1. /WEB-INF/web.xml

 (1) Spring에서 MVC를 구현하기 위한 Dispatcher Servlet을 찾는다.

 (2) Dispatcher Servlet에 포함되어 URL Mapping을 담당하고 있는 servlet-context.xml의 경로를 찾는다.


그림1. /WEB-INF/web.xml (출처 : https://all-record.tistory.com/165?category=733072)


◎ 만약 위와 같이 servlet-context.xml이 존재하지 않은 경우

contextConfigLocation 초기화 파라미터를 설정하지 않은 경우, DispatcherServlet은 WEB-INF/[서블릿이름]-servlet.ml 파일을 설정파일로 사용한다.


2. servlet-context.xml 경로

 (1) Controller에 의해 리턴된 View를 찾아주는 ViewResolver를 찾는다.

 (2) 해당 ViewResolver의 속성인 prefix와 suffix를 통해 내가 요청한 URL의 view page가 어디인지 찾는다.


그림2. servlet-context.xml (출처 : https://all-record.tistory.com/165?category=733072)



※ Controller 위치 찾기

view는 찾기 쉽지만 우리가 원하는 실제 코드는 controller에 있다. 이를 찾기 위해서는 우리가 URL에 입력한 것이 각 controller의 @RequestMapping Annotation에 있는지를 찾아야 한다.


그렇다면 각 controller의 파일명을 알 수 있는 방법이 있을까?

정확하지는 않지만 일단 지금까지의 결론은 다음과 같다.


1. web-xml에 dispatcherServlet을 등록함

2. dispatcherSerlvet 안에 <annotation-driven />과 함께 component-scan을 통해 패키지 안에 @controller라고 적어둔 annotation을 기준으로 컨트롤러를 스캔한다.

3. 이후 요청은 스캔한 컨트롤러들을 기준으로 동작한다.


결론 : 모든 컨트롤러가 적혀있는 특정 파일은 존재하지 않다.


추가적으로 더 알게된 내용이 있으면 추가하겠음.


참고 ) 

이론 : https://all-record.tistory.com/165?category=733072

실제 파일 위치들 예제 : http://pgm-progger.blogspot.com/2014/01/spring-base-setting.html

반응형

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

tar 명령어 이용 시 주의사항  (0) 2019.08.11
Indirect SQL Injection  (0) 2019.08.11
MYSQL load_file & into outfile  (0) 2019.06.28
[JAVA] AES256 decrypt Code  (0) 2019.04.25
[Websec.fr] level 8 Writeup  (0) 2019.04.11
블로그 이미지

rootable

,
반응형

* 파일업로드 취약점 대응방안

1) 블랙리스트 필터링 : 전부 허용하고 리스트 목록만 차단

 - 우회 방법 : 확장자 대소문자 치환, PHP 기본 설정 확장자(아래 1.1 참고), htaccess 분산 설정 파일

2) 화이트리스트 필터링 : 전부 차단하고 리스트 목록만 허용

 - 우회 방법 : Multiple Extensions 취약점


1.1 PHP 기본 설정 확장자 

 : PHP는 버전별로 초기 설정에 "php" 외 다른 확장자가 등록되어 있다. 버전에 따라서 확장자 우회가 가능하거나 또는 운영자가 추가한 확장자 명을 알 수 있다면 웹쉘 업로드가 가능.

1.1.1 PHP 인터프리터 확장자 설정

 - 설정 파일 : php.conf 파일 

 ex) CentOS 5.5버전의 경우 = /etc/httpd/conf.d/php.conf

버전 

초기 설정된 확장자 

PHP 3.X 

.php, .php3, .phtm3 

PHP 4.X ~ 5.X 

.php 

PHP 7.X 

.php, .php3, .php4, .php5, .php7, .pht, .phtml 


1.1.2. "mod_mime" 모듈 이용

 : 아파치 웹 서비스는 파일의 미디어 유형 처리와 관련된 "mod_mime" 모듈의 확장자 처리 규칙을 악용하여 PHP 스크립트 파일로 인식 시킬 수 있는 문제점 존재

 * mod_mime 모듈 : 파일에 하나 이상의 확장자가 지정되어 있을 경우 국가 코드와 인코딩을 제외하고 메타 데이터에 미디어 타입에 매핑된 확장자가 하나 이상일 경우에 최우측에 있는 확장자로 인식

  ex) c99.php.kr => 아파치에서는 c99.kr.php로 처리

       c99.php.cmd 혹은 c99.php.rootable 등 "/etc/mime.types"와 "httpd.conf", "php.conf" 등에 정의가 없는 확장자는 제외하고 인식


 - 만약 서버에서 블랙리스팅이 아닌 화이트리스팅으로 확장자를 막고 있다면 ?

(참고 : http://coffeenix.net/board_print.php?bd_code=1671)


* 기본 설정된 확장자 외에 관리자가 추가 등록할 가능성이 있는 확장자

"htm" , "html" , "inc", "phtml", "bak"

* "httpd.conf"에 cgi-script에 다양한 CGI 인터프리터가 등록되어 있을 가능성이 있음

 - ".cgi" , "pl", ".pm" , "py" 등 해당 확장자가 등록되어 있다면 해당 언어로 웹쉘 업로드가 가능함.


1.2. htaccess 분산 설정 파일

- 아파치 분산 설정 파일인 ".htaccess"를 이용하여 우회 시도.

 - ".htaccess"를 이용하려면 "httpd.conf"에 "AllowOverride" 설정이 허용되어 있어야만 기능이 활성화되어 PHP 인터프리터에 임의의 확장자 지정이 가능

ex) .htaccess 코드

AddType application/x-httpd-php .cmd

 -> .cmd 확장자는 php로 실행이 됌.


2.1 Multiple Extensions 취약점

 : 다중 확장자 파일에서는 확장자 순서에 무관하게 메타 정보에 매핑되는 최우측의 확장자로 매핑됌.

ex) rootable.jpg.php.cmd => 매핑되는 확장자는 jpg와 php, 이 중 최우측에 있는 php로 확장자가 인식됌.


2.1.1. "AddType 지시자" 혹은 "AddHandler 지시자"

- 만약 php.conf 파일에서 AddType 지시자 혹은 AddHandler 지시자를 사용할 경우 파일명에 ".php" 확장자가 포함되어있다면 핸들러가 우선하여 PHP 스크립트로 매핑된다.

 ex) rootable.php.jpg의 경우 php와 jpg 모두 메타 정보에 매핑되어 있어 최우측의 jpg로 확장자가 결정되어야 할 것 같지만 php.conf 파일에 "AddType 지시자"나 "AddHandler" 지시자로 되어있다면 해당 파일은 php로 확장자가 결정됌.

 - 대응방안 : <FilesMatch> 블록을 이용하여 최우측의 확장자가 ".php"일 경우에만 PHP 스크립트로 처리하도록 설정

<FilesMatch \.php$>        //최우측의 확장자가 .php일 경우에만 적용

SetHandler application/x-httpd-php

</FilesMatch>


출처 : 웹 모의해킹 시나리오의 완성 WEB HACKING 서버 침투 기법 

반응형

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

파일 다운로드 취약점 시 찾아볼 것  (0) 2017.12.04
SQL Injection 필터링 우회  (0) 2017.11.13
SQL Injection 관련  (0) 2017.06.29
XST에 대해 알아보자  (1) 2017.05.09
LFI&RFI  (0) 2017.03.08
블로그 이미지

rootable

,