[ 파일인클루젼 공격이란? ]
php에서는 include 함수를 이용하여 다른 파일을 소스코드에 직접 포함시킬 수 있기 때문에 php 애플리케이션에서 주로 발생한다. 이때 include 할 파일을 앱 요청을 통해서 지정할 수 있는 경우에 해커가 그 값을 조작하여 원하는 파일을 처리하도록 만들 수 있다.
- 로컬파일인클루젼(LFI) : 이미 시스템에 존재하는 파일을 인클루드
- 리모트파일인클루젼(RFI) : 외부에 있는 파일을 원격으로 인클루드 ▶ 더욱 강력
정상적인 상황)
웹 애플리케이션은 file.php를 인클루드하고 있다. 다만, file.php가 웹 요청을 통해 지정되고 있다.
해커 공격 상황)
해커는 file.php 대신에 hacker.com이라는 자기 서버를 따로 구축한 후 hacker.com에 있는 bad.php를 인클루드 할 것을 지정한다. 만약 웹 애플리케이션이 따로 지정한 값을 검사하지 않으면, hacker.com으로부터 bad.php를 받아와서 인클루드한 후 bad.php 악성파일을 실행하게된다.
[ 파일인클루젼 공격 실습 ]
RFI 공격)
파일을 간단히 하나 만들어서 XAMPP로 돌고있는 웹 서버에 올려두고 이것을 원격에 있는 해커 사이트로 부터 인클루드시킬 악성파일로 간주하도록 하자.
gedit 명령어를 사용하여 bad.php라는 파일명의 텍스트 에딕터를 열고 다음과 같이 입력한다.
/opt/lampp/htdocs 이 경로에 파일을 만들게 되면 외부로 접근할 수 있게 된다.
주소창에 127.0.0.1/bad.php를 입력하면 bad.php 파일에 작성했던 RFI Success!!가 잘 출력되는 것을 볼 수 있다.
이 실습을 하다가 갑자기 네트워크 문제 때문에 이것저것 다 안된다고 해서 해결하느라 애먹었다...
페이지 파라미터 부분에 include.php 대신에 http://127.0.0.1/bad.php 을 입력한다.
그러면 오른쪽 사진과 같이 페이지 왼쪽 상단에 bad.php 파일에 작성했던 문구가 나와야하는데 나는 왼쪽 화면처럼 또 오류가 발생했다. 주소 부분이 나는 localhost가 아닌 ip주소로 되어있어서 localhost로도 바꾸어봤지만 DVWA 설치가 잘못되었는지 변경후에는 아예 아무런 창도 표시되지 않았다.....
실습이 정상적으로 이루어질 경우에, 터미널에서 gedit 명령어로 bad.php 파일에서 출력할 문구를 변경해주어도 문제없이 문구가 잘 바뀌는 것을 확인할 수 있다.
위 사진처럼 시스템 함수를 사용하여 /etc/passwd 의 내용을 보여주도록 코드를 작성하고, 새로고침을 하면 DVWA 부분 위에 passwd 파일의 내용이 표시되는 것을 볼 수 있다.
LFI 공격)
LFI 공격의 특징 ▶ 시스템에 이미 존재하는 파일만 접근할 수 있다
이러한 특징으로 인해 RFI 공격보다는 약하지만 page 파라미터 뒤에 이미 존재하는 파일인 /etc/passwd를 입력하면 해당 파일의 내용이 출력되는 것을 볼 수 있다.
패스 트래버설 (Path Traversal) 공격)
리눅스의 경우 ../ 를 입력하면 상위 폴더로 이동할 수 있는데 이를 파일 인클루젼 공격에서도 활용할 수 있다.
따라서 ../../../../../../ 이렇게 충분히 상위폴더로 이동한 후에 나타낼 폴더명을 입력하면 제일 상위 폴더에서 명령어를 입력한 것과 비슷하게 접근할 수 있다.
LFI가 아니더라도 파일 다운로드를 하는 경우, 패스 트래버설 공격을 이용하여 허가되지 않은 파일을 다운로드 한 사례가 있다.
[ 파일인클루젼 공격 대응 ]
DVWA의 보안 단계를 impossible 단계로 설정한 후 page 파라미터에 다음과 같이 입력하면 에러 메시지가 뜨는 것을 확인할 수 있다.
소스코드를 확인해보면 파일이 정확히 include.php, file1.php, file2.php, file3.php가 아닌지 검사하고 있다. 검사 결과 이 파일들 중 하나에 속하지 않는다면 에러 메시지가 나오도록 하고 있다. 이렇게 꼭 필요한 파일만 include 할 수 있도록 제한함으로써 대응하고있다.
정리하면, 파일 인클루젼 공격에 대응하기 위해서는 가장 좋은 방법은 인클루드 되는 파일이 사용자 입력을 통해 전달되지 않도록 하는 것이다. 하지만 이것이 불가능하다면 반드시 꼭 필요한 파일만 인클루드 될 수 있도록 철저히 검사를 해야한다.
[참고자료] 인프런_화이트해커가 되기 위한 8가지 웹 해킹 기술
'Security > Web hacking' 카테고리의 다른 글
CAPTCHA 공격 (0) | 2023.01.09 |
---|---|
파일 업로드 공격 (0) | 2023.01.08 |
CSRF 공격 (0) | 2023.01.02 |
커맨드인젝션 공격 (0) | 2023.01.02 |
브루트 포스 공격 (0) | 2023.01.02 |