acm-sqli is a lightweight SQL Injection detection microservice that leverages sqlmap to automatically assess whether input endpoints are vulnerable to SQLi. It is designed to be integrated into larger security tools (like DAST scanners) through a simple REST API.
- Supports GET, POST, DELETE, PUT, PATCH methods
- Accepts both form and JSON body payloads
- Returns vulnerability status and injection payload
- Async scanning via scan IDs
- Scan cancelation and listing capabilities
- Configurable threads, risk, level, and technique depth
- Go 1.18+
- Python 3
- Clone
sqlmaplocally:
git clone https://github.com/sqlmapproject/sqlmap.gitgo build -o acm-sqli
./acm-sqliDefault server runs at http://localhost:8080
POST /acm/v1/sqlmap
{
"threads": 10,
"level": 5,
"risk": 1,
"time_based": false,
"url": [
{
"url": "https://demo.testfire.net/doLogin",
"http_method": "POST",
"form_params": "uid,passw,btnSubmit",
"body_params": "",
"headers": {
"Cookie": "sessionid=abc123"
}
},
{
"url": "https://demo.testfire.net/?mode=FUZZ",
"http_method": "GET",
"form_params": "",
"body_params": ""
}
]
}[
{
"id": "acm-uuid-1",
"url": "https://demo.testfire.net/doLogin",
"vulnerable": false,
"payload": "",
"status": "running"
},
...
]GET /acm/v1/sqlmap/:id/status
curl http://localhost:8080/acm/v1/sqlmap/acm-uuid-1/status{
"status": "done"
}GET /acm/v1/sqlmap/:id/result
curl http://localhost:8080/acm/v1/sqlmap/acm-uuid-1/result{
"id": "acm-uuid-1",
"url": "https://demo.testfire.net/doLogin",
"vulnerable": true,
"payload": "uid=admin'--",
"status": "done"
}GET /acm/v1/sqlmap
[
{
"id": "acm-uuid-1",
"url": "https://demo.testfire.net/doLogin",
"status": "done"
},
{
"id": "acm-uuid-2",
"url": "https://demo.testfire.net/?mode=FUZZ",
"status": "running"
}
]DELETE /acm/v1/sqlmap/:id
curl -X DELETE http://localhost:8080/acm/v1/sqlmap/acm-uuid-2{
"status": "cancelled"
}- If
form_paramsis used, tool sendsapplication/x-www-form-urlencoded - If
body_paramsis used, tool sendsapplication/json FUZZin the URL is replaced with payload like1*for GET-based tests- Payload results are returned via
[PAYLOAD]marker in sqlmap output - Tool does not dump data — only checks for SQLi existence
This tool is ideal for:
- Automated scanning in CI pipelines
- DAST integration
- Custom red-team orchestration
- Lightweight API security testing
- All sqlmap output is printed to console (for now)
skippedstatus indicates unsupported or incomplete input- To enable file logs, modify
processInputWithCancel()to writeout.String()to file
MIT
Contributions welcome!