[WARGAME] DVWA write-up/ File_Inclusion/ medium

jckim22·2022년 10월 27일
0

[WEBHACKING] STUDY (WARGAME)

목록 보기
34/114

/*

웹서버 환경: Window 10

공격 클라이언트 환경: Kali linux (VMware 구동)

*/

low풀이
https://velog.io/@jckim22/%EB%B9%A1%EA%B3%B5%ED%8C%9F-5%EC%A3%BC%EC%B0%A8-%EA%B3%BC%EC%A0%9C-5-DVWA-write-up-File-Inclusion-row

이번 문제는 File_Inclusion이다.

먼저 low레벨과 차이점을 알기 위해 low레벨에서 했던 방법으로 path_traversal 공격을 해서 flag파일을 찾아야한다.

아래 url처럼 ../../으로 경로를 찾아간다.

http://192.168.5.1/dvwa/vulnerabilities/fi/?page=../../hackable/flags/fi.php

하지만 아래처럼 경고가 나오게 되면서 include할 파일을 찾지 못한 것이 보인다.
경고문을 잘 살펴보면 ../../이 필터링 된 것을 알 수 있다.

medium레벨에서는 사실 str_replace() 함수로 ../과 ..\을 필터링하여 path_traversal을 방어한다.

하지만 str_replace()의 특성상 한번만 필터링을 한다.
그렇다면 ..././에서 ../을 필터링하게 되면 ../만 남게 된다는 것이다.

또한 RFI를 방어하기 위해 http://와 https://도 필터링 되어 있다.
이것 역시 hthttp://tp:// 이런식으로 입력을해서 http://가 필터링 되면 http://만 남게 될 것이다.

그럼 직접 필터링을 우회하는 주소를 입력하여 path_traversal을 통해서 fl.php 파일을 include 해보자.

주소는 아래와 같다.

192.168.5.1/dvwa/vulnerabilities/fi/?page=..././..././hackable/flags/fi.php

그렇게 되면 아래처럼 fl.php의 내용이 나오게된다.

low 때처럼 숨겨진 3번과 5번을 보기 위해서 php filter를 사용해야한다.

low레벨을 참고해서 얻은 인코드를 디코딩 하면

이렇게 숨겨진 내용을 볼 수 있다.

문자열을 필터링 해주는 함수는 정말 많기 때문에 거기에 대한 이해가 있어야 우회도 할 수 있다는 내용을 알려주고 있다.

profile
개발/보안

0개의 댓글