따라서 LFI 취약점은 서버에서 파일을 읽을 수 있또록 하고 암호 또는 민감한 정보가 있는 파일을 읽을 수 있습니다.
실제 대상 서버에 대한 전체 액세스 권한 또는 전체 제어 권한을 얻을 수 있습니다.
이제 LFI를 이용하여 리버스 쉘을 획득해보겠습니다.
서버에서 파일을 읽을 수 있으므로 해당 서버에서 무엇이든 쓸 수 있다는 점을 악용하는 것입니다.
읽을 수 있는 파일에 코드를 주입하는 것을 시도합니다.
먼저 environ 파일에 코드를 주입해보겠습니다.
먼저 현재 컴퓨터에서 파일을 확인해봅니다.
위 파일은 현재 환경에 대한 정보를 포함하고 있는 파일입니다.
DVWA에서 위 파일을 보도록 URL을 변경합니다.
현재 환경에 대한 변수들을 볼 수 있습니다.
여기서 주목해야하는 변수는 User-Agent 변수입니다.
이 변수는 클라이언트 측에서 전송하므로 우리가 변경할 수 있습니다.
서버가 코드를 실행하는지를 먼저 확인합니다.
<?phpinfo();?>
버프스위트를 이용하여 요청을 가로챈 뒤 User-Agent 변수 값을 간단하게 PHP정보를 보여주는 phpinfo()함수로 저장한 뒤 Forward를 합니다.
웹사이트에 php정보가 나타나게 되며 서버가 코드를 실행하고 있다는 것을 확인합니다.
그러므로 이제 파일에 역방향 쉘을 얻기위해 코드를 삽입하면 됩니다.
php에서 외부 프로그램을 실행하기 위해 passthru 함수를 사용합니다.
공격자는 netcat을 이용하여 해당 포트를 열고 기다리고 있습니다.
User-Agent변수 값을 변경합니다.
이후 Forward를 보내면 터미널에 연결이 생깁니다.
이제 쉘이 연결이 되었습니다.