Pandushi keeps track of every fuzz case and the injection type used for later manual analysis.
- Store every request and response with their injection and injection type (sqli, xss, xxe, cmdi, os injection, etc.)
- Extensible collection of payloads
- Add option to scan data to a file by passing file:// URI on the command line.
- Add option to scan data to mongodb by passing mongodb:// URI on the command line.
- Add option to scan data to elasticsearch by passing elastic:// URI on the command line.
- Add option to scan data to an REST API by passing http:// URI on the command line.
- Build front-end to analyze the scan data
- Create injection/payload type
- Create custom http request type
- Create custom http response type
- Create TestCase type to countain information about each individual injection (Request, Response, injection, injection type, injeciton point type, injection point location, total duration, status, response code)
- Create function to count total injection points, url path injection points, query injection points, header injection points, cookie injection points, body injection points
- Inject request headers
- Inject request body x-www-form-urlencoded parameters
- Inject request body multipart/form-data parameters
- Inject request body application/json parameters
- Inject request body application/xml parameters
- Inject request query parameters
- Inject request uri path
- Inject marked (§§) requests
- Store finished task with testcase in mongodb
- Add check to make sure target is live before initiating scan
- Write payload importer
- Deduplicate payloads
- Force https
- Create different a type of fuzzing tasks for each injection point type (url path, query parameters, headers, cookies, request body x-www-form-urlencoded, request body multipart/form-data, request body json)
- Each injection point types get its own function that takes a list of injection types (sqli, xss, xxe, etc.)
- These functions will follow the following pattern:
- For each injection point
- Grab all inputs from the mongodb database
- Loop over the inputs
- Create a new request for the current input
- Send the newly created request or add it to a queue TBD (To be decided)
- Get Response and store Request and Response with injection info to mongodb
- inject payload in URL.RawQuery or http.Request.Form
- Submit request