📨LFI without File Upload Vulnerability

DATE : 2024/2/19

File Inclusion Vulnerability (feat. Image Web Shell?)에서 다뤘던 내용에 의하면

Local File Inclusion 공격은 다른 파일을 가져가 사용하는 파일에 공격자가 원하는 파일을 끼워 넣어

코드를 실행하거나 파일 내용을 출력하는 형태로 이루어지는 공격이다.

앞서 다룬 LFI 공격을 수행하는 과정에서는 다른 파일로 삽입될 파일을 업로드하는 과정이 선행되었다.

파일 내용을 화면에 출력하고자 하는 게 아닌, Web Shell을 실행하고자 하는 입장에서는

당연히 Web Shell을 서버에 올려야 하기 때문!

하지만 만약에 LFI 취약점은 존재하는데 File Upload 취약점이 존재하지 않는 다면 어떻게 해야 할까?? 🤔

파일을 업로드할 수 있는 구멍을 찾지 못하는 경우라도 공격자가 영향을 줄 수 있는 파일이 존재하는데..!

그건 바로 Web Log이다.

access log file에는 사용자가 서버로 보낸 요청이 기록되는데

이때 만약 다음과 같은 PHP code를 입력하면 어떻게 될까??

<?php system($_GET['cmd']);?>

php와 system 단어 사이에 띄어쓰기가 들어간다는 걸 고려했을 때

GET /<?php system($_GET['cmd']);?> HTTP/1.1

HTTP header에서 HTTP version이 나와야 하는 위치에 버전 정보가 없기 때문에 에러가 발생하게 된다.

하지만..! URL 바에 입력한 <?php ~~?> 내용은 access log에 기록되기 때문에

이 로그 파일을 include하도록 전달하면 include 하는 측 코드가 실행되는 과정에서

로그 파일에 들어있는 PHP code가 동작하게 되므로 따로 파일을 업로드 하지 않더라도

Web Shell을 사용할 수 있게 된다.

Last updated