-
[Webhacking.kr] 25번 풀이Wargame/webhacking.kr (old) 2019. 5. 7. 00:47
LFI(Local File Inclusion) 취약점 (파일 업로드 취약점)
웹 브라우저를 통해 서버에 파일을 포함시키는 과정에서
include 할 페이지 경로를 적절히 필터링하지 않고, 디렉토리 변경 명령어들의 삽입을 허용할 때 발생
보통 URL을 통해 이루어지며 ../../etc/passwd 와 같은 형식으로 접근하여 서버 내부의 중요한 디렉토리에
접근할 수 있는 취약점
문제를 보면 file=hello를 통해 hello라는 파일로 접근한다.
이를 통해 index.php 또는 password.php에 접근할 수 있는지 확인해보았다.
아무런 반응이 없다..;;
hello.txt가 아닌 hello라고 입력한 이유가 있을까 싶어 index, password로도 접근해보았다.
그러나,, 아무런 반응이 없었다.
여기서!!
한 가지 추측이 가능하다.
hello라고 했는데 hello.txt에 접근할 수 있다.
이는 서버에서 .txt를 추가해주는 것이 아닐까? 하는 추측을 해본다.
만약 추측이 맞다면,
index.php나 password.php를 입력한 경우에도 .txt가 추가되어 존재하지 않는 파일로
접근을 시도하였기 때문에 아무런 반응이 일어나지 않았다고 생각할 수 있다.
파일 업로드 취약점 대응 방법 중에 확장자를 체크하여, 특정 확장자만 업로드할 수 있도록 하는 방법이 있다.
이는 업로드 시, %00를 이용하여 확장자를 우회할 수 있다.
'test.php%00.jpeg'
파일을 호출할 때 %00은 리눅스 서버에서 문자 종료를 의미한다.
따라서 test.php로의 접근이 가능해진다.
[ 리눅스 종단 문자 ]
%00
%zz
따라서 .txt를 무효화 시키기 위해 종단 문자를 입력해주었다.
?file=password.php%00
password.php 파일을 호출하여 비밀번호를 얻었다.
.txt를 붙여주는 추측이 맞았던 것 같다.얻은 비밀번호를 Auth 페이지에 인증하면 문제가 풀린다.
'Wargame > webhacking.kr (old)' 카테고리의 다른 글
[Webhacking.kr] 27번 풀이 (0) 2019.05.07 [Webhacking.kr] 26번 풀이 (0) 2019.05.07 [Webhacking.kr] 24번 풀이 (0) 2019.05.06 [Webhacking.kr] 23번 풀이 (0) 2019.05.06 [Webhacking.kr] 22번 풀이 (0) 2019.05.06 댓글