Exemple #1
0
    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
Exemple #2
0
    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')
Exemple #3
0
    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"
                )
Exemple #4
0
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()