현재 위치: > 최신 기사 목록> PHP_UNAME () 공격자에 의한 남용의 전형적인 사례 분석

PHP_UNAME () 공격자에 의한 남용의 전형적인 사례 분석

M66 2025-06-02

소개

PHP 프로그래밍에서 php_uname () 함수는 일반적으로 사용되는 도구이며, 현재 운영 체제의 버전 정보 및 기계 하드웨어 유형을 반환하는 데 사용됩니다. 이 기능은 개발자에게 기본 시스템 관련 정보를 제공하지만 악의적 인 공격자는 서버에서 민감한 정보를 유출하도록 악의적 인 공격자가 남용 할 수도 있습니다. 이 기사는 공격자에 의해 학대받는 PHP_Uname () 의 심층적 인 일반적인 사례를 분석하고 공격자가 잠재적 공격을 수행하기 위해 시스템 정보를 얻을 수있는 방법을 탐구합니다.

1. php_uname () 함수 소개

PHP에서 php_uname () 함수의 기능은 현재 운영 체제의 자세한 정보를 얻는 것입니다. 기본 사용량은 다음과 같습니다.

 $system_info = php_uname();
echo $system_info;

이 기능에 의해 반환 된 내용에는 일반적으로 다음 부분이 포함됩니다.

  • 운영 체제 이름 (예 : Windows, Linux, Darwin 등)

  • 운영 체제 버전 정보

  • 기계 하드웨어 유형 (예 : x86_64)

개발자는이 정보를 사용하여 일부 시스템 수준 최적화 또는 디버깅을 수행 할 수 있습니다. 그러나 공격자가 특정 수단을 통해이 정보에 액세스 할 수 있다면 대상 서버의 특정 운영 체제 환경을 이해하고 후속 공격에 대한 단서를 제공 할 수 있습니다.

2. 공격자가 php_uname () 함수 사용 방법

php_uname ()을 사용하여 공격자가 얻은 시스템 정보는 운영 체제 및 서버 버전을 식별하여 적절한 공격 방법을 선택할 수 있습니다. 공격자가 채택 할 수있는 몇 가지 전략은 다음과 같습니다.

2.1 운영 체제 유형을 식별하십시오

공격자는 php_uname () 을 통해 운영 체제의 유형과 버전을 얻을 수 있습니다. 예를 들어, 결과가 반환되면 서버가 Windows에서 실행 중이라는 것을 보여 주면 공격자는 Windows 별 취약성을 악용하려고 시도 할 수 있습니다. Linux 시스템 인 경우 특정 Linux 배포에 대한 취약점을 찾으려고 시도 할 수 있습니다.

 $system_info = php_uname();
if (strpos($system_info, 'Windows') !== false) {
    // ~에 맞서WindowsOS 공격 전략
}

2.2 서버 환경 감지

시스템 정보를 얻음으로써 공격자는 서버의 하드웨어 유형, 프로세서 아키텍처 등을 결정할 수 있습니다.이 정보는 공격자가 특정 악성 코드를 실행할 수 있는지 또는 일부 아키텍처 취약성을 이용할 수 있는지 여부를 결정하는 데 도움이됩니다. 예를 들어, 일부 취약점은 특정 하드웨어 플랫폼에만 존재할 수 있습니다.

2.3 알려진 취약점을 식별합니다

공격자가 대상 서버가 특정 버전의 운영 체제를 실행하고 있다고 판단 할 수 있다면 CVE와 같은 공개 취약성 데이터베이스를 이용하여 해당 운영 체제 버전과 관련된 알려진 취약점을 찾을 수 있습니다. 이러한 취약점은 추가 공격을 시작하는 데 사용될 수 있습니다.

2.4 사회 공학 공격을 수행하십시오

공격자는 또한 사회 공학 공격의 수단으로 시스템 정보를 사용할 수 있습니다. 공격자가 충분한 시스템 정보 (예 : 운영 체제 버전, 호스트 이름, 도메인 이름 등)를 얻는 경우이 정보를 다른 정보와 결합하여 피싱 이메일, 악의적 인 웹 사이트 등을 통해 피해자를 추가로 공격 할 수 있습니다.

3. 실제 사례 분석

사례 1 : php_uname ()을 통해 운영 체제를 식별하고 알려진 취약점을 이용하십시오.

경우에 따라 공격자는 간단한 php_uname () 함수 호출을 통해 서버 운영 체제 버전을 식별 할 수 있습니다. 예를 들어, 공격자는 다음 정보를 반환 할 대상 서버를 찾습니다.

 Linux webserver 4.15.0-74-generic #83-Ubuntu SMP Fri May 10 16:11:12 UTC 2019 x86_64

이 정보는 공격자에게 대상 서버가 버전 4.15와 함께 Ubuntu Linux 시스템을 실행하고 있음을 알려줍니다. 공개 취약성 데이터베이스를 쿼리함으로써 공격자는이 버전에 알려진 취약점 (예 : 방치되지 않은 Samba 취약성)이 있음을 발견하여 서버를 추가로 제어하기 위해 이용할 수 있음을 발견했습니다.

사례 2 : 대상 공격에 대한 php_uname ()을 통해 기계 정보 수집

공격자가 약한 비밀번호 취약점을 통해 대상 서버에 들어가서 php_uname () 함수를 호출하여 운영 체제 정보를 얻는다고 가정하면 반환 된 결과는 다음과 같습니다.

 Darwin MacBookPro 19.6.0 Darwin Kernel Version 19.6.0: Mon Apr  6 22:14:47 PDT 2020; root:xnu-6153.141.1~1/RELEASE_X86_64 x86_64

그 결과 공격자는 대상 서버가 Mac OS 시스템을 실행 중이며 특정 버전의 MacBookPro라는 것을 알고 있습니다. 이 정보를 사용하여 공격자는 해당 특정 버전에 대한 알려진 취약점을 검색하여 추가 공격을 시작할 수 있습니다.

4. php_uname ()의 남용을 방지하는 방법은 무엇입니까?

PHP_UNAME () 함수가 너무 많은 민감한 정보를 누출하는 것을 피하기 위해 개발자는 다음과 같은 조치를 취할 수 있습니다.

4.1 외부 액세스를 제한합니다

운영 체제 정보를 표시 할 필요가없는 일부 응용 프로그램의 경우 개발자는 PHP_UNAME () 기능을 비활성화하거나 조건부 판단을 통해 인증 된 사용자만이 기능을 호출 할 수 있도록해야합니다.

 if (isset($_SESSION['admin'])) {
    echo php_uname();
} else {
    echo "시스템 정보에 액세스 할 수있는 권한이 없습니다";
}

4.2 더 안전한 환경 구성을 사용하십시오

서버의 php.ini 구성 파일에서 개발자는 남용 될 수있는 일부 기능을 비활성화하고 공격 표면을 줄일 수 있습니다. 예를 들어, php_uname () 함수를 비활성화 할 수 있습니다.

 disable_functions = php_uname

4.3 웹 애플리케이션 방화벽 사용 (WAF)

웹 애플리케이션 방화벽은 알려진 취약점에 대한 공격을 차단하는 데 도움이 될 수 있습니다. 개발자는 WAF를 구성하여 악의적 인 요청을 감지하고 차단하여 공격자가 시스템 정보를 얻어 추가 공격을 시작하지 못하게 할 수 있습니다.

4.4 운영 체제 및 소프트웨어를 정기적으로 업데이트하십시오

운영 체제 및 소프트웨어를위한 보안 패치에 대한 적시 업데이트는 공격자가 알려진 취약점을 악용하지 못하게하는 효과적인 방법입니다. 개발자는 서버의 운영 체제 및 응용 프로그램이 최신 상태인지 확인하고 악용 위험을 줄여야합니다.

5. 요약

php_uname () 함수는 개발에 유용한 도구이지만, 유출 된 시스템 정보는 공격자가 추가 공격을 수행 할 수있는 진입 점이 될 수 있습니다. 기능에 의해 반환 된 정보를 분석함으로써 공격자는 운영 체제 유형, 버전 및 서버의 기계 하드웨어 유형을 유추하여 적절한 공격 전략을 선택할 수 있습니다. 따라서 개발자는 이러한 잠재적 위험에 대한 인식을 높이고 서버를 공격으로부터 보호하기 위해 필요한 예방 조치를 취해야합니다.