IndoXploit is the flagship shell of the Indonesian defacement scene, designed for volume operations — compromise many, deface fast, claim credit.

Capabilities

Full-featured panel with file management, command execution, mass deface tools, cPanel exploitation modules, WordPress scanner, FTP brute-forcer, and zone-h submission integration. Distinctive ASCII art banner (root@indoxploit) in the source.

W0rm Inside the Login Function

The W0rm supply-chain injection in IndoXploit is uniquely positioned: it is placed inside login_shell(), the function that handles unauthenticated requests. This means the backdoor fires on every unauthenticated visit to the shell — not just on authenticated sessions. Any visitor, any scanner, any bot that hits the URL triggers the W0rm payload before the login form is even rendered. The operator has no visibility into this execution path.

TLS Disabled on All Outbound Connections

Ten separate instances of TLS verification being explicitly disabled across the codebase. Every outbound cURL request — cPanel attack module, WordPress scanner, FTP credential checker — runs with certificate validation turned off. Any on-path observer between the compromised server and the target can present a forged certificate to intercept, modify, or inject responses. The operator’s attack traffic is MITM-able by design — and fully cleartext wherever the targeted endpoint is plain HTTP rather than HTTPS.

Authentication

MD5 hash of a numeric string with no salt. Trivially crackable with any rainbow table or brute-force tool. The anti-bot filter blocks search engine crawlers (Googlebot, Slurp, YahooSeeker, bingbot) but does not block curl or custom HTTP clients — it protects the shell from indexing, not from exploitation.

Vulnerabilities

#ClassImpactStatus
1W0rm prepend inside login_shell() — fires on every unauthenticated requestPre-auth RCELive-proven
2TLS verification disabled (10 instances) — all outbound HTTP MITM-ableTraffic interceptionConfirmed
3MD5 auth, no salt — trivially crackableCredential exposureConfirmed
4Anti-bot filter blocks crawlers but not HTTP clientsIncomplete evasionConfirmed
5PHP 5.6 only — set_magic_quotes_runtime fatal on PHP 7+Accidental neutralizationConfirmed

Detection Surface

File-system indicators

IndicatorTypeDetail
SHA256Hash41985f2766b652851b6a509883a0e62496b89b1f475b82785338aa6054da80b9
Expected size~84 KB
$auth_pass = "db315f48b0388b77d7f0fe45ec8d8e2f"AuthDefault password: 99725110740
zone-h.com/notify/singleStringDefacement notification URL
yougetsignal.com/domains.phpStringReverse IP lookup
CURLOPT_SSL_VERIFYPEER set to falseCode pattern10 instances — all outbound MITM-able
wp-admin/update.php?action=upload-themeStringWordPress exploitation URL
set_magic_quotes_runtimeFunctionPHP 5 only — fatal on PHP 7+
RuntimePHP 5.6 only

HTTP access-log indicators

Log patternWhat it means
POST pass=Login form — MD5 auth, default hash db315f48b0388b77d7f0fe45ec8d8e2f (=99725110740)
?a=Action dispatcher
Outbound to zone-h.com/notify/singleMass defacement notification
Outbound to yougetsignal.com/domains.phpReverse IP lookup
Outbound to wp-admin/update.php?action=upload-themeWordPress theme upload exploit
All outbound with CURLOPT_SSL_VERIFYPEER=false10 instances — all outbound MITM-able
set_magic_quotes_runtimePHP 5 only — fatal on PHP 7+
UA filter: blocks search engine botsReturns different content to automated crawlers

YARA rule

rule webshell_indoxploit {
    meta:
        description = "IndoXploit webshell (Indonesian scene)"
        author      = "OHIIHO Threat Research"
        reference   = "https://research.ohiiho.com/arsenal/indoxploit/"
        status      = "validated"

    strings:
        $title         = "IndoXploit" ascii nocase
        $auth_pass     = "$auth_pass" ascii
        $default_hash  = "db315f48b0388b77d7f0fe45ec8d8e2f" ascii
        $zone_h        = "zone-h.com/notify/single" ascii
        $yougetsignal  = "yougetsignal.com/domains.php" ascii
        $ssl_verify    = "CURLOPT_SSL_VERIFYPEER" ascii
        $wp_upload     = "wp-admin/update.php?action=upload-theme" ascii
        $magic_quotes  = "set_magic_quotes_runtime" ascii

    condition:
        filesize < 150KB
        and $title
        and ($auth_pass or $default_hash)
        and ($zone_h or $yougetsignal or $wp_upload or $ssl_verify or $magic_quotes)
}

W0rm-infected variants are also caught by the generic W0rm supply-chain rule — see the W0rm supply-chain detection applicable to all infected tools.

MITRE ATT&CK

TechniqueContext
T1505.003Web Shell
T1071.001Application Layer Protocol: Web Protocols (TLS-disabled exfil)
T1041Exfiltration Over C2 Channel (W0rm mail exfil + TLS bypass)

OHIIHO Threat Research.