반응형
SMALL

1. 파일 업로드 공격 Medium 단계 실습

 

[그림 1-1] 파일 업로드 시도

cmd.php 파일 업로드 시도 결과 jpeg와 png 확장자만 허용한다는 메시지가 출력되면서 php 파일은 업로드가 되지 않음을 볼 수 있다.

 

[그림 1-2] 소스 코드

소스 코드를 보면 업로드할 파일의 MIME 형식을 점검한다. MIME 형식이 image/jpeg, image/png 인 경우에만 업로드를 허용하고 있다. 웹 브라우저는 확장자를 기반으로 MIME 형식을 결정하기 때문에 실제 jpg 파일이 아니더라도 MIME 형식은 image/jpeg가 된다.

 

[그림 1-3] 프록시

파일 업로드 시도 시 프록시를 설정하면 Content-Type 헤더가 있는데 이 부분을 image/jpeg로 변조 후 Intercept On을 보낸다.

 

[그림 1-4] 실행 결과

 Content-Type 헤더 변조 후 파일 업로드 시도 결과 정상적으로 업로드에 성공했음을 볼 수 있다. 나머지 과정은 Low 레벨에서와 같다.

 

2. 파일 업로드 공격 High 단계 실습

[그림 2-1] 파일 업로드

cmd.php 파일 업로드 시도 결과 jpeg와 png 확장자만 허용한다는 메시지가 출력되면서 php 파일은 업로드가 되지 않음을 볼 수 있다.

 

[그림 2-2] 소스 코드

소스코드를 보면 대소문자 구분 없이 확장자가 jpg, jpeg, png일때만 파일 업로드를 허용한다. Medium 레벨과 차이가 난다면 getimagesize 함수를 사용해 실제 이미지인지 아닌지 검사를 한다는 것이다. 만약 실제 이미지가 아니라면 false를 반환한다.

 

[그림 2-3] 프록시

프록시를 보면 filename에서 cmd.php.jpg로 변조하고 getmagesize 함수를 우회하기 위해 내용에 GIF89a를 추가한다. GIF89a는 gif 이미지 파일에 표준에 정의된 값으로 이미지 파일처럼 속이는게 가능하다.

 

[그림 2-4] 실행 결과

filename 및 내용 변조 후 파일 업로드 시도 결과 정상적으로 업로드에 성공했음을 볼 수 있다.

 

[그림 2-5] 웹 쉘 실행

웹 쉘 실행 결과 이미지만 출력되고 내부의 PHP 코드는 실행되지 않아 공격이 불가능한 상태임을 알 수 있다. 따라서 파일 업로드 공격이 완벽하게 방어 되었다. 실제로도 High 레벨의 방어 수준만 되도 파일 업로드 공격은 최상의 방어 상태라고 보고 있다.

반응형
LIST

'웹해킹 > DVWA' 카테고리의 다른 글

Command Injection 공격 (2)  (0) 2020.01.04
파일 업로드 공격 대응 방안  (0) 2020.01.04
파일 업로드 공격 (1)  (0) 2020.01.04
파일 실행(File Inclusion) 공격 (2)  (0) 2020.01.04
파일 실행(File Inclusion) 공격 (1)  (0) 2020.01.04
블로그 이미지

만년필석사

,