0x01 前言
大家有没有遇到过Webshell无法执行系统命令或可执行文件的情况?我想肯定是有的,出现无法执行命令的原因也有很多,如常见的:
PHP安全模式(disable_functions); cmd.exe被降权或删除; 命令执行组件被卸载; 组策略禁止执行cmd.exe; 安全狗、云锁、360等安全防护软件; ...SNIP...
0x02 执行命令组件、函数、类和方法
Asp:
Wscript.shell、Shell.Application
Aspx:
ProcessStartInfo、Wscript.shell,Shell.Application
Php:
system、passthru、shell_exec、exec、popen、proc_open
Jsp:
Runtime.getRuntime().exec(command)
0x03 注册与卸载执行命令的高危组件
可以通过执行以下命令或删除对应注册表项来注册和卸载WScript.Shell、Shell.Application命令组件。
WScript.Shell组件:
regsvr32 /u %windir%\system32\wshom.ocx HKEY_CLASSES_ROOT\WScript.Shell HKEY_CLASSES_ROOT\WScript.Shell.1
Shell.Application组件:
regsvr32 /u %windir%\system32\shell32.dll HKEY_CLASSES_ROOT\Shell.Application HKEY_CLASSES_ROOT\Shell.Application.1
0x04 Webshell常见命令执行报错小结
0x05 Windows各版本操作系统cmd路径
大部分管理员只会给默认System32、SysWOW64目录下的cmd.exe文件做降权处理,这时我们就可以尝试使用以下对应操作系统版本的cmd.exe来执行系统命令,如下图。
Win2k8:
C:\Windows\winsxs\amd64_microsoft-windows-commandprompt_31bf3856ad364e35_6.1.7601.17514_none_e932cc2c30fc13b0\cmd.exe C:\Windows\winsxs\wow64_microsoft-windows-commandprompt_31bf3856ad364e35_6.1.7601.17514_none_f387767e655cd5ab\cmd.exe
Win2k12:
C:\Windows\WinSxS\amd64_microsoft-windows-commandprompt_31bf3856ad364e35_6.3.9600.16384_none_7bcb26c7ee538fe3\cmd.exe C:\Windows\WinSxS\wow64_microsoft-windows-commandprompt_31bf3856ad364e35_6.3.9600.16384_none_861fd11a22b451de\cmd.exe
Win2k16:
C:\Windows\WinSxS\amd64_microsoft-windows-commandprompt_31bf3856ad364e35_10.0.14393.0_none_b8813238310f2dd6\cmd.exe C:\Windows\WinSxS\wow64_microsoft-windows-commandprompt_31bf3856ad364e35_10.0.14393.0_none_c2d5dc8a656fefd1\cmd.exe