파일 인클루전 공격은 주로 PHP 애플리케이션을 대상을 발생한다.
PHP는 인클루드라는 기능을 제공하는데, 이 기능은 include라는 함수를 이용하여 다른 파일을 소스코드에 직접 포함시킬 수 있는 기능이다.
인클루드 할 파일을 외부 사용자가 지정할 수 있는 경우 파일 인클루전 취약점이 존재하게 된다.
파일 인클루전 공격은 공격자가 인클루드 할 파일이 각각 호스트 내부의 파일인지 외부의 파일인지에 따라 로컬 파일 인클루전(LFI)과 리모트 파일 인클루전(RFI : 더욱 심각한 공격)으로 구분한다.
RFI : 공격자는 자신이 관리하는 호스트로부터 악성코드를 인클루드 할 것을 지정한다.
LFI : 공격자는 ../../를 반복해 루트 디렉터리에 접근하게 되고 그 이후 모든 디렉터리에 접근할 수 있게 된다.
../../를 이용한 공격 기법 : 디렉터리 트래버셜 공격
파일이 인클루드되는 웹 페이지에 접속한다.
이후 악성 파일을 웹 페이지에서 열 수 있게끔 해준다.
악성 파일은 단순하게 /etc/passwd를 출력시키는 코드이다.
이후 page의 파라미터를 조작하여 악성 파일을 인클루드 해준다.
page 파라미터에 ../../../../../../etc/passwd와 같이 디렉터리 트래버셜 공격을 실행한다.
외부 사용자가 입력한 파일 이름을 인클루드에 사용하지 않게 한다.
어쩔 수 없이 파일의 이름을 외부에서 입력받아야 하는 경우에는 반드시 그 입력값을 검증해야 한다.
가급적이면 화이트리스트 검증을 사용하여, 나머지 파일 이름에 대해서는 모두 차단해야 한다.
블랙리스트 검증의 경우에는 http://, https:// 와 같은 프로토콜 관련 문자열이나, ../와 같은 디렉터리 트래버셜 공격을 위한 문자열을 차단해야 한다.
위 글은 ' 화이트 해커를 위한 웹 해킹의 기술 최봉환 저'를 공부하며 쓴 글입니다.
Step9. 민감한 데이터 노출 (0) | 2021.03.07 |
---|---|
Step8. 파일 업로드 공격 (0) | 2021.02.28 |
Step6. 크로스 사이트 요청 변조(CSRF) 공격 (0) | 2021.02.26 |
Step5. 크로스 사이트 스크립팅 공격 (0) | 2021.02.25 |
Step4. 커멘드 인젝션 공격 (0) | 2021.02.24 |
댓글 영역