针对thinkphp站点的漏洞挖掘和经验分享
0x1 前言
浅谈
目前在学习和研究thinkphp相关漏洞的打法,然后最近对于thinkphp资产的收集方面有了一个简单的认识,然后写一篇新手看的thinkphp相关的漏洞收集和挖掘的文章来分享下。然后后面是给师傅们分享下后台文件上传,然后直接打一个getshell的漏洞点。
0x2 thinkphp漏洞简介
thinkphp简介
ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,遵循Apache 2开源协议发布,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP 5.0以上版本,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展。
其中thinkphp 搭建网站常见完后,十分熟悉的thinkphp 架构的页面如下:

0x3 资产收集篇
FOFA空间引擎
那下面我就来给师傅们分享下我进行thinkphp 站点的信息收集,我主要是使用空间引擎,比如常见的FOFA和鹰图进行资产测绘,然后进行目标资产的筛选,然后进行一波漏洞的测试。
FOFA语句如下:
-  body="thinkphp" && title="后台管理"

然后可以看到下面的icon图标特别多,一般像这样的你要是打出一个漏洞,后面很有可能能够打出一个通杀出来

然后可以看到下面也是有五千多条的资产可以让我们去打,资产也算蛮多的

然后还可以就是直接使用thinkphp 的图标,如下图保存到本地然后进行icon图标检索

可以看到这样检索匹配出来的资产也都蛮多的,而且匹配出来的都是thinkphp 的站点

0x4 工具篇
Thinkphp(GUI)漏洞利用工具
ThinkPHPGUI的工具下载链接如下,github上有蛮多的相关工具,但是都差不多
Thinkphp(GUI)漏洞利用工具,支持各版本TP漏洞检测,命令执行,getshell
https://github.com/Lotus6/ThinkphpGUI

工具的使用很简单,主要是靠这个工具武器库里面的poc检测,然后利用ThinkPHP工具去打一波nday漏洞,可以看到下面直接使用该工具进行poc检测,然后可以检测出ThinkPHP相关版本的漏洞

然后可以使用Google浏览器进行检索这个漏洞 的打法,然后打一个nday

0x5 渗透测试
漏洞一:弱口令登录
然后就是先按照我上面的方法,比如使用FOFA找Thinkphp 相关资产的站点,然后利用工具去扫描,看看有没有nday
要是没扫出来,我开始不是都是检索管理后台 的关键字嘛,都是登录后台的站点,那么我们是不是就可以尝试下弱口令登录呢,然后再在里面测试,扩大这个rank危害值。
下面是我收集的Thinkphp 站点常见的弱口令如下,需要的师傅可以尝试下
-  sysadmin:sysadmin123
-  admin:admin
-  admin:admin123
-  admin:123456
-  admin:admin@123
-  admin:1qaz@WSX
-  test:test
还有就是很常见的右下角的Thinkphp 的站点的图标,师傅们可以记录下

这里直接使用弱口令admin:admin成功登录进来了

漏洞二:存储型XSS漏洞
下面看到该站点存在查询接口,一般看到这样的,很常见的手法就是测一个sql注入,先尝试一个手工注入吧,在bp里面测试

然后还可以用下面的测试一个时间盲注
-  sql注入判断
-  1' and if(1,sleep(5),3)--+
-  1" and if(1,sleep(5),3)--+
-  1) and if(1,sleep(5),3)--+
-  1 and if(1,sleep(5),3)--+

然后下面有一个添加的功能,里面出现输入框,这就可以测下XSS漏洞了
然后在下面的输入框中都输入简单的XSS弹窗语句
-  <script>alert(XSS)</script>

然后保存下来,直接就一直在弹窗,这个站点没有对输入的内容进行过滤和验证,直接可以打XSS漏洞,且是存储型,还会影响别的用户,

漏洞三:文件上传getshell
进来以后,我这里直接使用findsomething插件小熊猫头,看看有没有什么铭感的接口信息

师傅们可以看到下面的议题列表中的添加功能,然后这里存在文件上传的功能点

下面来试试这里文件上传,随便上传一个图片上去,然后利用bp抓包看看里面的数据包
 这里我只是点击选择文件,没有点击下面的绿色提交按钮,但是看数据包可以发现已经上传成功了

我们访问下这个图片上传成功的路径,看看是不是真的上传成功了
 访问返回包的路径,可以看到确实上传图片成功了

删掉后面的图片名称,然后看看能不能打一个目录遍历漏洞
 但是这里没有成功,返回403权限拒绝访问,说明存在这个目录,但是没有权限,也算是一个思路了吧

通过几次数据包的抓取,分析发现这个站点的上传文件的方式没有任何的过滤方式,应该可以直接上传恶意文件,然后getshell一波。
使用wappalyzer插件,可以看到这个站点是使用php搭建的,那么就可以上传php木马上去,然后打一波phpinfo()了

直接打一个phpinfo()证明危害即可
-  -----------------------------19248753661017244075365571982
-  Content-Disposition: form-data; name="file"; filename="xiaoma.php"
-  Content-Type: image/jpeg
-  GIF89a
-  <?php
-  phpinfo();
-  ?>
-  -----------------------------19248753661017244075365571982--

然后再直接访问这个地址,可以看到直接打出来了一个phpinfo()的页面
 后面要是上传木马,然后getshell也是可以的,但是这是测试,没必要上传木马,直接证明危害即可。

更多网络安全优质免费学习资料与干货教程

送渗透工具、技术文档、书籍,面试题、视频(基础到进阶。环境搭建,HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等)、应急响应笔记、学习路线。
申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。
相关文章:
 
针对thinkphp站点的漏洞挖掘和经验分享
0x1 前言 浅谈 目前在学习和研究thinkphp相关漏洞的打法,然后最近对于thinkphp资产的收集方面有了一个简单的认识,然后写一篇新手看的thinkphp相关的漏洞收集和挖掘的文章来分享下。然后后面是给师傅们分享下后台文件上传,然后直接打一个ge…...
 
MySQL数据库入门,pycharm连接数据库—详细讲解
一.安装MySQL 1.常用MySQL5.7,首先安装MySQL, (一) (二) (三) (四) (五) 2.配置环境变量 打开MySQL安装路径,在其中找到…...
 
.bat文件快速运行vue项目
如何使用bat文件快速运行vue项目? 新建个文件,改名为serve.bat。 在文件中写入以下内容: # cd 项目路径 cd D:\projects\xxx npm run serve pausecd 项目所在的路径 npm run dev/serve ,取决于项目的启动方法,打…...
 
数据结构(邓俊辉)学习笔记】优先级队列 07——堆排序
1.算法 作为完全二叉堆的一个应用,这节来介绍堆排序算法。 是的,谈到优先级队列,我们很自然地就会联想到排序。因为就其功能而言,包括完全二叉堆在内的任何一种优先级队列都天生地具有选取功能,也就是选取其中的最大…...
 
npm install pnpm -g 报错的解决方法
npm install pnpm -g 报错的解决方法 npm error code ETIMEDOUT npm error errno ETIMEDOUT npm error network request to https://registry.npmjs.org/pnpm failed, reason: npm error network This is a problem related to network connectivity. npm error network In mo…...
 
集师知识付费小程序开发
智慧生活,从选择一款优质知识付费小程序起航 在这个信息爆炸的时代,知识成为了最宝贵的财富。我们渴望不断学习,提升自我,追求更高品质的生活。而一款优质的知识付费小程序,就如同照亮前行道路的明灯。 它是知识的宝库…...
 
前端开发提效工具——用户自定义代码片段
做开发总是会有大量的代码要写,但是有时候某些代码是非常基础但是很多,我们就可以把这一部分整合起来,使用一个很简短的关键字来快速唤出。 如何新建这样的代码段? 1.在VSCode当中找到Snippets,然后点击 2.之后会弹出…...
 
docker容器安全加固参考建议——筑梦之路
这里主要是rootless的方案。 在以 root 用户身份运行 Docker 会带来一些潜在的危害和安全风险,这些风险包括: 容器逃逸:如果一个容器以 root 权限运行,并且它包含了漏洞或者被攻击者滥用,那么攻击者可能会成功逃出容器…...
 
基于 Appium 的 App 爬取实战
除了运行 Appium 的基本条件外,还要一个日志输出库 安装: pip install loguru 思路分析 首先我们观察一下整个 app5 的交互流程,其首页分条显示了电影数据, 每个电影条目都包括封面,标题, 类别和评分 4…...
nvm与node安装
参考: 一文搞定NVM安装所有问题NVM UI解决nodejs下载慢问题 node_mirror: http://npmmirror.com/mirrors/node/ npm_mirror: http://registry.npmmirror.com/mirrors/npm/解决nvm list available报错问题 Could not retrieve https://npm.taobao.org/mirrors/node/…...
 
【电子通识】什么是MSL湿敏等级
潮敏失效是塑料封装表贴器件在高温焊接工艺中表现出来的特殊的失效现象。 造成此类问题的原因是器件内部的潮气膨胀后使得器件发生损坏。 MSL是“Moisture Sensitivity Level(湿气敏感性等级)”的缩写,针对需进行回流焊的产品设定了MSL基准。…...
【ARM 芯片 安全与攻击 5.4 -- Meltdown 攻击与防御介绍】
文章目录 什么是 Meltdown 攻击?Meltdown 攻击的基本原理Meltdown 攻击代码示例Meltdown 攻击在芯片中的应用应用场景Meltdown 攻击与瞬态攻击、测信道攻击的关系针对 Meltdown 攻击的防御硬件级防御Summary什么是 Meltdown 攻击? Meltdown 攻击是一种利用处理器乱序执行(o…...
Django 后端架构开发:分页器到中间件开发
🚀 Django 后端架构开发:分页器到中间件开发 🚀 🔹 应用样式:上下翻页 分页功能在处理大量数据时非常有用。通过上下翻页,我们可以让用户轻松浏览数据。以下是一个展示产品列表的分页示例: fr…...
亲测解决The client socket has failed to connect to
这个问题是因为深度学习的程序(服务)跟本地主机连接不上,解决方法是确认rank起始数为0。 报错原文 [W socket.cpp:663] [c10d] The client socket has failed to connect to [csdn-xiaohu]:12345 (errno: 22 - Invalid argument).解决方法 …...
 
Intel ACRN 安装WIN10 VM
上一篇帖子记录了ACRN运行rt linux,这篇帖子记录一下最近倒腾出来的WIN10。目前架构如下 ACRN可以把它理解为一个基于Linux类似软件的Type1 Hypervisor,基于Linux去做而不是baremetal是为了更方便去配置资源。 首先我们得有两台电脑,一台是开…...
 
贷齐乐案例
源码分析: <?php // 设置 HTTP 头部,指定内容类型为 text/html,字符集为 utf-8 header("Content-type: text/html; charsetutf-8"); // 引入数据库配置文件 require db.inc.php; // 定义函数 dhtmlspecialchars,用…...
[Qt][Qt 网络][下]详细讲解
目录 1.TCP Socket1.核心API概览2.回显服务器3.回显客户端 2.HTTP Client3.其他模块 1.TCP Socket 1.核心API概览 核⼼类是两个:QTcpServer和QTcpSocketQTcpServer用于监听端口,和获取客户端连接 listen(const QHostAddress&, quint16 port)&#…...
十三、OpenCVSharp的目标检测
文章目录 简介一、传统目标检测方法1. 基于滑动窗口的检测2. 特征提取与分类器结合(如 HOG + SVM)3. 级联分类器二、基于深度学习的目标检测1. YOLO 系列算法2. SSD 算法3. Faster R-CNN 算法三、深度学习目标检测模型的训练和部署四、目标检测的性能评估指标1. 准确率、召回…...
 
STM32标准库学习笔记-6.定时器-输入捕获
参考教程:【STM32入门教程-2023版 细致讲解 中文字幕】 定时器输入捕获 IC(Input Capture)输入捕获输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率…...
 
vue前端可以完整的显示编辑子级部门,用户管理可以为用户分配角色和部门?
用户和角色是一对多的关系用户和部门是多对多得关系<template><div class="s"><!-- 操作按钮 --><div class="shang"><el-input v-model="searchText" placeholder="请输入搜索关键词" style="width:…...
 
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
 
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
 
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
 
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
 
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
 
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
