[ 환경 ]
DVWA | v1.9 |
Burp Suite | Community Edition v2024.11.2 |
if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {
echo "ERROR: File not found!";
exit;
허용된 파일 이름을 명시적으로 지정하여 제한다며, 예기치 않은 파일 요청을 방지한다. 하지만 새로운 파일을 허용하려면 조건문에 파일 이름을 추가해야 하므로 관리가 어려운점이 존재한다. 또한 파일이 실제로 존재하는지 확인하지 않고, 허용된 파일 목록을 조건문으로 관리하기 때문에 코드가 길어질 가능성이 있다.
아래는 앞서 살펴본 코드를 개선한 코드의 예제로 보안 강화와 기능 개선을 목표로 기존 코드의 한계를 극복하고, 더욱 안전한 구현을 제공한다.
<?php
$allowed_files = ['include.php', 'file1.php', 'file2.php', 'file3.php'];
$file = $_GET['page'] ?? 'include.php'; // 기본값 설정
if (in_array($file, $allowed_files)) {
$file_path = realpath('/var/www/html/pages/' . $file);
if ($file_path && strpos($file_path, '/var/www/html/pages/') === 0 && file_exists($file_path)) {
include($file_path);
} else {
echo "ERROR: File not found!";
}
} else {
echo "ERROR: Invalid file!";
exit;
}
?>
DVWA : File Upload - Medium level (0) | 2025.01.05 |
---|---|
DVWA : File Upload - Low level (0) | 2025.01.05 |
DVWA : File Inclusion - High level (0) | 2025.01.03 |
DVWA : File Inclusion - Medium level (1) | 2025.01.03 |
DVWA : File Inclusion - Low level (2) | 2025.01.02 |