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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
hp-slate7-root-kit — CVE-2015-1805를 사용하는 HP Slate 7 2800 Android 4.1.1 루팅 킷. | Kitploit
도구/GitHubGitHub/valentineus/hp-slate7-root-kit
Android SecurityPrivilege EscalationPersistence MechanismsVulnerability AnalysisExploitationPost-ExploitationMobile SecurityPayload DevelopmentBinary Exploitation
GitHubvalentineus/hp-slate7-root-kit

hp-slate7-root-kit

CVE-2015-1805를 사용하는 HP Slate 7 2800 Android 4.1.1 루팅 킷.

1181개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

HP Slate 7 2800 (Android 4.1.1) 루팅

English | Русский

이 저장소에는 로컬 취약점 CVE-2015-1805를 악용하여 펌웨어 1.05.18 및 커널 **Linux 3.0.8+**를 실행하는 HP Slate 7 2800에서 영구적인 루트 액세스를 얻기 위한 완전한 독립형 키트가 포함되어 있습니다. 이 키트는 실제 태블릿에서 실행되었으며, 결과는 새 ADB 세션과 일반 재부팅 후에 검증되었습니다.

이것은 범용 Android 루팅 도구가 아닙니다. 이 익스플로잇은 이 특정 HP 커널 구성에 한정됩니다. 다른 모델, 펌웨어 또는 커널 버전에서 실행하지 마십시오.

검증된 구성

매개변수검증된 값
제조사 및 모델HP Slate 7 2800
Android4.1.1, API 16, 빌드 JRO03H
제품 / 기기t7h / pine
프로세서Rockchip RK3066, ARMv7
빌드 지문hp/t7h/pine:4.1.1/JRO03H/v1.05.18_user:user/release-keys
커널3.0.8+ #13 SMP PREEMPT Tue Jul 28 15:24:30 CST 2015
ABI32비트 ARM EABI5
SELinux커널 구성에 없음 (CONFIG_SECURITY 비활성화됨)
/system 파티션ext4, 기본적으로 읽기 전용으로 마운트됨

변경 없이 기기를 검사할 수 있습니다:

adb devices -l
adb shell getprop ro.product.model
adb shell getprop ro.build.fingerprint
adb shell getprop ro.build.version.sdk
adb shell cat /proc/version

또는 아래 스크립트를 사용하십시오. 지문 또는 커널 버전이 일치하지 않으면 진행을 거부합니다:

./scripts/check-target.sh
./scripts/check-target.sh ADB_SERIAL

저장소 내용

.
├── bin/
│   ├── hp-slate7-cve-2015-1805-root  # verified exploit
│   ├── hp-slate7-install-root        # installs su into /system
│   └── hp-slate7-su                  # minimal setuid-root wrapper
├── src/
│   ├── exploit/                      # CVE source and device-specific changes
│   ├── installer/install-root.c      # installer source
│   └── su/rootsh.S                   # minimal su source
├── scripts/
│   ├── build.sh                      # rebuilds all three ELF files
│   ├── check-target.sh               # safe compatibility check
│   └── root-device.sh                # verifies, uploads, and runs the kit
├── SHA256SUMS                        # hashes of the verified bin/* files
├── NOTICE                            # attribution for the original PoC
└── LICENSE                           # GPL-3.0

파일 형식 및 용도

파일형식크기용도
bin/hp-slate7-cve-2015-1805-rootELF 32비트 ARM EABI5, 정적, unstripped2,722,320바이트CVE를 악용하여 uid 0을 획득하고 설치 프로그램 실행
bin/hp-slate7-install-rootELF 32비트 ARM EABI5, 정적, stripped22,596바이트/system을 임시로 rw로 재마운트하고 su를 설치한 후 ro 복원
bin/hp-slate7-suELF 32비트 ARM EABI5, 정적, stripped656바이트setresgid(0,0,0) 및 setresuid(0,0,0) 호출 후 /system/bin/sh 실행

검증된 바이너리의 SHA-256 체크섬:

6bf8ea09efb9f409dfc7aa5efbc3108e5c1a19fc5b07ae913328ef4639a7644f  bin/hp-slate7-cve-2015-1805-root
4857c71efc846636afc5b50d7f3c971c6eb68d3760f652086f2a38c5dc50bc4a  bin/hp-slate7-install-root
40626e555f71b71aa5ef7a727e9f6be55e552ef998ae3f49e9390f3e213c610e  bin/hp-slate7-su

macOS에서 검증:

shasum -a 256 -c SHA256SUMS

Linux에서 검증:

sha256sum -c SHA256SUMS

태블릿에서는 bin/의 파일을 사용하십시오: 기기에서 검증된 정확한 바이트입니다. build/ 디렉터리는 로컬 재빌드용이며 Git으로 추적되지 않습니다.

사용된 취약점

CVE-2015-1805는 구형 Linux 커널의 pipe_read() 및 pipe_write() 구현에 있는 결함입니다. 원자적 복사가 실패하면 코드가 iovec 배열 순회를 잘못 계속하여 포인터를 경계 밖으로 이동시킬 수 있습니다. 그 결과 로컬 비특권 프로세스가 메모리를 손상시키거나, 커널을 충돌시키거나, 권한을 상승시킬 수 있습니다. 이 메커니즘에 대한 자세한 설명은 oss-security에 게시되었습니다. 수정 사항은 업스트림 Linux 커밋 637b58c 및 f0d1bec 등에서 찾을 수 있습니다.

태블릿의 3.0.8+ 커널은 취약한 것으로 확인되었습니다. 커널 메모리를 수정하기 전에, 두 쓰기 대상이 모두 테스트 프로세스의 일반 메모리에 있는 무해한 프로브로 동일한 레이스를 별도로 테스트했습니다. 프로브는 CVE-2015-1805: VULNERABLE을 보고했으며 태블릿은 ADB를 통해 계속 접근 가능했습니다.

권한 상승 체인

  1. 익스플로잇은 readv(), 메모리 매핑 변경, 그리고 커널의 취약한 파이프 코드에서 대형 iovec 배열 처리 사이에 레이스를 생성합니다.
  2. 결과적인 쓰기 프리미티브는 sys_call_table의 사용되지 않는 항목 222를 익스플로잇 프로세스에 있는 작은 ARM 트램펄린의 주소로 일시적으로 대체합니다.
  3. 테이블 주소는 0xffff0008의 하이 벡터를 통해 계산됩니다. 검증된 기기에서 명령어는 0xe59ff410이며 해당 리터럴은 vector_swi = 0xc04d0d40을 가리킵니다.
  4. vector_swi와 sys_call_table은 공식 HP 오픈 소스 1.05.10 커널 아카이브 (아카이브 SHA-256: dd69f0468973714fd9ba22cdfea7e96f39f651ee51b9cb537728d9dcadbafda2)에서 rk30_t7h_dvt_defconfig defconfig로 독립적으로 산출되었습니다. 둘 사이의 오프셋은 0xc4입니다. 설치된 펌웨어에는 OABI도 seccomp도 없으므로 테이블의 최종 런타임 주소는 0xc04d0e04입니다.
  5. 트램펄린은 정확히 여섯 개의 ARM 명령어로 구성됩니다. 현재 sp를 가져와 8,192바이트 커널 스택 크기에 맞춘 다음 오프셋 8의 thread_info.addr_limit에만 -1을 씁니다. 외부 호출, 프롤로그 또는 컴파일러 런타임 코드가 없습니다.
  6. 임시 시스템 콜이 반환된 직후 항목 222는 항목 223에서 복원됩니다. HP 소스에서 두 항목 모두 sys_ni_syscall입니다. 검증된 커널에서 복원된 포인터는 0xc051900c입니다.
  7. addr_limit이 확장되면 파이프 복사가 현재 task_struct를 읽고 cred를 찾은 다음 현재 uid/gid 값, 정렬, 참조 횟수 및 real_cred == cred 조건을 사용하여 구조를 검증합니다. 이러한 검사 후에만 uid/gid 값이 0으로 설정되고 capability 마스크가 1로 채워집니다.
  8. 프로세스는 uid=0을 획득하고 /data/local/tmp/install-root를 실행합니다. 설치 프로그램은 /system을 rw로 재마운트하고, 페이로드를 /system/xbin/su에 복사하고, root:root 소유권과 모드 06755를 할당하고, sync()를 호출한 다음 /system을 읽기 전용으로 다시 마운트합니다.

구형 커널 헤더의 원래 current_thread_info() 함수는 -O0에서 최신 Clang과 호환되지 않았습니다. 초기 프로토타입이 sp 레지스터 대신 초기화되지 않은 워드를 읽어 커널을 충돌시킬 수 있었습니다. 이 저장소에서는 검증된 naked ARM 트램펄린으로 대체되었습니다. 초기 바이너리는 저장소에 포함되어 있지 않습니다.

필요 소프트웨어

bin/의 기성 파일을 사용하려면

  • macOS 또는 Linux를 실행하는 컴퓨터; 적절한 ADB USB 드라이버가 있으면 Windows도 가능하지만 이 절차는 macOS에서 검증되었습니다;
  • Android SDK Platform Tools의 adb;
  • 작동하는 USB 데이터 케이블;
  • USB 디버깅이 활성화되고 컴퓨터의 RSA 키가 태블릿에서 승인되어 있어야 합니다.

Android NDK, Java, Python, fastboot, 잠금 해제된 부트로더, 커스텀 리커버리, 루팅 APK 또는 네트워크 액세스는 필요하지 않습니다. 익스플로잇과 페이로드는 정적으로 링크되어 있습니다.

소스에서 재빌드하려면

  • Zig 0.15.2; 휴대용 아카이브를 푸는 것으로 충분하며 시스템 전체 패키지 설치는 필요 없습니다;
  • Bash;
  • 결과 검증을 위한 shasum 또는 sha256sum.

Android NDK는 여전히 필요하지 않습니다: Zig가 ARM musl 크로스 툴체인을 제공합니다.

태블릿 준비

  1. 태블릿을 최소 50% 이상 충전합니다. 검증 실행 당시 약 80%였습니다.
  2. Android를 정상적으로 부팅하고 화면 잠금을 해제합니다.
  3. 개발자 옵션 -> USB 디버깅을 활성화합니다.
  4. 케이블을 연결하고 Android에 USB 디버깅 RSA 프롬프트가 표시되면 수락합니다.
  5. Towelroot, KingRoot 또는 다른 루팅 애플리케이션을 동시에 실행하지 마십시오.
  6. 불필요한 애플리케이션을 닫습니다. 익스플로잇은 많은 스레드를 생성하며 이 구형 기기의 한계에 근접합니다.

연결을 확인합니다:

adb devices -l

상태는 device여야 하며 offline 또는 unauthorized가 아니어야 합니다.

루트 획득: 수동 절차

저장소 루트로 이동하여 먼저 기기가 정확히 일치하는지 확인합니다:

./scripts/check-target.sh

여러 기기가 연결된 경우 adb -s SERIAL을 사용하여 모든 명령에 일련번호를 전달하거나 ANDROID_SERIAL 환경 변수를 설정하십시오.

세 파일을 서로가 기대하는 이름으로 업로드합니다:

adb push bin/hp-slate7-cve-2015-1805-root /data/local/tmp/cve-2015-1805-root
adb push bin/hp-slate7-install-root /data/local/tmp/install-root
adb push bin/hp-slate7-su /data/local/tmp/rootsh-armv7

권한을 설정하고 스테이징된 파일을 디스크에 플러시합니다:

adb shell 'chmod 755 /data/local/tmp/cve-2015-1805-root /data/local/tmp/install-root /data/local/tmp/rootsh-armv7; sync'

익스플로잇을 한 번만 실행합니다:

adb shell '/data/local/tmp/cve-2015-1805-root; rc=$?; echo DEVICE_RC=$rc; exit $rc'

검증된 성공 출력:

offset:c4
addr:c04d0d40
    [+] Done
restored syscall 222 to 0xc051900c
exploit rc=0 uid=0 gid=0
installer uid=0 gid=0
install-su ok
DEVICE_RC=0

기기가 몇 초 동안 ADB에서 사라지면 익스플로잇을 다시 실행하지 마십시오. 기기가 돌아올 때까지 기다립니다:

adb wait-for-device

자동 절차

스크립트는 지문과 커널을 검증하고, SHA-256 해시를 확인하고, 파일을 업로드하고, ROOT 입력을 요청한 다음 익스플로잇을 실행하고 uid=0을 검증합니다:

./scripts/root-device.sh

여러 기기의 경우:

./scripts/root-device.sh --serial ADB_SERIAL

--yes 옵션은 대화형 확인을 비활성화하며 의도적인 자동 사용만을 위한 것입니다:

./scripts/root-device.sh --serial ADB_SERIAL --yes

결과 검증

익스플로잇 프로세스의 uid가 아닌 새로운 ADB 셸에서 루트를 검증합니다:

adb shell 'id; /system/xbin/su -c id; echo SU_RC=$?'
adb shell 'ls -l /system/xbin/su'
adb shell 'cat /proc/mounts' | grep ' /system '

예상 출력:

uid=2000(shell) ...
uid=0(root) gid=0(root) ...
SU_RC=0
-rwsr-sr-x root root ... su
... /system ext4 ro,...

다음으로 임시 스테이징 파일만 제거합니다. 설치된 /system/xbin/su는 제거되지 않습니다:

도구 다운로드