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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
openbsd_ov1 — OpenBSD remote overflow | Kitploit
उपकरण/GitHubGitHub/fuzzrf/openbsd_ov1
Vulnerability AnalysisExploitationPenetration TestingBinary Exploitation
GitHubfuzzrf/openbsd_ov1

openbsd_ov1

OpenBSD remote overflow

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

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

सभी देखें →

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

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

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

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

OpenBSD TCP/IP ओवरफ्लो

नवीनतम OpenBSD 7.2 के साथ परीक्षण किया गया

विवरण:

root@kitploit:~
int
ip_dooptions(struct mbuf *m, struct ifnet *ifp)
{
	...
  for (; cnt > 0; cnt -= optlen, cp += optlen) {
                opt = cp[IPOPT_OPTVAL];
                if (opt == IPOPT_EOL)
                        break;
                if (opt == IPOPT_NOP)
                        optlen = 1;
                else {
                        if (cnt < IPOPT_OLEN + sizeof(*cp)) {
                                code = &cp[IPOPT_OLEN] - (u_char *)ip;
                                goto bad;
                        }
                        optlen = cp[IPOPT_OLEN];
[1]                     if (optlen < IPOPT_OLEN + sizeof(*cp) || optlen > cnt) {
                                code = &cp[IPOPT_OLEN] - (u_char *)ip;
                                goto bad;
                        }
                }

                switch (opt) {

				  case IPOPT_LSRR:
                  case IPOPT_SSRR:
                        if (!ip_dosourceroute) {
                                type = ICMP_UNREACH;
                                code = ICMP_UNREACH_SRCFAIL;
                                goto bad;
                        }
                        if ((off = cp[IPOPT_OFFSET]) < IPOPT_MINOFF) {
                                code = &cp[IPOPT_OFFSET] - (u_char *)ip;
                                goto bad;
                        }
 						...
						...	
						off--;                 
                        if ((off + sizeof(struct in_addr)) > optlen) {
                                save_rte(m, cp, ip->ip_src);
                                break;
                        }


	...
}

void
save_rte(struct mbuf *m, u_char *option, struct in_addr dst)
{
        struct ip_srcrt *isr;
        struct m_tag *mtag;
        unsigned olen;

        olen = option[IPOPT_OLEN];
        if (olen > sizeof(isr->isr_hdr) + sizeof(isr->isr_routes))
                return;

        mtag = m_tag_get(PACKET_TAG_SRCROUTE, sizeof(*isr), M_NOWAIT);
        if (mtag == NULL) {
                ipstat_inc(ips_idropped);
                return;
        }
        isr = (struct ip_srcrt *)(mtag + 1);

        memcpy(isr->isr_hdr, option, olen);
[2]     isr->isr_nhops = (olen - IPOPT_OFFSET - 1) / sizeof(struct in_addr);
        isr->isr_dst = dst;
        m_tag_prepend(m, mtag);
}



struct mbuf *
ip_srcroute(struct mbuf *m0)
{
        struct in_addr *p, *q;
        struct mbuf *m;
        struct ip_srcrt *isr;
        struct m_tag *mtag;

        if (!ip_dosourceroute)
                return (NULL);
		...
[3]		p = &(isr->isr_routes[isr->isr_nhops - 1]);
        *(mtod(m, struct in_addr *)) = *p--;

        /*
         * Copy option fields and padding (nop) to mbuf.
         */
        isr->isr_nop = IPOPT_NOP;
        isr->isr_hdr[IPOPT_OFFSET] = IPOPT_MINOFF;
        memcpy(mtod(m, caddr_t) + sizeof(struct in_addr), &isr->isr_nop,
            OPTSIZ);
        q = (struct in_addr *)(mtod(m, caddr_t) +
            sizeof(struct in_addr) + OPTSIZ);
#undef OPTSIZ
        /*
         * Record return path as an IP source route,
         * reversing the path (pointers are now aligned).
         */
[4]     while (p >= isr->isr_routes) {
                *q++ = *p--;
        }
	...
}
  1. पंक्ति #1 पर - हम optlen == 2 सेट कर सकते हैं

  2. save_rte() isr_nhops को बहुत बड़ा मान सेट कर देगा, क्योंकि (optlen - IPOPT_OFFSET - 1) का मान 0xffffffff के बराबर होता है (IPOPT_OFFSET=2)

  3. ip_srcroute() कॉल लूप #4 पर बफर ओवरफ्लो ट्रिगर करेगा

पूर्वापेक्षाएँ:

  1. इसके काम करने के लिए सोर्स रूटिंग सक्षम होनी चाहिए।
  2. हम PF को अक्षम करते हैं क्योंकि यह ऐसे पैकेटों को छोड़ देता है

पुनरुत्पादन कैसे करें:

  1. OpenBSD इंस्टॉल करें

  2. /etc/sysctl.conf में निम्न पंक्ति जोड़ें net.inet.ip.sourceroute=1

  3. नवीनतम पैच इंस्टॉल करने के लिए syspatch चलाएँ

  4. सिस्टम को रीबूट करें

  5. pf अक्षम करें

pfctl -d

  1. प्रूफ ऑफ कॉन्सेप्ट चलाएँ

फिक्स https://github.com/openbsd/src/commit/d49c6b9957f582865e3b14a12dc9021e40852a81

टूल डाउनलोड करें