RapiDAST provides a framework for continuous, proactive and fully automated dynamic scanning against web apps/API.

Overview

RapiDAST

RapiDAST provides a framework for continuous, proactive and fully automated dynamic scanning against web apps/API.

Its core engine is OWASP ZAP Proxy (https://owasp.org/www-project-zap/). Taking advantage of the ZAP container, this project provides value as follows:

  • Easy automation(via fully working in CLI with yaml configuration) of API scanning based on OAS definition
  • Create users' own custom rules via yaml files
  • XML, HTML, JSON report generation

Prerequisites

podman or docker is required.

For podman

$ pip3 install podman-compose
$ podman pull docker.io/owasp/zap2docker-stable

Quick Scan Example(using podman)

  1. Get a URL for the OAS3 definition file
  2. Get a URL for the target API
  3. Create config.yaml with the URLs and place it in config/
  4. zaproxy container must be running (either runenv.sh or runenv-debug.sh)
$ ./runenv.sh

Run in the project root directory,

$ test/scan-example-with-podman.sh 
   

   

When a scan is completed, its report will be generated in the results/

Example

$ test/scan-example-with-podman.sh testrun                
Deleting previously generated scripts                                              
Loading the script to ZAP                                                          
Templating script Rule_Gen_05eec230-5ba0-4bf5-b1d0-43268b8542d2                    
Loading script Rule_Gen_05eec230-5ba0-4bf5-b1d0-43268b8542d2 in ZAP from /tmp/Rule_Gen_05eec230-5ba0-4bf5-b1d0-43268b8542d25k5s0yj7.js                                 
Enabling script Rule_Gen_05eec230-5ba0-4bf5-b1d0-43268b8542d2 in ZAP               
Script Rule_Gen_05eec230-5ba0-4bf5-b1d0-43268b8542d2 successfully loaded and enabled                                                                                   
Creating session in: /zap/results/testrun/sessions/20211210-041924/session1          
Excluded URLs: ^(?:(?!http://192.168.109.202:9000).*).$                               
Include URL in context: http://192.168.109.202:9000/api/.*                            
Exclude URL from context:                                                          
Importing API: /zap/config/oas/openapi.json                                        
>> Target Url: http://192.168.109.202:9000                                            
Start Active scan. Scan ID equals 0                                                
Scan Policies: ['API-minimal-example']                                             
Active Scan progress: 0%                                                           
Active Scan completed                                                                                                                                                  
Waiting for Passive Scan to complete                                                                                                                                   
Passive Scan completed                                                             
XML report saved in: /zap/results/testrun/demo1-report-20211210-041924.xml

$ ls -al results/testrun
total 48
-rw-r--r--. 1 fedora fedora 9198 Dec 13 08:11 demo1-report-20211210-041924.xml
drwxr-xr-x. 7 fedora fedora  140 Dec 13 08:11 sessions

Usage

podman

Run as daemon

Run a container

$ podman-compose -f podman-compose.yml up 
$ podman unshare chown 1000 ./results (podman bind volumes as container root while the app runs as container zap user)

Launch a scan

$ podman exec zaproxy python /zap/scripts/apis_scan.py 
   

   

Stopping Environments

$ podman-compose -f podman-compose.yml down

Run with GUI (useful for debugging)

This is taking advantage of ZAP's webswing feature. See https://www.zaproxy.org/docs/docker/webswing/.

Run a container

$ podman-compose -f podman-compose-ui.yml up 
$ podman unshare chown 1000 ./results (podman bind volumes as container root while the app runs as container zap user)

After the step, it is necessary to navigate to the GUI via http://127.0.0.1:8081/zap to start an actual ZAP instance.

Create a custom rule

It is possible to create a custom rule yaml file and apply to the ZAP instance. Refer to a few examples of the yaml rule files in the scripts/gen-zap-script/rules directory.

Apply custom rules to the running ZAP instance before launching a scan.

Example: Load and enable custom rule
$ podman exec zaproxy python scripts/gen-zap-script/cli.py --from-yaml scripts/gen-zap-script/rules/software_version_revealed.yaml --api-key=
   
     --load-and-enable 

   
Example: Delete existing custom rules
$ podman exec zaproxy python scripts/gen-zap-script/cli.py --api-key=
   
     --delete

   

Launch a scan

$ podman exec zaproxy python /zap/scripts/apis_scan.py 
   

   

Stopping Environments

$ podman-compose -f podman-compose-ui.yml down

docker

Run as daemon

Run a container

$ docker-compose up zaproxy 

Launch a scan

$ docker-compose exec zaproxy python /zap/scripts/apis_scan.py 
   

   

Stopping Environments

$ docker-compose down

Run with GUI (useful for debugging)

This is taking advantage of ZAP's webswing feature. See https://www.zaproxy.org/docs/docker/webswing/.

Run a container

$ docker-compose up zaproxy_ui

After the step, it is necessary to navigate to the GUI via http://127.0.0.1:8081/zap to start an actual ZAP instance.

Launch a scan

$ docker-compose exec zaproxy_ui python /zap/scripts/apis_scan.py 
   

   

Stopping Environments

$ docker-compose down
Comments
  • Add operator option to be used for deploying to Kubernetes/OCP environments

    Add operator option to be used for deploying to Kubernetes/OCP environments

    Adds helm operator that provides a controller that handles

    • RapiDAST - main CRD that manages running RapiDAST as a job on the cluster
    • ~~RapiDASTCC - provides PVC that is used by RapiDAST for persistence, along with a pod using the PVC for simple copying of artifacts produced by the jobs~~

    This operator code has been refactored to account for API_KEY option now as an environment variable. In the RapiDAST CRD, the boolean option for apiKeyRequired can be set to true. As implemented, this will create a secret, and the api key will have to be updated there manually.

    Feedback welcome.

    • Edit - Moved beyond needing the RapiDASTCC API. PVC now created as needed when creating RapiDASTs.
    opened by jpweiser 7
  • Unable to run zaproxy on mac m1 using docker and podman both.

    Unable to run zaproxy on mac m1 using docker and podman both.

    Hi,

    I got a Mac M1 recently and I am trying to run the zaproxy tests against a config by placing the open api url and target url as expected in the config/config.yml and then following steps below but getting the below error.

    Any help would be appreciated, thanks.

    rapidast (master %) $ docker-compose up zaproxy
    [+] Running 1/0
     ⠿ Container zaproxy  Created                                                                                                                                                                                                                                              0.1s
    Attaching to zaproxy
    
    

    Trying to run the scan as per the README file:

    $ docker-compose exec zaproxy python /zap/scripts/apis_scan.py reports                                                                                                                                        1
    Traceback (most recent call last):
      File "/usr/local/lib/python3.8/dist-packages/urllib3/connection.py", line 174, in _new_conn
        conn = connection.create_connection(
      File "/usr/local/lib/python3.8/dist-packages/urllib3/util/connection.py", line 95, in create_connection
        raise err
      File "/usr/local/lib/python3.8/dist-packages/urllib3/util/connection.py", line 85, in create_connection
        sock.connect(sa)
    ConnectionRefusedError: [Errno 111] Connection refused
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py", line 703, in urlopen
        httplib_response = self._make_request(
      File "/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py", line 398, in _make_request
        conn.request(method, url, **httplib_request_kw)
      File "/usr/local/lib/python3.8/dist-packages/urllib3/connection.py", line 239, in request
        super(HTTPConnection, self).request(method, url, body=body, headers=headers)
      File "/usr/lib/python3.8/http/client.py", line 1256, in request
        self._send_request(method, url, body, headers, encode_chunked)
      File "/usr/lib/python3.8/http/client.py", line 1302, in _send_request
        self.endheaders(body, encode_chunked=encode_chunked)
      File "/usr/lib/python3.8/http/client.py", line 1251, in endheaders
        self._send_output(message_body, encode_chunked=encode_chunked)
      File "/usr/lib/python3.8/http/client.py", line 1011, in _send_output
        self.send(msg)
      File "/usr/lib/python3.8/http/client.py", line 951, in send
        self.connect()
      File "/usr/local/lib/python3.8/dist-packages/urllib3/connection.py", line 205, in connect
        conn = self._new_conn()
      File "/usr/local/lib/python3.8/dist-packages/urllib3/connection.py", line 186, in _new_conn
        raise NewConnectionError(
    urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x4002245400>: Failed to establish a new connection: [Errno 111] Connection refused
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/local/lib/python3.8/dist-packages/requests/adapters.py", line 440, in send
        resp = conn.urlopen(
      File "/usr/local/lib/python3.8/dist-packages/urllib3/connectionpool.py", line 785, in urlopen
        retries = retries.increment(
      File "/usr/local/lib/python3.8/dist-packages/urllib3/util/retry.py", line 592, in increment
        raise MaxRetryError(_pool, url, error or ResponseError(cause))
    urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=8090): Max retries exceeded with url: http://zap/JSON/core/action/newSession/?apikey=cnmeemn7jp7ijd8rl5u14q40v8&name=%2Fzap%2Fresults%2Freports%2Fsessions%2F20220419-170600%2Fsession1&overwrite=True (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPConnection object at 0x4002245400>: Failed to establish a new connection: [Errno 111] Connection refused')))
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/zap/scripts/apis_scan.py", line 313, in <module>
        create_session(session_fullpath_name)
      File "/zap/scripts/apis_scan.py", line 17, in create_session
        zap.core.new_session(name=session_name, overwrite=True)
      File "/usr/local/lib/python3.8/dist-packages/zapv2/core.py", line 357, in new_session
        return six.next(six.itervalues(self.zap._request(self.zap.base + 'core/action/newSession/', params)))
      File "/usr/local/lib/python3.8/dist-packages/zapv2/__init__.py", line 200, in _request
        data = self._request_api(url, get)
      File "/usr/local/lib/python3.8/dist-packages/zapv2/__init__.py", line 180, in _request_api
        response = self.session.get(url, params=query, proxies=self.__proxies, verify=False)
      File "/usr/local/lib/python3.8/dist-packages/requests/sessions.py", line 542, in get
        return self.request('GET', url, **kwargs)
      File "/usr/local/lib/python3.8/dist-packages/requests/sessions.py", line 529, in request
        resp = self.send(prep, **send_kwargs)
      File "/usr/local/lib/python3.8/dist-packages/requests/sessions.py", line 645, in send
        r = adapter.send(request, **kwargs)
      File "/usr/local/lib/python3.8/dist-packages/requests/adapters.py", line 513, in send
        raise ProxyError(e, request=request)
    requests.exceptions.ProxyError: HTTPConnectionPool(host='127.0.0.1', port=8090): Max retries exceeded with url: http://zap/JSON/core/action/newSession/?apikey=cnmeemn7jp7ijd8rl5u14q40v8&name=%2Fzap%2Fresults%2Freports%2Fsessions%2F20220419-170600%2Fsession1&overwrite=True (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPConnection object at 0x4002245400>: Failed to establish a new connection: [Errno 111] Connection refused')))
    
    opened by anarang 6
  • URL Scanning Ability.

    URL Scanning Ability.

    Adding the ability to scan from URLs specified in a URL Scan config file that does not have an OAS definition. Note that the reason the importurls method has been added here is because the zap python API project currently does not support exim (the new ZAP addon for importing urls) and only makes use of the deprecated importurls addon. I've added support for exim imports instead in the new method.

    opened by rh-gtucker 4
  • Podman compose results user owned

    Podman compose results user owned

    Podman 3.1.0 and above support the "U" flag to change ownership of
    volumes.
    This makes the `unshare chown` unecessary when using podman >= 3.1
    IIUC, it does not affect older versions, which will simply ignore the
    unknown flag.
    
    opened by cedricbu 4
  • compose files clean up and API_KEY removal

    compose files clean up and API_KEY removal

    List of changes:

    • API_KEY was removed from config.yaml and moved to an env file
    • entrypoint.sh and entrypoint_ui.sh files created
    • config/requirements.txt was created
    • tty: true and stdin_open: true removed from compose files as they have no effect
    opened by lpardoRH 3
  • Actions

    Actions

    based on https://github.com/RedHatProductSecurity/rapidast/pull/14 so changes should be more easy to see once that PR is merged.

    Added rapidast-scan action as example

    opened by lpardoRH 2
  • Introducing a new podman wrapper

    Introducing a new podman wrapper

    The main reason for the wrapper is to avoid the need to run unshare, by formatting a defined user mapping, such that the zap user maps the host user. This way ZAP can write in the ./results share without needing to change ownership.

    source: https://github.com/containers/podman/blob/main/troubleshooting.md#39-podman-run-fails-with-error-unrecognized-namespace-mode-keep-iduid1000gid1000-passed In very recent podman version, this hack can be simplified.

    This change is backward compatible : nothing prevents the user to use any old methods for starting RapiDAST.

    Note: Unlike runenv.sh, this script does not attempt to stop the container in case it is already running. The reasoning is : if RapiDAST is currently undergoing a looooong scan, a user probably prefers the new command to fail, rather than cancelling the current scan. However, we could improve that.

    Other minor changes: In README.md:

    • removed the reference to [podman|docker] pull, as it refers to a different image, and afaik, will be done by the compose command
    • updated with the new command, removed references to unshare
    • few minor readability/consistency update

    In runenv.sh / runenv-ui.sh: echo "deprecated" message

    opened by cedricbu 1
  • Adding docker compose files and parameterized token authentication script

    Adding docker compose files and parameterized token authentication script

    • Adding a docker version for starting the zaproxy tool
    • Adding a parameterized http authentication script to be able to pass the parameters from the config where it wont be pushed to any repo accidentally

    For openshift console runs:

    HttpSenderScriptFilePath: 'scripts/add-token-cookie-param.js'
    HttpSenderScriptDescription: 'add a cookie to each HTTP request'
    HTTPParams: {"cookieName": 'openshift-session-token', "cookieVal": 'sha256~**'}
    
    opened by paigerube14 1
  • Applied pre-commit config to the existing changes

    Applied pre-commit config to the existing changes

    Some code was changed manually. So it needs some testing before merging. Please, review changes in python files carefully.

    During my work on the pre-commit fixes I found that some checks are not so convenient to use or they edit files which they shouldn't touch. Thus the pre-commit config was updated.

    The pydocstyle checks are still missing here:

    scripts/config.py:1 at module level:
            D100: Missing docstring in public module
    scripts/gen_zap_script/lib.py:1 at module level:
            D100: Missing docstring in public module
    scripts/gen_zap_script/lib.py:30 in private class `Script`:
            D205: 1 blank line required between summary line and description (found 0)
    scripts/gen_zap_script/lib.py:30 in private class `Script`:
            D212: Multi-line docstring summary should start at the first line
    scripts/gen_zap_script/lib.py:87 in public function `add_and_load_script`:
            D103: Missing docstring in public function
    scripts/gen_zap_script/lib.py:114 in public function `delete_all_loaded_scripts`:
            D103: Missing docstring in public function
    scripts/apis_scan.py:1 at module level:
            D100: Missing docstring in public module
    scripts/apis_scan.py:18 in public function `create_session`:
            D103: Missing docstring in public function
    scripts/apis_scan.py:38 in public function `enable_httpsender_script`:
            D103: Missing docstring in public function
    scripts/apis_scan.py:61 in public function `create_context`:
            D103: Missing docstring in public function
    scripts/apis_scan.py:158 in public function `enable_passive_scanner`:
            D103: Missing docstring in public function
    scripts/apis_scan.py:164 in public function `import_urls`:
            D205: 1 blank line required between summary line and description (found 0)
    scripts/apis_scan.py:164 in public function `import_urls`:
            D212: Multi-line docstring summary should start at the first line
    scripts/apis_scan.py:171 in public function `get_apis`:
            D103: Missing docstring in public function
    scripts/apis_scan.py:225 in public function `check_scan_id`:
            D103: Missing docstring in public function
    scripts/apis_scan.py:232 in public function `start_active_scanner`:
            D103: Missing docstring in public function
    scripts/apis_scan.py:295 in public function `start_spider`:
            D103: Missing docstring in public function
    scripts/apis_scan.py:316 in public function `wait_for_passive_scanner`:
            D103: Missing docstring in public function
    scripts/apis_scan.py:326 in public function `generate_report`:
            D103: Missing docstring in public function
    scripts/gen_zap_script/lib_usage_example.py:1 at module level:
            D100: Missing docstring in public module
    scripts/gen_zap_script/lib_usage_example.py:6 in public function `js_passive_script_example`:
            D103: Missing docstring in public function
    scripts/gen_zap_script/lib_usage_example.py:22 in public function `js_active_script_example`:
            D103: Missing docstring in public function
    scripts/gen_zap_script/cli.py:1 at module level:
            D100: Missing docstring in public module
    scripts/gen_zap_script/cli.py:57 in public function `add_finding_group`:
            D103: Missing docstring in public function
    scripts/gen_zap_script/cli.py:101 in public function `ms_check`:
            D103: Missing docstring in public function
    scripts/gen_zap_script/cli.py:163 in public function `file_lines_or_default`:
            D103: Missing docstring in public function
    

    Looking for help with it.

    UPDATE: We decided to disable the docstring check and split from this task

    opened by feuillemorte 1
  • Remove

    Remove "unshare" mode on volume mount

    The results directory should not have the "U" unshare mode. The reason is that the ./test/scan-example-with-podman.sh script intends to create a child directory in results. "U" here removes ownership from the EUID too early, and it's not the right directory to unshare anyway. We want to unshare the child. This patch reverts the addition of "U" mode on the results mount.

    opened by sparticvs 1
  • Hardcoded API Key

    Hardcoded API Key

    FYI, I just noticed that there is a hardcoded API key on this line:

    https://github.com/RedHatProductSecurity/rapidast/blob/3e477d72cd5c1fb721a7775769def4d988926e6d/entrypoint.sh#L12

    /cc @jpweiser since it was your commit, you may care.

    opened by sparticvs 1
  • WIP: Added models and query object

    WIP: Added models and query object

    Added model and a query object. It can work with config data like this:

    Config:

    general:
      serviceName: 'demo1'
      resultDir: '/results/'
      # appDir: '/zap'
      localProxy: 
        http: "http://127.0.0.1:8090"
    

    The query:

    >>> config = Config(config_file=args.rapidast_config)
    >>> config.q.general.localProxy.http.value
    'http://127.0.0.1:8090'
    

    Also it supports another way to call it:

    >>> config.q["general"]["localProxy"]["http"].value
    'http://127.0.0.1:8090'
    

    (Please, see tests for additional examples)

    If there is no a key in the config, the chain won't fail with a python error, it will return None instead.

    >>> config.q.general.WRONG_KEY.localProxy.http.value
    None
    

    It will save us from ugly chains like:

    config.get("general", {}).get("localProxy", {}).get("http")
    

    and it will safe us from unexpected python errors if a key is not presented in the config file

    P.S. the PR is in progress, it needs additional work before final review

    opened by feuillemorte 4
Releases(v1.1.0)
  • v1.1.0(Jul 29, 2022)

    • RapiDAST can run as an operator on Kubernetes or OpenShift
    • added Containerfile for building an RapiDAST image
    • support URL based scanning
    • support scriptBased Authentication
    • added pre-commit config
    • added a Github Actions workflow example
    • issues have been fixed (see the commit logs for more information)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Dec 21, 2021)

    RapiDAST v1.0.0 includes:

    • OpenAPI based scanning using OWASP ZAP with sample configuration and script files
    • OAUTH2 offline token handling for Script-based Authentication
    • Custom scanning rule generation
    • Support both docker and podman
    • Scanning report generation
    Source code(tar.gz)
    Source code(zip)
Owner
Red Hat Product Security
Red Hat Product Security
Red Hat Product Security
Bandit is a tool designed to find common security issues in Python code.

A security linter from PyCQA Free software: Apache license Documentation: https://bandit.readthedocs.io/en/latest/ Source: https://github.com/PyCQA/ba

Python Code Quality Authority 4.8k Dec 31, 2022
NoSecerets is a python script that is designed to crack hashes extremely fast. Faster even than Hashcat

NoSecerets NoSecerets is a python script that is designed to crack hashes extremely fast. Faster even than Hashcat How does it work? Instead of taking

DosentTrust GithubDatabase 9 Jul 04, 2022
A passive-recon tool that parses through found assets and interacts with the Hackerone API

Hackerone Passive Recon Tool A passive-recon tool that parses through found assets and interacts with the Hackerone API. Setup Simply run setup.sh to

elbee 4 Jan 13, 2022
A fast sub domain brute tool for pentesters

subDomainsBrute 1.4 A fast sub domain brute tool for pentesters. It works with P

Oliver 2 Oct 18, 2022
test application for the licence key web app.

licence_software_test_app Make sure you set your database values in a .env file to the folder. Install MYSQL connector: pip install mysql-connector-py

Carl Beattie 1 Oct 28, 2021
BurpSuite Extension: Log4j2 RCE Scanner

Log4j2 RCE Scanner 作者:[email protected]元亨实验室 声明:由于传播、利用本项目所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,项目作者不为此承担任何责

ᴋᴇʏ 87 Dec 29, 2021
SSLyze is a fast and powerful SSL/TLS scanning tool and Python library.

SSLyze SSLyze is a fast and powerful SSL/TLS scanning tool and Python library. SSLyze can analyze the SSL/TLS configuration of a server by connecting

Alban Diquet 2.8k Jan 03, 2023
Buff A simple BOF library I wrote under an hour to help me automate with BOF attack

What is Buff? A simple BOF library I wrote under an hour to help me automate with BOF attack. It comes with fuzzer and a generic method to generate ex

0x00 3 Nov 21, 2022
Use scrapli to retrieve security zone information from a Juniper SRX firewall

Get Security Zones with Scrapli Overview This example will show how to retrieve security zone information on Juniper's SRX firewalls. In addition to t

Calvin Remsburg 2 Jun 19, 2022
FBGen is simple facebook user based wordlist generator using Username/ID and cookie.

FBGen is simple facebook user based wordlist generator using Username/ID and cookie.

2 Jul 20, 2022
LeLeLe: A tool to simplify the application of Lattice attacks.

LeLeLe is a very simple library (300 lines) to help you more easily implement lattice attacks, the library is inspired by Z3Py (python interfa

Mathias Hall-Andersen 4 Dec 14, 2021
Searches filesystem for CVE-2021-44228 and CVE-2021-45046 vulnerable instances of log4j library, including embedded (jar/war/zip) packaged ones.

log4shell_finder Python port of https://github.com/mergebase/log4j-detector log4j-detector is copyright (c) 2021 - MergeBase Software Inc. https://mer

Hynek Petrak 33 Jan 04, 2023
💣 Bomb Crypto Bot 💣

💣 Bomb Crypto Bot 💣 ⚠️ Warning I am not responsible for any penalties incurred by those who use the bot, use it at your own risk. 📄 Documentation -

Matheus Benites 4 Apr 27, 2022
Tools for investigating Log4j CVE-2021-44228

Log4jTools Tools for investigating Log4j CVE-2021-44228 FetchPayload.py (Get java payload from ldap path provided in JNDI lookup). Example command: Re

MalwareTech 91 Dec 29, 2022
dos-atack-tor script de python que permite usar conexiones cebollas para atacar paginas .onion o paginas convencionales via tor.

script de python que permite usar conexiones cebollas para atacar paginas .onion o paginas convencionales via tor. tiene capacidad de ajustar la cantidad de informacion a enviar, el numero de hilos a

Desmon 2 Jun 01, 2022
Cowrie SSH/Telnet Honeypot https://cowrie.readthedocs.io

Cowrie Welcome to the Cowrie GitHub repository This is the official repository for the Cowrie SSH and Telnet Honeypot effort. What is Cowrie Cowrie is

Cowrie 4.1k Jan 09, 2023
Apache Flink 目录遍历漏洞批量检测 (CVE-2020-17519)

使用方法&免责声明 该脚本为Apache Flink 目录遍历漏洞批量检测 (CVE-2020-17519)。 使用方法:Python CVE-2020-17519.py urls.txt urls.txt 中每个url为一行,漏洞地址输出在vul.txt中 影响版本: Apache Flink 1

45 Sep 21, 2022
🔍 IRIS: An open-source intelligence framework

IRIS is an open-source OSINT framework, consisting of modules to find information about a target by scraping sites and fetching data from APIs.

IRIS 79 Dec 20, 2022
This exploit allows to connect to the remote RemoteMouse 3.008 service to virtually press arbitrary keys and execute code on the machine.

RemoteMouse-3.008-Exploit The RemoteMouse application is a program for remotely controlling a computer from a phone or tablet. This exploit allows to

Podalirius 25 Dec 04, 2022
A kAFL based hypervisor fuzzer which fully supports nested VMs

hAFL2 hAFL2 is a kAFL-based hypervisor fuzzer. It is the first open-source fuzzer which is able to target hypervisors natively (including Hyper-V), as

SafeBreach Labs 115 Dec 07, 2022