RFI는 취약한 애플리케이션에 원격 파일을 포함하도록 한다.
LFI처럼 RFI는 사용자의 입력을 부적절하게 다듬어서 공격자가 외부 URL을 include 함수에 삽입하도록 하는 경우에 발생하는데, allow_url_fopen 옵션이 활성화돼있어야 한다.
RFI 취약점은 공격자가 서버에서 RCE 권한을 얻을 수 있기 때문에 LFI보다 위험도가 높다.
외부 서버가 애플리케이션의 서버와 통신해야하는데, 공격자가 악성 파일을 본인 서버에 호스팅하면 HTTP 요청으로 include 함수에 삽입되어 애플리케이션 서버에 실행될 수 있다.

위 다이어그램에서 설명하는 것처럼 공격자는 자신의 서버 http://attacker.thm/cmd.txt에 PHP 파일을 호스팅하고 cmd.txt파일은 Hello THM이 적혀있다고 가정하자.
먼저 공격자는 file=에 본인의 서버 URL을 삽입하는데 입력값 검증이 없으면 바로 include 함수에 전달된다.
애플리케이션 서버는 공격자 서버에 GET요청을 보내 파일을 가져오는데 해당 리퀘스트의 리스폰스로 include 함수에 원격 파일을 포함시켜 페이지 내에서 PHP 파일을 실행하게 하고 내용을 공격자에게 전달한다.
해당 케이스는 텍스트를 출력하는 것이므로 어딘가에 Hello THM 메세지가 출력되고 있을 것이다.
애플리케이션 내부에서 발생하는 권한 문제나 접근 관련 결과가 드러난다는 점,
접근을 막기 위해 필터링을 했지만 몇몇 트릭은 무효화할 수 있다는 점,
외부 서버에서 파일을 호스팅하고 리퀘스트를 받아 악성 파일이나 코드가 삽입될 수 있다는 점 등
url에서 입력되는 여러 트릭으로 입력값 검증이 없는 취약한 애플리케이션에 접근하는 방법에 대해서 배울 수 있었다.