File Inclusion

justugi·2024년 6월 14일
0

DVWA

목록 보기
5/16

주의사항 : 이 포스팅은 개인 학습 및 교육적 목적으로 작성되었으며, 제공하는 정보를 악용하여 불법적인 행위를 하는 것은 엄격히 금지되어 있습니다. 타인의 시스템에 대한 접근 권한을 얻기 위해 명시적인 동의를 받아야 하며, 이러한 기술을 사용하여 발생하는 모든 결과에 대한 책임은 사용자에게 있습니다.

0. 초기 화면

1. 서비스 실행



2. GET 요청에서 php 파일 접근 경로 조작

  • Help의 타겟에 해당하는 경로에 접근한다.

3. base64 디코딩

  • GET 요청을 대상 php파일을 base64로 인코딩하여 반환한다. (데이터 손실 없이 텍스트 데이터를 출력하기 위해 base64로 인코딩)

//3번 문장
$line3 = "--LINE HIDDEN ;)--"; 
  • Line3 변수에 --LINE HIDDEN ;)-- 을 덮어써서 숨김
//5번 문장
<!-- 5.) The world ...
-->
  • HTML 주석처리하여 내용을 숨김

4. php 파일 리뷰

low.php

<?php

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

?>

index.php

<?php

define( 'DVWA_WEB_PAGE_TO_ROOT', '../../' );
require_once DVWA_WEB_PAGE_TO_ROOT . 'dvwa/includes/dvwaPage.inc.php';

dvwaPageStartup( array( 'authenticated' ) );

$page = dvwaPageNewGrab();
$page[ 'title' ]   = 'Vulnerability: File Inclusion' . $page[ 'title_separator' ].$page[ 'title' ];
$page[ 'page_id' ] = 'fi';
$page[ 'help_button' ]   = 'fi';
$page[ 'source_button' ] = 'fi';

dvwaDatabaseConnect();

$vulnerabilityFile = '';
switch( dvwaSecurityLevelGet() ) {
	case 'low':
		$vulnerabilityFile = 'low.php';
		break;
	case 'medium':
		$vulnerabilityFile = 'medium.php';
		break;
	case 'high':
		$vulnerabilityFile = 'high.php';
		break;
	default:
		$vulnerabilityFile = 'impossible.php';
		break;
}

require_once DVWA_WEB_PAGE_TO_ROOT . "vulnerabilities/fi/source/{$vulnerabilityFile}";

// if( count( $_GET ) )
if( isset( $file ) )
	include( $file );
else {
	header( 'Location:?page=include.php' );
	exit;
}

dvwaHtmlEcho( $page );

?>
  • vulnerabilityFile 에 low.php 에서 GET으로 얻은 page 값을 그대로 활용하고 있다.
  • include( $file ) 에서 사용자 입력을 직접 처리하므로 개발자가 의도하지 않은 파일이 불러와 질 수 있다.

출처
https://medium.com/@Aptive/local-file-inclusion-lfi-web-application-penetration-testing-cc9dc8dd3601
https://www.freecodecamp.org/news/what-is-base64-encoding/
https://velog.io/@jckim22/%EB%B9%A1%EA%B3%B5%ED%8C%9F-5%EC%A3%BC%EC%B0%A8-%EA%B3%BC%EC%A0%9C-5-DVWA-write-up-File-Inclusion-row

profile
IT 보안, 관심 있는 것을 공부합니다.

0개의 댓글