본문 바로가기
Hacking/Hacking Beginner Class (normaltic)

[해킹 비기너 클래스] Drill Course 4주차 정리 (Local File Inclusion)

by st-og 2023. 10. 12.

이번 수업에서는 LFI(Local File Inclusion) 취약점에 대해 알아보았다

 

LFI란 웹사이트에서 파일 경로를 동적으로 생성하여 로드할 때 발생되는 취약점이다

만약 a라는 페이지에 ?page=" "라는 파라미터를 통해 값을 받고 그 값을 통해 페이지가 동적으로 로드가 되는 경우에 LFI 취약점에 노출되어 있음을 알 수 있다

 

php에서 파일을 include할때는 포함되는 파일이 php 코드일 경우 미리 실행을 하고 실행한 값을 포함하게 된다.

그렇기에 include가 되는 파일에 reverse shell 코드를 넣게 된다면 해당 reverse shell은 서버에서 실행이 된다

 

LFI공격은 크게 두번의 방식으로 진행된다.

1. include할 페이지에 reverse shell php코드를 넣는다

2. 해당 페이지를 include 시켜 reverse shell을 실행시킨다.

 

여기서 1번을 해결하기 위해선 크게 두 가지로 나뉜다.

1.php로 작성된 reverse shell을 웹 서버에 업로드한다.

2.log 파일 등 공격자가 컨트롤할 수 있는 파일에 reverse shell을 업데이트 한 후 해당 파일을 include 한다

 

여기서 2번의 공격자가 컨트롤 할 수 있는 파일은 여러 가지가 있지만 대표적으로 아래의 파일들이 있다

1. /var/log/auth.log  : ssh를 비롯한 시스템에 접근 또는 로그인 시도를 기록하는 파일

2. /var/log/apache2/access.log  : 웹 서버의 접근 로그 파일

 

예를 들어 auth.log라는 파일을 사용해 reverse shell을 실행하려 한다면 auth.log 파일은

로그인 시도를 기록하는 파일이기에 ssh 로그인 시도를 할 때 <? php system(reverse shell code) >@[ip주소]로 하게 되면

auth.log파일에는 정상적인 유저이름인 줄 알고 php코드를 log에 기록할 것이다.

그럼 해당 코드는 log에 저장이 될 것이고 해당 log파일을 include 하게 된다면 서버 측에서 실행이 되기에 reverse shell이

실행되는 것이다

 

LFI 공격을 할 때에는 burp suite의 Repeater를 사용하면 훨씬 편하게 공격을 진행할 수 있다.