Added ability to override unresolvable hosts failure.

Using --disable-sanity-checks will allow AutoRecon to run even if target(s) were unresolvable (one or more targets must be valid however).
Added a new plugin for ajp.
This commit is contained in:
Tib3rius 2022-11-29 12:04:15 -05:00
parent da718cea25
commit c67909f21b
4 changed files with 24 additions and 5 deletions

View File

@ -43,7 +43,7 @@ configurable_boolean_keys = [
config = {
'protected_classes': ['autorecon', 'target', 'service', 'commandstreamreader', 'plugin', 'portscan', 'report', 'servicescan', 'global', 'pattern'],
'service_exceptions': ['mc-nmf', 'ncacn_http', 'smux', 'status', 'tcpwrapped', 'unknown'],
'service_exceptions': ['infocrypt', 'mc-nmf', 'ncacn_http', 'smux', 'status', 'tcpwrapped', 'unknown'],
'config_dir': config_dir,
'global_file': None,
'ports': None,

View File

@ -0,0 +1,14 @@
from autorecon.plugins import ServiceScan
class NmapAJP(ServiceScan):
def __init__(self):
super().__init__()
self.name = 'Nmap AJP'
self.tags = ['default', 'safe', 'ajp']
def configure(self):
self.match_service_name(['^ajp13'])
async def run(self, service):
await service.execute('nmap {nmap_extra} -sV -p {port} --script="banner,(ajp-* or ssl*) and not (brute or broadcast or dos or external or fuzzer)" -oN "{scandir}/{protocol}_{port}_ajp_nmap.txt" -oX "{scandir}/xml/{protocol}_{port}_ajp_nmap.xml" {address}')

View File

@ -4,7 +4,7 @@ import argparse, asyncio, importlib.util, inspect, ipaddress, math, os, re, sele
from datetime import datetime
try:
import appdirs, colorama, toml, unidecode
import appdirs, colorama, impacket, requests, toml, unidecode
from colorama import Fore, Style
except ModuleNotFoundError:
print('One or more required modules was not installed. Please run or re-run: ' + ('sudo ' if os.getuid() == 0 else '') + 'python3 -m pip install -r requirements.txt')
@ -17,7 +17,7 @@ from autorecon.io import slugify, e, fformat, cprint, debug, info, warn, error,
from autorecon.plugins import Pattern, PortScan, ServiceScan, Report, AutoRecon
from autorecon.targets import Target, Service
VERSION = "2.0.28"
VERSION = "2.0.29"
if not os.path.exists(config['config_dir']):
shutil.rmtree(config['config_dir'], ignore_errors=True, onerror=None)
@ -1318,6 +1318,7 @@ async def run():
error('The target file ' + args.target_file + ' could not be read.')
sys.exit(1)
unresolvable_targets = False
for target in raw_targets:
try:
ip = ipaddress.ip_address(target)
@ -1397,8 +1398,12 @@ async def run():
autorecon.pending_targets.append(Target(target, ip, 'IPv6', 'hostname', autorecon))
except socket.gaierror:
unresolvable_targets = True
error(target + ' does not appear to be a valid IP address, IP range, or resolvable hostname.')
errors = True
if not args.disable_sanity_checks and unresolvable_targets == True:
error('AutoRecon will not run if any targets are invalid / unresolvable. To override this, re-run with the --disable-sanity-checks option.')
errors = True
if len(autorecon.pending_targets) == 0:
error('You must specify at least one target to scan!')

View File

@ -1,6 +1,6 @@
[tool.poetry]
name = "autorecon"
version = "2.0.28"
version = "2.0.29"
description = "A multi-threaded network reconnaissance tool which performs automated enumeration of services."
authors = ["Tib3rius"]
license = "GNU GPL v3"