>  기사  >  PHP 프레임워크  >  ThinkPHP6 임의 파일 작업 취약점 분석

ThinkPHP6 임의 파일 작업 취약점 분석

藏色散人
藏色散人앞으로
2020-01-20 14:13:594330검색

취약점 소개

2020년 1월 10일 ThinkPHP 팀은 안전하지 않은 SessionId로 인해 발생하는 임의 파일 작업 취약점을 해결하는 패치 업데이트를 출시했습니다. 이 취약점을 통해 공격자는 대상 환경에서 세션이 활성화된 경우 임의의 파일을 생성하고 삭제할 수 있으며 특정 상황에서는 공격자가 셸을 얻을 수도 있습니다.

  1. 영향을 받는 구체적인 버전은 ThinkPHP6.0.0-6.0.1입니다.

취약성 재현

로컬 환경에서는 ThinkPHP 6.0.1+PHP7.1.20+Apache를 사용하여 재현합니다. 특정 상황에서 테스트 검증 프로그램을 실행하면 아래와 같이 웹셸이 작성될 수 있습니다.

ThinkPHP6 임의 파일 작업 취약점 분석

ThinkPHP6 임의 파일 작업 취약점 분석

취약점 분석

공식 github 커밋에 따르면:

ThinkPHP6 임의 파일 작업 취약점 분석

https://github.com/topthink/framework/commit/1bbe75019ce6c8e0101a6ef73706217e406439f2

따라서 다음과 같이 추측됩니다. 세션을 저장할 때 발생하는 파일 쓰기일 수 있습니다. 그런 다음 추적: vendor/topthink/framework/src/think/session/Store.php:254.

ThinkPHP6 임의 파일 작업 취약점 분석

여기서 쓰기 기능이 호출됩니다. 후속 조치: Vendor/topthink/framework/src/think/session/driver/File.php:210.

ThinkPHP6 임의 파일 작업 취약점 분석

writeFile 함수를 호출하고 다음을 따르세요.

ThinkPHP6 임의 파일 작업 취약점 분석

물론, 파일을 쓰는 작업입니다.

계속해서 역순으로 파일 이름을 제어할 수 있는지 확인하세요. 파일 이름은 초기 getId()에서 얻은 $sessionId 값에서 나옵니다. getId가 있으므로 setId가 있을 것입니다. 함수 내용을 살펴보세요.

ThinkPHP6 임의 파일 작업 취약점 분석

들어오는 매개변수 $id가 32비트 길이를 충족하면 값이 $this->id로 설정됩니다. setId가 호출되는 위치(vendor/topthink/framework/src/think/middleware/SessionInit.php:46)를 살펴보세요.

ThinkPHP6 임의 파일 작업 취약점 분석

여기서 $cookieName 값은 PHPSESSID입니다.

ThinkPHP6 임의 파일 작업 취약점 분석

그리고 $sessionId는 쿠키에 있는 PHPSESSID라는 값이므로 공격자가 제어할 수 있어 작성된 파일명을 제어할 수 있게 됩니다.

작성된 파일명은 제어가 가능하지만, 작성된 내용은 제어가 가능한가요? 분석 결과, 작성된 콘텐츠는 세션을 생성하는 데 사용된 콘텐츠인 것으로 나타났습니다. 그러나 세션 생성은 실제 백엔드 비즈니스 로직에 따라 결정되며, 기본 환경에서는 세션이 생성되지 않습니다. 따라서 기본 환경에서는 임의의 파일 쓰기가 불가능합니다.

이 취약점에 대한 심층 분석을 통해 우리는 이 취약점이 임의 파일 삭제를 달성할 수도 있고 파일 삭제가 백엔드 비즈니스 로직에 대한 의존도가 낮다는 사실을 발견했습니다.

Still invendor/topthink/framework/src/think/session/Store.php:254:

ThinkPHP6 임의 파일 작업 취약점 분석

분석 및 검증을 통해 위의 취약점으로 인해 임의 파일이 삭제될 수도 있음을 확인했습니다. .

요약

대상 환경이 Windows이고 세션이 켜져 있는 경우 임의 파일 삭제 공격에 취약합니다.

대상 환경에서 세션이 열려 있고 작성된 세션을 제어할 수 있는 경우 임의 파일 쓰기 공격에 취약합니다.

해당 사용자는 공격을 피하기 위해 ThinkPHP6.0.2 버전으로 적시에 업그레이드하는 것이 좋습니다.

php 중국어 웹사이트, 수많은 무료 thinkphp 입문 튜토리얼, 온라인 학습을 환영합니다!

위 내용은 ThinkPHP6 임의 파일 작업 취약점 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 seebug.org에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제