반응형

파일 다운로드 취약점이 발생되었을 때 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

,