[웹해킹] 파일 인클루젼 공격

주연쓰·2021년 7월 7일
0

웹해킹

목록 보기
10/23

1. 파일 인클루젼 이란?

  • PHP에서는 include() 명령을 이용하여 다른 파일을 직접 소스 코드에 삽입하는데, 이때 해커가 코드를 조작하여 원하는 파일을 include()하게 하도록 하는 공격 방법이다.

(1)로컬 파일 인클루젼(LFI)

  • 웹 서버에 이미 존재하는 파일을 include()

(2) 리모트 파일 인클루젼(RFI) -더 강력

  • 원격으로 외부에 있는 파일을 include()

2. RFI 공격

(1) bad.php 파일 만들기

먼저, 메모장(nano 편집기)로 bad.php 파일을 만든다.
경로는 /opt/lampp/htdocs 이다.
내용은 다음과 같이 입력한다.

<?
	print "RFI Success!!";
?>

이후 웹페이지에서 127.0.0.1/bad.php 로 접속하여 잘 작동되는지 확인한다.
(RFI Success!! 라는 내용이 뜨면 성공한 것)

(2) File Inclusion > 파일 인클루젼 공격하기

(DVWA Security 는 low 로 설정하였다.)

File Inclution 페이지의 링크를 보면 page=뒤에 include.php 라고 적혀있는데,이는 웹에서 include.php 파일을 받아와 보여주는 페이지 라는 것이다.

따라서 저 자리에 대신 http://127.0.0.1/bad.php 를 넣으면, 좌측 상단에 우리가 입력한 코드의 내용이 출력된다.

우리가 만든 bad.php 파일에서 출력되는 내용을 바꾸고 웹을 새로고침하면, 바뀐대로 출력된다.

또, /etc/passwd 파일의 내용을 보여주는 코드를 입력하고 웹을 새로고침 하면, 명령어대로 passwd 파일의 내용이 출력된다.

3. LFI 공격

(1) 이미 존재하는 파일만 불러올 수 있다.

따라서 page= 뒤에 이미 존재하는 파일인 etc/passwd를 입력하면, 파일의 내용이 출력된다.

(2) path traversal 공격

page= 뒤에 ../를 입력하면 상위폴더로 이동할 수 있다.
따라서 ../../../../ ... 이렇게 충분히 상위폴더로 이동한 뒤에 명령어를 입력하면 제일 상위폴더에서 명령어를 입력한 것과 비슷하게 접근할 수 있다.

4. 파일 인클루젼 대응

(1) impossible 단계 : path traversal 공격을 했을 때 에러 발생 -> include 하는 파일들을 정해두고, 그 외의 파일들은 include 했을 때 에러가 발생하도록 코드를 작성해 두었다.

profile
( •̀ ω •́ )✧

0개의 댓글