def __init__(self): base_dir = TannerConfig.get('EMULATORS', 'root_dir') db_name = TannerConfig.get('SQLI', 'db_name') self.session_manager = session_manager.SessionManager() self.dorks = dorks_manager.DorksManager() self.base_handler = base.BaseHandler(base_dir, db_name) self.logger = logging.getLogger(__name__) self.redis_client = None
def __init__(self): base_dir = TannerConfig.get('EMULATORS', 'root_dir') db_name = TannerConfig.get('SQLI', 'db_name') self.session_manager = session_manager.SessionManager() self.dorks = dorks_manager.DorksManager() self.base_handler = base.BaseHandler(base_dir, db_name) self.logger = logging.getLogger(__name__) self.redis_client = None if TannerConfig.get('HPFEEDS', 'enabled') is True: self.hpf = hpfeeds_report() self.hpf.connect() if self.hpf.connected() is False: self.logger.warning('hpfeeds not connected - no hpfeeds messages will be created')
def __init__(self): base_dir = TannerConfig.get("EMULATORS", "root_dir") db_name = TannerConfig.get("SQLI", "db_name") self.session_manager = session_manager.SessionManager() self.delete_timeout = TannerConfig.get("SESSIONS", "delete_timeout") self.dorks = dorks_manager.DorksManager() self.base_handler = base.BaseHandler(base_dir, db_name) self.logger = logging.getLogger(__name__) self.redis_client = None if TannerConfig.get("HPFEEDS", "enabled") is True: self.hpf = hpfeeds_report() self.hpf.connect() if self.hpf.connected() is False: self.logger.warning( "hpfeeds not connected - no hpfeeds messages will be created" )
class HttpRequestHandler(aiohttp.server.ServerHttpProtocol): redis_client = None session_manager = session_manager.SessionManager() dorks = dorks_manager.DorksManager() def __init__(self, *args, **kwargs): super(HttpRequestHandler, self).__init__() self.api = api.Api() self.base_handler = base.BaseHandler(kwargs['base_dir'], kwargs['db_name']) self.logger = logging.getLogger(__name__ + '.' + self.__class__.__name__) self.graylogs = graylog.Graylog() self.logger.info("graylogs init") @staticmethod def _make_response(msg): response_message = json.dumps(dict( version=1, response=dict(message=msg) )).encode('utf-8') return response_message @asyncio.coroutine def handle_event(self, data, redis_client): try: print ("data for handle event {}".format(data)) data = json.loads(data.decode('utf-8')) path = unquote(data['path']) except (TypeError, ValueError, KeyError) as error: self.logger.error('error parsing request: %s', data) response_msg = self._make_response(msg=type(error).__name__) else: session = yield from HttpRequestHandler.session_manager.add_or_update_session( data, self.redis_client ) self.logger.info('Requested path %s', path) yield from self.dorks.extract_path(path, redis_client) detection = yield from self.base_handler.handle(data, session, path) session.set_attack_type(path, detection['name']) response_msg = self._make_response(msg=dict(detection=detection)) self.logger.info('TANNER response %s', response_msg) self.graylogs.send_data(response_msg) return response_msg @asyncio.coroutine def handle_request(self, message, payload): print ("message: {}".format(message)) print ("payload: {}".format(payload)) response = aiohttp.Response( self.writer, 200, h ttp_version=message.version ) if message.path == '/dorks': dorks = yield from self.dorks.choose_dorks(self.redis_client) response_msg = json.dumps( dict(version=1, response=dict(dorks=dorks)), sort_keys=True, indent=2 ).encode('utf-8') elif message.path == '/event': data = yield from payload.read() response_msg = yield from self.handle_event(data, self.redis_client) elif message.path.startswith('/api'): data = yield from self.api.handle_api_request(message.path, self.redis_client) response_msg = self._make_response(data) else: response_msg = self._make_response(msg='') response.add_header('Content-Type', 'application/json') response.add_header('Content-Length', str(len(response_msg))) response.send_headers() response.write(response_msg) yield from response.write_eof()