File Download & File Inclusion

심야·2023년 7월 13일
0

파일 다운로드 취약점

공격자가 원하는 임의의 파일을 다운로드 할 수 있다.

서버 소스코드와 DB 접속 소스코드를 다운로드하자!

다운로드 취약점 찾는 팁

  1. download 스크립트가 있는지 → 없다면 어떤 공격을 할 수 있을까?

    1. 허락되지 않은 파일 또는 업로드 한 웹쉘에 바로 접근할 수 있다.
  2. download.php , down.php의 파라미터로 다운로드 받는다면?

    상위 디렉토리로 이동해 다른 파일을 다운로드한다. 이 때 상위 디렉터리로 이동할 때 /../ 로 시작하는지 ../ 로 시작하는지 유추해야 한다.

  3. 파일 경로를 받는가?

    download.php?idx=2

    여기에 sqli 가 존재하면 다운로드 취약점이 가능할 수도 있다.

    select path from board={}
    idx=0 union select '/etc/passwd'

대응 방안

  1. DB, NAS에다가 파일 올린다.

    다운로드 어떻게,,? 직접 해봐야 알 듯?

  2. directory traversal 대응

    ../../../ 문자열 필터링한다. 하지만 우회 방안이 존재해 취약하다.

Local File Inclusion (LFI)

File Inclusion은 동적으로 File을 읽거나 Include 하는 기능이 있는 경우 이를 악용하여 시스템 파일을 읽어 탈취하거나 공격자가 만들어둔 소스코드를 Include 하도록 유도하는 공격이다.

  1. 파일을 include 한다.

  2. 이미지 파일에 php 코드가 삽입되어 있다면 코드가 실행되어 웹 쉘 공격이 가능하다.

  3. 파일을 업로드 하지 않고도 쉘을 얻을 수 있다. request url에 경로를 작성하지 않고 웹 쉘 코드를 삽입한다. 그럼 에러가 발생하고 아파치 로그에 코드가 기록된다

  4. log 디렉터리 경로에 접근해 access_log 파일을 요청하면 기록된 코드가 실행되어 쉘을 얻을 수 있다.

    GET http://192.133.133.133/download.php?file_name=../../var/log/access_log&cmd=ls
profile
하루하루 성실하게, 인생 전체는 되는대로.

0개의 댓글