웹 공부

RFI/LFI

insetto:) 2023. 11. 13. 00:38
반응형

Local File Inclusion(LFI) 개념

  • LFI는 Local에 있는 파일을 읽는 공격임
  • 이를 통해 공격자가 시스템 파일을 탈취하거나 미리 업로드된 쉘 코드를 Include 시켜 의도한 코드를 실행하게 할 수 있음

Wrapper

  • PHP에는 URL style 프로토콜을 위한 wrapper가 존재.
  • 파일 시스템 관련 함수로 filename에 Wrapper을 써서 개발자의 의도와 다른 행위 발생 가능

대표적인 시스템 함수들

LFI 공격을 하면서 유용하게 사용할 수 있는 wrapper

  1. expect:// (system command 실행 : www.[웹 사이트의 주소].index.php?page=expect://ls)
  2. php://filter/ (다양한 I/O스트림 다루는데 사용, 대표적으로 base64 encoding으로 문서 열람 : www.[웹 사이트의 주소].index.php?page=php://filter/convert.base64-encode/resource=/etc/passwd)
  3. zip:// (zip파일의 압축을 푼 다음에 파일안에 있는 코드를 실행시켜 주는 기능 : www.[웹 사이트의 주소].index.php?page=zip://file.zip#shell.php)

Remote File Inclusion(RFI) 개념

  • RFI는 원격 파일 포함 공격
  • 공격자가 자신의 서버에 셸 코드를 미리 준비 시켜두고 취약 서버가 해당 파일을 소스코드로 incldue 시켜 의도한 코드를 실행하게 할 수 있음

드림핵 php-1 문제

  • php wrapper로 LFI 공격을 해야함

  • view.php 파일을 보면 됨
    • 필터링 기법을 이용하면 된다. (php=filter/convert.base64-encode/resource=[파일이름]
    • page=php://filter/convert/base64-encode/resource=../uploads/flag
반응형