WSO is the most dangerous shell in the corpus. Not because of sophistication — because of surface area. Five independent attack vectors, all firing before or bypassing authentication entirely. Combined with the W0rm supply-chain injection, any WSO deployment is compromised-on-deploy: the operator gives W0rm persistent unauthenticated access to every host they touch.

Default charset: Windows-1251 (Cyrillic). 69 KB delivers full functionality.

Capabilities

File browser. Command execution. SQL client (MySQL). FTP brute-force. PHP eval. Windows + Linux support. Self-rename. CLI mode — can be invoked as php wso.php <base64_POST> <base64_SERVER> with serialized arguments, enabling persistence even if web access is removed.

Authentication: none by default. The $auth_pass variable is never declared. !empty($auth_pass) evaluates to false — no login prompt, direct access to all shell functions for any visitor.

W0rm Supply-Chain Backdoor

Injected at the file-manager dispatch (fires when FilesMan action loads). Three covert mechanisms:

VectorAccessImpact
GET ?cmd=<command>UnauthenticatedOS command execution as web server user
GET ?xsec=blocker + POST multipartUnauthenticatedArbitrary file write to webroot
mail() callbackAutomatic on first loadExfiltration of victim URL + filepath to W0rm controller

The W0rm ?cmd= handler executes before any shell logic — it is prepended code, not integrated. The operator deploying WSO has no visibility into these vectors. The shell functions as expected for the operator while simultaneously serving W0rm.

IOC markers: errors_log file written to webroot. Pastebin payload URL: pastebin[.]com/raw/yTXtLFyx (rotatable). Exfil mailbox: md5[.]undersociety[@]gmail[.]com. Campaign tag: 8987RM.

W0rm infects 4 out of 10 Tier 1 shells in the corpus (40% infection rate): WSO, b374k, r57, IndoXploit. The redistributor backdoors the buyers.

Vulnerabilities

#ClassImpactStatus
1W0rm supply-chain RCE — unauthenticated GET ?cmd=Pre-auth RCELive-proven
2W0rm file upload — unauthenticated ?xsec=blocker drops files to webrootArbitrary file writeLive-proven
3W0rm mail() beacon to md5.undersociety@gmail.comSupply-chain surveillanceLive-proven
4Zero authentication — $auth_pass never declared, auth block skippedUnrestricted accessLive-proven
5Dispatch gadget — call_user_func on POST-controlled function nameAttacker-controlled dispatchConfirmed
6Object injection — unserialize on user-controlled cookiePOP chain to RCEConfirmed
7CLI mode — invocable as php wso.php without HTTPPersistence without web logsConfirmed

Additional Attack Surfaces

Beyond W0rm, WSO carries four independent vulnerability classes:

#ClassDetail
1Zero authentication$auth_pass never declared — any visitor gets full shell access
2Dispatch gadgetcall_user_func('action' . $_POST['a']) — attacker-controlled function dispatch, no validation
3Object injectionunserialize($_COOKIE['f']) — POP chain possible if gadget classes loaded in PHP environment
4CLI mode$argv[1]/$argv[2] parsed as base64-serialized POST/SERVER — shell runs without HTTP, harder to detect via web logs

All four fire independently of the W0rm injection. Combined severity: any WSO copy is exploitable from five different angles simultaneously, none requiring authentication.

Detection Surface

File-system indicators

IndicatorTypeDetail
Single PHP file ≈ 69 KBSizeSource variant (WSO 2.5)
WSOsetcookieFunctionWSO-specific cookie setter — unique identifier across all webshell families
$auth_passVariableAuth password hash — empty string on default install = no auth
$_POST['p1'] in eval()Code patternPHP eval dispatch — appears 3 times in source
@unserialize($_COOKIE['f'])Code patternPHP object injection (POP chain to RCE)
Action dispatch: FilesMan, Console, Sql, Network, SecInfoCode pattern$_POST['a'] values for each shell module
Obfuscated variant: $XnNhAWEnhoiqwciqpoHH=file(__FILE__);VariableWebShellOrb 2.6 packer signature
errors_log in webrootMarker fileW0rm drops this on first execution (W0rm variant only)

HTTP access-log indicators

Log patternWhat it means
POST with a=FilesManFile manager action dispatch — strong WSO indicator
POST with p1= containing PHP codeArbitrary PHP eval execution
POST with pass=Login form password field
POST with a=Console / a=Sql / a=NetworkInteractive console, SQL interface, network tools
GET ?cmd=<command>W0rm backdoor — unauthenticated OS command execution
GET ?xsec=blockerW0rm file upload trigger
Cookie name = MD5 of hostnameAuth cookie — md5($_SERVER['HTTP_HOST'])

YARA rules

rule webshell_wso {
    meta:
        description = "WSO (Web Shell by Orb) v2.x"
        author      = "OHIIHO Threat Research"
        reference   = "https://research.ohiiho.com/arsenal/wso/"
        status      = "validated"

    strings:
        $auth_pass    = "$auth_pass" ascii
        $wso_cookie   = "WSOsetcookie" ascii
        $eval_p1      = "eval($_POST['p1'])" ascii
        $md5_host     = "md5($_SERVER['HTTP_HOST'])" ascii
        $globals_auth = "$GLOBALS['auth_pass']" ascii
        $post_pass    = "$_POST['pass']" ascii
        $filesman     = "FilesMan" ascii

    condition:
        filesize < 100KB
        and $auth_pass
        and ($wso_cookie or $md5_host or $globals_auth)
        and ($eval_p1 or $filesman or $post_pass)
}

W0rm supply-chain rule (generic — catches any W0rm-infected tool):

rule webshell_w0rm_prepend {
    meta:
        description = "W0rm supply-chain prepend (cleartext or base64)"
        author      = "OHIIHO Threat Research"
        status      = "validated"

    strings:
        $w0rm_cmd   = "$_GET[\"cmd\"]" ascii
        $w0rm_xsec  = "$_GET[\"xsec\"]" ascii
        $w0rm_mail  = "md5.undersociety" ascii
        $w0rm_pb    = "pastebin.com/raw/" ascii
        $w0rm_block = "xsec=blocker" ascii
        $w0rm_log   = "errors_log" ascii
        $w0rm_b64pb = "aHR0cHM6Ly9wYXN0ZWJpbi5jb20vcmF3" ascii
        $w0rm_from  = "RnJvbTogVzBybQ" ascii

    condition:
        filesize < 500KB and 3 of them
}

MITRE ATT&CK

TechniqueContext
T1505.003Web Shell
T1059.004Command and Scripting Interpreter — Unix Shell (dispatch gadget)
T1212Exploitation for Credential Access (object injection via cookie)
T1041Exfiltration Over C2 Channel (W0rm mail callback)
T1105Ingress Tool Transfer (W0rm file upload via ?xsec=blocker)

OHIIHO Threat Research.