针对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:…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...

实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...