다음은 보호의 관점에서 Thinkphp의 역사적 취약점을 소개하는 Thinkphp 프레임워크 개발 튜토리얼 칼럼입니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!
1. 소개
2019년 초 Thinkphp5의 RCE 취약점 2개가 인터넷에 공개되었습니다. 해당 취약점은 사용하기 매우 쉬우므로 많은 공격자가 스캐너를 사용하여 전체 네트워크를 검사합니다. 우리는 이러한 취약점을 이용하여 ips 장치를 통한 일괄 getshell 공격을 수행하는 대량의 공격 트래픽을 지속적으로 관찰하고 있습니다. 이 기사에서는 주로 트래픽 관점에서 간략하게 분석하고 thinkphp를 사용하여 전체 네트워크 스캔 및 getshell 트래픽 추적을 공격합니다.
2. Thinkphp RCE 취약점 및 트래픽 스캐닝
2.1 취약점 원칙 검토
2.1.15.0.x 버전 취약점
원칙은 Thinkphp 처리 요청의 핵심 클래스가 Request(thinkphp/ library/think/ Request.php), 이 클래스는 HTTP 요청에 대한 일부 설정을 구현할 수 있습니다
Thinkphp는 "form camouflage 변수" 구성을 지원합니다. 기본적으로 변수 값은 _method이므로 method()에서 "form camouflage 변수"를 전달할 수 있습니다. 변수" 변수 적용을 수행하여 이 클래스의 함수를 호출하고 $_POST가 함수의 매개변수로 전달됩니다. 필터 속성(필터 속성은 전역 필터링에 사용되는 함수를 저장함)을 덮어쓰는 등 요청 클래스 속성 값을 재정의하여 코드 실행을 수행하도록 요청을 구성할 수 있습니다.
2.1.25.1.x-5.2.x 버전 취약점
은 5.0.x 버전 취약점과 유사합니다. 취약점 지점은 Request(thinkphp/library/think/Request.php) 클래스에 존재합니다. 여기서:
$method 변수는 $this->method로, POST의 "_method" 매개변수 값과 동일합니다. override $filter 속성 값을 사용할 수 있습니다(filter 속성은 전역 필터링에 사용되는 함수를 저장합니다. ) 코드 실행을 달성합니다.
이 취약점이 발생하면 경고 수준 예외가 발생하여 프로그램이 종료됩니다. 이때 예외를 무시하려면 public/index.php에서 error_reporting(0)을 구성해야 합니다. 그리고 아래와 같이 코드를 계속 실행합니다.
2.2 Thinkphp 취약점에 대한 전체 네트워크 검색
트래픽 관점에서 Thinkphp 취약점을 사용하는 것은 http 패킷을 보내는 것입니다. 해커의 스캐너는 먼저 간단한 문장을 지문으로 작성한 다음 파일에 액세스하여 지문 정보가 반환되는지 확인합니다. 액세스에 성공하면 기본적으로 두 개의 http 패킷이 전송된다는 의미입니다. 스캐너는 성공적인 쓰기를 기록합니다. 웹 사이트 IP와 쉘의 URL을 입력한 다음 후속 작업을 위해 부엌칼로 수동으로 연결합니다.
IPS 장치 로그 및 수동 확인에서 공격자의 공격 단계는 2단계로 구성됩니다. 1. 전체 네트워크를 스캔하여 exp를 보내고 지문을 기반으로 쉘을 가져올지 여부를 식별합니다. 2. 원격 제어를 위해 헬리콥터로 연결합니다. 2.2.1 전체 네트워크 스캔 및 보내기 exp
일반적으로 스캔 로그는 세그먼트 B 또는 세그먼트 C를 통과하며 기록된 스캐너 로그 조각은 다음과 같습니다.
3가지 특징이 있습니다. 대상 IP가 세그먼트 C 또는 B와 동일합니다. 2. 포트가 상대적으로 고정되어 있습니다. 3. 셸이 성공적으로 작성되었는지 확인하기 위해 스캐너에서 보내는 메시지는 스캐너의 전용 지문을 사용하므로 스캔 시간이 매우 많이 소요됩니다. ips에는 이 탐지 규칙이 없습니다.
2.2.2 Chopper Connection
공격자가 해킹된 사이트에 부엌칼을 이용해 수동으로 접속할 경우에도 ips로 탐지되며 공격자의 돌파구로서 컨텍스트 연관을 통해 소스를 Thinkphp 취약점으로 추적하게 됩니다. 가리키다. 당시 기록된 몇 가지 전형적인 사례를 선택하세요.감염된 Zhengzhou 서버 1(122.114.24.216):
해당 웹사이트는 실제로 thinkphp5용으로 개발되었으며, 웹셸 트로이 목마는 여전히 서버에 있었고 삭제되지 않았습니다. 그때에. 해커가 업로드한 트로이 목마는 서버를 통해 접근할 수 있습니다. 지문 정보는 Baidu입니다. 스캐너는 이 지문을 사용하여 자동으로 getshell의 성공 여부를 판단하고 URL을 기록합니다.
감염된 사천성 서버(182.151.214.106):
감염된 사천성 서버(182.151.214.106):
이 경우 트로이 목마는 제거되었지만 당시 서버는 여전히 연결되어 있었고 서버는 사용자 이름은 chanpei로 의심됩니다. 해당 장치는 해커가 트로이 목마에 연결하고 네트워크 쿼리 명령을 실행할 때 메시지를 기록했으며, 얻은 정보는 위의 오류 메시지와 일치했습니다. 그리고 서버가 인트라넷의 컴퓨터에도 있는 것을 볼 수 있습니다. 스크린샷은 아래와 같이 네트워크에 192.168.9.0 및 192.168.56.0이라는 두 개 이상의 서브넷이 포함되어 있음을 보여줍니다.
손상된 미국 서버(161.129.41.36):
이 미국 서버의 웹쉘도 장치 패킷 캡처를 통해 정리되었으며, 해커가 동일한 웹쉘 트로이목마, 즉 x.php를 사용한 것으로 의심됩니다. 같은 해커가 되는 것입니다.
해커가 미국 서버의 x.php(webshell) 파일 내용을 탐색했을 때 기기에는 x.php의 비밀번호가 xiao이고 플래그도 baidu라고 기록되어 있었습니다.
Thinkphp에서 이 두 가지 고위험 RCE 취약점을 이용하여 다수의 서버 취약점이 발견된 것을 볼 수 있습니다.
3. 요약
이 글은 Thinkphp의 역사적 취약점 원칙을 결합하고 Thinkphp 취약점을 이용한 공격에 성공한 사례를 공유합니다. 현재 장치에서 매일 감지되는 가장 일반적인 로그는 weblogic, struts2, thinkphp와 같은 직접 getshell 로그 또는 ssh rdp 무차별 대입 크래킹 로그입니다. 많은 공격자가 최신 익스플로잇을 발견하면 자체 스캐너를 장착하여 전체 네트워크를 스캔하므로 하루에 여러 개의 셸이 발생할 수 있습니다. 따라서 고위험 취약점이 발생한 후에는 사용자가 적시에 패치를 적용하고 보안 장치 정책을 구성하는 것이 좋습니다. 여러 실제 사례로 볼 때 스캐너의 위험은 항상 존재합니다. 직접 IP 액세스를 금지하도록 웹사이트를 구성할 수 있다면 이 위협은 어느 정도 완화될 수 있습니다. 레벨이 제한되어 있으므로 누구나 기사의 오류를 지적하고 조언을 공유할 수 있습니다
위 내용은 보호 관점에서 Thinkphp의 역사적 취약점을 보는 방법을 가르쳐주세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!