Autonomous Web Application Discovery Tool
The eyegee-exec tool utilizes large language models (LLMs) to autonomously discover web applications. Its primary goal is to map functionalities and provide an overview of the potential attack surface of the target application.
The application passively crawls websites, noting outgoing web requests and user interactions. It then generates user inputs and submits test data to these interactions to assess the application's behavior.
Results are presented as a graph, illustrating connections between pages, API calls, and interactions.
Note: Note: While eyegee-exec should be compatible with other vendors or local LLMs, it has been tested only with OpenAI's cloud models to date.
- Install ChromeDriver
Ensure ChromeDriver is installed on your system. This is required for the discovery process.
- Install Node.js and npm
Ensure Node.js and npm are installed on your system and configured in your system's PATH environment variable. This is required for the webserver with the graph interface.
- Create and Activate a Python Virtual Environment
python -m venv venv
source venv/bin/activate
- Install the requirements
pip install -r requirements.txt
- Setup the Environment Variables
touch .env
vim .env
# Add the following line to the file:
OPENAI_API_KEY=<YOUR_KEY_HERE>
- Optional: Configure the Application
Adjust the configuration in
config.py
:
vim config.py
# Set llm model other settings such as chromedriver_path
- Execute the Discovery Module Run the discovery module to start mapping a web application:
python eyegee-exec.py -d -t http://localhost:80/
- Visualize the Results To visualize the results as a graph, execute the graph module:
python eyegee-exec.py -g
An example web application to test this tool can be accessed under: https://github.com/docluis/dentist or https://github.com/docluis/card_market
This tool was originally inspired by a Blogpost by Joseph Thacker. The tool was developed to present an ethical non-intrusive approach to autonomous LLM-based security analysis.
Development of eyegee-exec was made possible through the Bundesnachrichtendienst’s “Summer of Code” scholarship program, which provided critical resources for this project.