Skip to main content

Vulnerabilities API

The Vulnerabilities API retrieves discovered vulnerabilities across your organization's assets, providing detailed information about security issues, their impact, and remediation recommendations.

info

This API endpoint is available for enterprise accounts only.

Get Vulnerabilities​

Retrieve discovered vulnerabilities for your organization.

HTTP Request

GET https://fullhunt.io/api/v1/enterprise/vulnerabilities

Query Parameters

ParameterRequiredTypeDescription
orgNostringFilter vulnerabilities by organization ID

Example Request

curl "https://fullhunt.io/api/v1/enterprise/vulnerabilities" \
-H "X-API-KEY: xxxx-xxxx-xxxx-xxxxxx"

Example Response

[
{
"affected_location": "https://api.acme.com:8443/v1/payment-gateway/${jndi:ldap://127.0.0.1:1389/Exploit}",
"automated_vulnerability_validation_status": true,
"custom_severity": "critical",
"description": "A critical remote code execution vulnerability (CVE-2021-44228) has been detected in the Log4j logging library on the target host. The affected endpoint processes JNDI lookup strings in logged data, allowing attackers to trigger remote class loading and achieve code execution. Testing confirmed that user-controlled input is being logged by the application, making this a direct attack vector. The vulnerable version of Log4j (2.14.1) was identified through manifest analysis and active testing.",
"domain": "acme.com",
"host": "api.acme.com",
"host_type": "dns",
"identification_date": 1707152400,
"impact": "The vulnerability allows attackers to execute arbitrary code on the target system with the privileges of the Java application. Given this is a production payment processing API, successful exploitation could lead to unauthorized access to financial data, lateral movement within the network, and potential customer data exposure. The automated validation confirms the system is actively vulnerable to JNDI lookup attacks.",
"issue_id": 12458,
"last_seen": 1707238800,
"recommendation": "1. Immediately upgrade Log4j to version 2.17.1 or later\n2. Set log4j2.formatMsgNoLookups=true as a JVM parameter\n3. Implement WAF rules to block JNDI lookup patterns\n4. Review application logs for exploitation attempts\n5. Apply strict input validation on all API endpoints\n6. Deploy network rules to block outbound LDAP/RMI traffic from the application server",
"references": [
"https://nvd.nist.gov/vuln/detail/CVE-2021-44228",
"https://logging.apache.org/log4j/2.x/security.html",
"https://www.cisa.gov/news-events/cybersecurity-advisories/aa21-356a",
"https://github.com/apache/logging-log4j2/releases/tag/log4j-2.17.1",
"https://www.lunasec.io/docs/blog/log4j-zero-day/",
"https://www.microsoft.com/en-us/security/blog/2021/12/11/guidance-for-preventing-detecting-and-hunting-for-cve-2021-44228-log4j-2-exploitation/"
],
"severity": "critical",
"status": 0,
"title": "Log4j Remote Code Execution Vulnerability (Log4Shell) at api.acme.com",
"vulnerability_id": "CVE-2021-44228",
"vulnerability_type": "Application"
}
]

Response Fields

FieldTypeDescription
affected_locationstringSpecific URL or location where vulnerability was found
automated_vulnerability_validation_statusbooleanWhether the vulnerability was automatically validated
custom_severitystringFullHunt's assessed severity level
descriptionstringDetailed technical description of the vulnerability
domainstringThe affected domain
hoststringThe specific host affected
host_typestringType of host (e.g., "dns")
identification_dateintegerUnix timestamp when vulnerability was first identified
impactstringDetailed impact assessment
issue_idintegerUnique vulnerability issue identifier
last_seenintegerUnix timestamp when vulnerability was last confirmed
recommendationstringDetailed remediation recommendations
referencesarrayExternal references and resources
severitystringStandard vulnerability severity level
statusintegerVulnerability status (0 = active, 1 = resolved)
titlestringVulnerability title/summary
vulnerability_idstringCVE ID or other vulnerability identifier
vulnerability_typestringType of vulnerability (e.g., "Application", "Infrastructure")

Integration Example​

import requests
from datetime import datetime

def get_critical_vulnerabilities(api_key):
"""Get all critical vulnerabilities for the organization."""

url = "https://fullhunt.io/api/v1/enterprise/vulnerabilities"
headers = {"X-API-KEY": api_key}

response = requests.get(url, headers=headers)

if response.status_code == 200:
vulnerabilities = response.json()

# Filter for critical vulnerabilities
critical_vulns = [v for v in vulnerabilities if v.get('severity') == 'critical']

print(f"Found {len(critical_vulns)} critical vulnerabilities:")

for vuln in critical_vulns:
print(f"\n🚨 {vuln['title']}")
print(f" Host: {vuln['host']}")
print(f" CVE: {vuln.get('vulnerability_id', 'N/A')}")
print(f" Identified: {datetime.fromtimestamp(vuln['identification_date'])}")
print(f" Status: {'Active' if vuln['status'] == 0 else 'Resolved'}")

if vuln.get('automated_vulnerability_validation_status'):
print(" āœ… Automatically validated")

print(f" Impact: {vuln['impact'][:100]}...")

return critical_vulns
else:
print(f"Error: {response.status_code}")
return None

def generate_vulnerability_report(api_key):
"""Generate a summary vulnerability report."""

url = "https://fullhunt.io/api/v1/enterprise/vulnerabilities"
headers = {"X-API-KEY": api_key}

response = requests.get(url, headers=headers)

if response.status_code == 200:
vulnerabilities = response.json()

# Count by severity
severity_counts = {}
type_counts = {}

for vuln in vulnerabilities:
severity = vuln.get('severity', 'unknown')
vuln_type = vuln.get('vulnerability_type', 'unknown')

severity_counts[severity] = severity_counts.get(severity, 0) + 1
type_counts[vuln_type] = type_counts.get(vuln_type, 0) + 1

print("šŸ“Š Vulnerability Summary Report")
print("=" * 40)

print("\nBy Severity:")
for severity, count in sorted(severity_counts.items()):
print(f" {severity.capitalize()}: {count}")

print("\nBy Type:")
for vuln_type, count in sorted(type_counts.items()):
print(f" {vuln_type}: {count}")

print(f"\nTotal Vulnerabilities: {len(vulnerabilities)}")

return vulnerabilities
else:
print(f"Error: {response.status_code}")
return None

# Usage
api_key = "your-api-key-here"
critical_vulns = get_critical_vulnerabilities(api_key)
full_report = generate_vulnerability_report(api_key)

Automated Vulnerability Validation​

FullHunt automatically validates vulnerabilities when possible:

Validation Methods​

  • Active Testing: Safe exploitation attempts to confirm vulnerability
  • Version Detection: Identifying vulnerable software versions
  • Configuration Analysis: Checking for insecure configurations
  • Response Analysis: Analyzing server responses for vulnerability indicators

Validation Status​

  • true: Vulnerability has been automatically validated
  • false: Vulnerability detected but not automatically validated

Integration with Security Tools​

# Example: Send critical vulnerabilities to SIEM
def send_to_siem(vulnerabilities):
for vuln in vulnerabilities:
if vuln['severity'] == 'critical':
siem_event = {
'timestamp': vuln['identification_date'],
'source': 'FullHunt',
'severity': 'high',
'title': vuln['title'],
'host': vuln['host'],
'cve_id': vuln.get('vulnerability_id'),
'description': vuln['description']
}
# Send to your SIEM system
send_to_siem_api(siem_event)