Kali Linux - DVWA실습 (File Inclusion)

Kim Dae Hyun·2021년 5월 14일
0

Security

목록 보기
3/7

File Inclusion?

  • 파일 인클루전은 PHP로 구현된 웹 서버의 취약점을 공격하는 기법으로 PHP의 include 기능을 악용하는 방식이다.
  • PHP는 incude의 파라미터로 넘어온 PHP파일을 현재 웹 페이지에 삽입할 수 있다.
  • 공격자는 악의적인 PHP파일을 생성하여 공격대상 웹 페이지에 include의 파라미터로 넘겨 공격을 수행하거나 현재 시스템의 로컬 파일에 접근한다.

File Inclusion 공격 종류

  • Local File Inclusion (LFI)
    • 이미 같은 시스템 내에 존재하는 파일을 include시키는 방식이다.
  • Remote FIle Inclusion (RFI)
    • 외부에 있는 파일을 원격으로 include시키는 방식이다.

DVWA를 이용한 File Inclusion 공격 (Low Level Security) - RFI방식

  • 공격을 위한 간단한 PHP파일 작성
    • 웹에서 접근 가능하도록 /opt/lampp/htdocs에 생성
  • DVWA file inclusion탭의 첫 번째 파일 Open
    • 사용자의 이름과 IP를 출력하는 간단한 웹 페이지이다.
  • include로 앞서 작성한 PHP파일을 삽입
    • 작성한 PHP파일에 삽입된 것을 확인
  • include를 위한 PHP파일 수정
    • php의 system명령어를 통해 cat /etc/passwd을 수행하도록 하였다.
    • 공격이 성공된 모습

DVWA를 이용한 File Inclusion 공격 (Low Level Security) - LFI방식

  • 로컬 시스템의 파일에 접근하는 방식이다.

DVWA의 Medium Level Security

  • 단순한 RFI 공격에 실패한 모습
  • 소스코드
    • 앞서 CSRF의 대응방법에서 보았던 거와 거의 동일한 방식이다.
    • 문제가 될 수 있는 문자를 공백으로 치환하는 방식이다.
    • http, https 등을 막아 다른 RFI공격에 대응하고, ../, ..\등으로 path Traversal공격에 대응한다.
  • 우회방법
    • http:/를 공백으로 치환하고 있다. http:/ 사이에 http:/를 삽입한다면 http:/를 공백으로 치환 후에도 http:/가 된다.
      ex) hthttp:/tp:/에서 http:/를 공백으로 치환하면 http:/가 남게 된다.
    • 문제가 될 수 있는 문자를 한 번만 치환하는 것이 문제이다.
  • 우회결과
  • Path Traversal?
    • 임의로 디렉토리 경로를 조작하여 권한 외의 파일에 접근 가능한 취약점이다.
    • ../ : 상위 디렉토리로 이동
    • ../를 충분히 입력하여 최상위 디렉토리로 이동하여, 최상위 디렉토리에서 /etc/passwd에 접근할 수 있다.

DVWA의 High Level Security

  • Medium단계의 우회 방법이 불가능한 모습
  • 소스코드
    • fnmatch함수를 통해 파라미터의 이름이 file로 시작하지 않거나 include.php가 아닌 경우 에러를 발생시킨다.
  • 위 대응 방법으로 RFI공격에 대해서는 대응이 되었다.
  • 우회방법
    • file을 디렉토리로 하여 상위 디렉토리로(../) 충분히 이동한 뒤 /etc/passwd파일을 include시켰다.
    • 즉, Path Traversal공격에는 대응하지 못했다.

DVWA의 Impossible Level Security

  • High단계의 우회 방법이 불가능한 모습
  • 소스코드
    • 꼭 필요한 파일만 include될 수 있도록 완전히 정적으로 파일을 지정하였다.
profile
좀 더 천천히 까먹기 위해 기록합니다. 🧐

1개의 댓글

comment-user-thumbnail
2021년 5월 15일

WoW 좋은 내용 감사합니다

답글 달기