🔍 CVE-2026-102800

0.0
CVSS Score
UNKNOWN
2026-10-27
2026-10-27 15:08
✅ 완료

🇰🇷 한글 설명

Joomla 확장 기능 DJ-HelpfulArticles(1.3.0 미만)의 '이 글이 도움이 되었나요' 투표 위젯에서 인증 없이 접근 가능한 AJAX 핸들러가 클라이언트가 전달한 ip 값을 서버 측 검증 없이 저장합니다. 이 값은 관리자 백엔드 '도움이 된 글' 목록에서 이스케이프 없이 출력되어 저장형 XSS가 발생합니다.

💡 쉬운 설명

누구나 웹사이트의 투표 기능을 통해 악성 스크립트를 심을 수 있습니다. 관리자가 해당 목록을 열면 그 스크립트가 관리자 권한으로 실행될 수 있습니다.

🇺🇸 원문 (English)

Joomla Extension - dj-extensions.com - Unauthenticated Stored XSS in DJ-HelpfulArticles < 1.3.0 - The “was this article helpful” voting widget posts a client-supplied ip field to its AJAX handlers (getDeny, getConfirm, getDenyReason in mod_djhelpful_articles/helper.php), reachable without authentication through com_ajax. The value was stored exactly as submitted instead of being taken from the connection by the server. It was then printed without output escaping in the administrator backend’s “Helpful articles” overview (views/items/tmpl/default.php). $db->quote() was applied on insert, which protects the SQL statement but does nothing for HTML output. There was no CSRF token, no rate limit, and the vote de-duplication keyed on the same attacker-controlled field.

📍 영향받는 시스템

Joomla 확장 DJ-HelpfulArticles 1.3.0 미만 버전 (dj-extensions.com)

⚔️ 공격 벡터

인증 없이 com_ajax로 getDeny/getConfirm/getDenyReason 요청에 조작된 ip 필드를 포함해 스크립트를 저장한 뒤, 관리자가 백엔드를 열면 실행되도록 함

🛡️ 대응 방법

DJ-HelpfulArticles를 1.3.0 이상으로 업데이트하고, 업데이트 전까지 해당 모듈을 비활성화하며, 관리자 출력 시 이스케이프 처리를 적용

🔧 검증 코드

출력된 버전이 1.3.0 미만이면 취약한 것이며, 1.3.0 이상이거나 결과가 없으면 해당 확장이 설치되지 않았거나 패치된 상태입니다.

Shell / Script
grep -ri 'helpfularticles' /var/www/html/administrator/manifests/packages/ /var/www/html/modules/mod_djhelpful_articles/*.xml 2>/dev/null | grep -i version

💻 영향받는 소프트웨어

SQL Server