2012-01-10 2 views
3

PHP에서 원격 파일 포함은 $_GET, $_POST, $_COOKIE의 입력을 통해 수행 할 수 있습니다. 나는 그것이 불가능하다는 것을 알고 있지만, 어떤 가능성에 의해 가짜 값을 $_SERVER에서 나오게 할 수 있습니까?

드물게 원격 파일 포함 소스가 $_SERVER이 될 수 있습니까?

+0

복제본 [어느 $ _SERVER 변수가 안전합니까?] (http://stackoverflow.com/questions/6474783/which-server-variables-are-safe) – rook

답변

3

$ _SERVER 등

값의 번호를 직접 설정하고 (예 QUERY_STRING 등)는 사용자에 의해 조작 그래서 잠재적으로 취약하는 요청을 액세스하는 데 사용되는 경로를 헤더에 정보를 포함하는 배열 인 $ _GET 및 $ _POST와 정확히 같은 방식입니다. 그것은 당신이 자신의 코드에서 어떻게 그 값을 사용하는지에 달려 있습니다.

가짜가 아니겠습니까? $ _SERVER의 특정 색인을 가지고 있었습니까?

+0

내 집중은 DOCUMENT_ROOT와 같은 서버 정의 값, SERVER_NAME, PHP_SELF 등.'include '에 대한 로컬 PHP 파일을 찾는 데 사용할 수 있습니다. – Googlebot

+0

PHP_SELF는 확실히 신뢰할 수 없습니다. 그것을 에코하고 그것을 요청하는 파일을 만들어보십시오. "domain.com/phpselfecho.php/anyrandompieceoftext". SCRIPT_NAME을 사용하는 것이 훨씬 낫습니다. –

+0

@ Nick Downton : XSS 취약점이 있습니다. – symcbean

1

예, $ _SERVER의 일부 값을 조작 할 수 있습니다.

그러나 LFI는 공격자가 실행될 코드에 대한 참조를 삽입 할 수 있어야합니다. PHP를 실행하여 해당 코드를 실행하십시오. 모든 요청 (예 : 정적 사이트 운영)에서 전송 된 URL 이외의 모든 것을 무시하려는 경우가 아니라면 변수로 참조되는 코드가 호출되는 방식에 대한 노력을 집중적으로 수행 할 수 있습니다.

관련 문제