0. 개념
LFI(=Local File Inclusion) ?
조작된 user input을 전송하여 서버 응답 값 내 서버 파일 내용을 포함시키는 취약점입니다.
Double encoding란?
글자 그대로 두번 URL encoding된 문자열, Double encoding을 이용하여 공격 구문 필터링 우회 가능합니다~!
예시 ) 서버 다운로드 취약점 필터링으로 상위 폴더 접근 구문인 "../" 적용시의 USER INPUT 에 결과는 아래와 같습니다.
1) URL.decoding(%2e%2e%2f) -> "../"
2) URL.decoding(%252e%252e%252f) -> "%2e%2e%2f"
여기서 2)를 통해 "../" 구문 필터링은 우회 가능합니다.
Webserver안에 여러 인코딩 문자열 수용 코드가 존재하므로 필터링 우회 후,
입력한 "%2e%2e%2f"을 "../"로 인식하는 경우가 발생할 수 있습니다.
1. 문제
웹사이트 소스코드 파일들 내 유효한 비밀번호를 찾아라.
2. 풀이
CV link 클릭 시, parameter을 통해 "cv" 값 전송하는 것을 알 수 있습니다.
-> Userinput point 확인
파일 다운로드 공격을 위해 상위 폴더 접근 문자열 "../" 입력 시도 시, Attack detected 문자열 발생합니다.
문제 이름 그대로 Double decoding 문자열 "../" 값 삽입 시, 에러 노출 확인되네요.
-> 에러 확인을 위한 userinput 삽입 방식 확인
-> include() 함수 이용 확인
에러 내 include() 인자 값으로 입력 문자열("../") 외 ".inc.php" 삽입되는 것을 알 수 있습니다.
공격자가 의도한 Userinput 삽입을 위해 null byte 이용 가능합니다. 야호
include() 인자값 내 php 지원 프로토콜을 이용하여 LFI 가능합니다.
관련 문제 : https://www.root-me.org/en/Challenges/Web-Server/PHP-filters
추출한 소스코드들 분석을 통해 password 획득 성공했습니다
'HACKING_GAME > WEB' 카테고리의 다른 글
root-Me#7 Node.js Eval (0) | 2021.04.08 |
---|---|
root-Me#6 Graphql (0) | 2021.01.04 |
root-Me#5 SQL Injection - Routed (0) | 2020.12.20 |
root-Me#4 Revoked Token - JWT (0) | 2020.12.14 |
root-ME#2 Java Server-side Template Injection (0) | 2020.07.24 |