CVE-2018-20062 취약점에 대해 간략하게 기록
ThinkPHP 는 중국 topthink 에서 개발한 apache2 기반의 php framework
문자열이 필터링 되지 않아 컨트롤러 클래스(app) 를 직접 접근하는 취약점
think 내 컨트롤러 클래스 app 객체를 생성 후 invokefunction 메서드를 호출
> app.php 클래스에 invokeFunction() 확인
쇼단에서 검색 시 다수의 사용 서버들 확인
> https://www.shodan.io/search?query=X-Powered-By%3A+ThinkPHP
X-Powered-By: ThinkPHP 정보를 헤더에서 제거방안
> php.ini , httpd.conf 수정
취약점 및 공격 참조 사이트
패치 참조 사이트
https://blog.thinkphp.cn/869075
^[A-Za-z](\w|\.) 문자열 필터로 대안 마련
공격 로그 변천사:
index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]
이때만 해도 '\' 문자열의 우회값 공격 로그로 인식되어 정상적인 아스키 변환 코드로 확인 가능
/index/ HTTP/1.\think\x07pp/invokefunction&function=call_user_func_array&vars[0]
이런류의 공격은 아스키 변환 과정에서 오류(?)가 확인되어 '/index/.hink.pp/invokefunction' 이런식으로 인식함
패킷을 보면 07 헥사값은 쩜으로 표현되는게 아님에도 불구하고 쩜으로 표현되고 있음
09 도 과거에 자주 봤던 공백코드에 이용되었던 탭공백키지만 쩜으로 표현되고 있음
공격자의 실수(?) 또는 의도 인지는 모르겠지만 동일 유형의 공격 패킷의 정보는 일본 블로그에서도 확인되고 있음
https://www.peerlyst.com/posts/fun-with-php-bugs-mark-sitkowski
아스키 코드 테이블 참조
BELL 코드 참조
https://en.wikipedia.org/wiki/Bell_character
- 19.07.24 Thinkphp 정리 -
'공부 > 콤퓨타' 카테고리의 다른 글
IBM Security VIP Seminar (0) | 2019.12.05 |
---|---|
Vectra (0) | 2019.12.04 |
IBM Security Summit Seoul 2019 (2) | 2019.05.09 |
SWF/CVE-2018-15982 (0) | 2018.12.30 |
2018년도 과학수사 국제학술대회 (0) | 2018.11.05 |