【BP靶场portswigger-服务端4】操作系统命令注入-5个实验(全)(上)

简介: 【BP靶场portswigger-服务端4】操作系统命令注入-5个实验(全)(上)

助你一臂之力


📋问题1:需要准备些什么?

🎯掌握基础的命令,尝试各种拼接(前期的信息收集)

🎯带外工具(dnslog),自己的服务器

214605e2492d4709b9511fbf7cc06d92.png


一、操作系统命令注入


1、意义

1、简述:操作系统命令注入(也称为外壳注入)是一个Web安全漏洞,允许攻击者在运行应用程序的服务器上执行任意操作系统(OS)命令


2、危害:通常会完全危害应用程序及其所有数据,攻击者可以利用操作系统命令注入漏洞来危害托管基础架构的其他部分,利用信任关系将攻击转向组织内的其他系统。


2、有用的命令

识别操作系统命令注入漏洞后,执行一些初始命令以获取有关已受损系统的信息
一些在Linux和Windows平台上有用的命令的摘要: 
命令的目的      Linux操作系统   Windows
当前用户的名称   whoami         whoami
操作系统     uname -a      ver
网络配置     ifconfig      ipconfig /all
网络连接     netstat -an     netstat -an
运行进程     ps -ef          tasklist 


3、注入操作系统命令的方式


1、简述:

各种外壳元字符可用于执行操作系统命令注入攻击,许多字符用作命令分隔符,允许将命令链接在一起


1、以下命令分隔符在基于Windows和基于Unix的系统上都有效:
    &
    &&
    |
    ||
2、以下命令分隔符仅适用于基于Unix的系统:
    ;
    换行符(0x0a或\n)
3、在基于Unix的系统上,您还可以使用反勾号或美元字符在原始命令中执行插入命令的内联执行:
    '
    注入命令'
    $(插入命令)

————


2、分析观察


不同的shell元字符具有细微不同的行为,这些行为可能会影响它们在某些情况下是否有效,以及它们是否允许带内检索命令输出,还是只对盲目利用有用


有时,控制的输入出现在原始命令的引号内。在这种情况下,在使用合适的shell元字符插入新命令之前,需要终止加引号的上下文(使用"或')


4、防止操作系统命令注入攻击


防止操作系统命令注入漏洞的最有效方法是永远不要从应用层代码调用操作系统命令(在每种情况下,都有使用更安全的平台API实现所需功能的替代方法)


如果使用用户提供的输入调用OS命令是不可避免的,则必须执行强输入验证:
    1、根据允许值的白名单进行验证。
    2、验证输入是否为数字。
    3、验证输入是否仅包含字母数字字符,而不包含其他语法或空白。
    4、不要试图通过转义shell元字符来清理输入(非常容易出错,且容易被熟练的攻击者绕过)


二、执行任意命令


1、示例:

1、一个购物应用程序:
允许用户查看某个商品在特定商店中是否有库存
可通过以下URL:
https://insecure-website.com/stockStatus?productID=381&storeID=29


2、需查询其他系统:
提供股票信息,应用程序必须查询各种遗留系统。该功能是通过调用shell命令并将产品和商店ID作为参数来实现,如
stockreport.pl 381 29(此命令输出指定项目的库存状态,并返回给用户)
------
攻击者:
如果应用程序未实现针对操作系统命令注入的防御措施,攻击者可以提交以下输入来执行任意命令:
& echo aiwefwlguh &
如果此输入在产品ID参数,则应用程序执行的命令为:
stockreport.pl & echo aiwefwlguh & 29
将附加命令分隔符&放置在插入的命令之后,结合echo命令输出回显,这是测试某些类型的操作系统命令注入的有用方法,降低了阻止执行注入命令的可能性(&字符是shell命令分隔符,因此执行的是三个独立的命令)
返回给用户的输出为:
Error - productID was not provided    (stockreport.pl执行时未使用预期参数,返回错误提示)
aiwefwlguh                (执行注入的echo命令,并输出)
29: command not found     (参数29作为命令执行,导致错误)

涉及实验:

实验1:操作系统命令注入(简单)


实验1:操作系统命令注入(简单)


part1:

使用Burp Suite拦截和修改检查库存水平的请求

bb6072a50b9448d1a044b0688e97a3b1.png

part2:

发送到repeater

修改storeID参数(带入一个命令)


1|whoami

a036347e1fb14b818aa0810f0e72500a.png

fead3cb2830d4ea7b88cb8864d27da91.png


part3:

修改数据包,并关闭拦截


c0ddc17e90854443ac8c0ab0fdde4619.png


三、盲操作系统命令注入漏洞


1、简述


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


2、示例


一个网站允许用户提交有关该网站的反馈。用户输入他们的电子邮件地址和反馈信息,服务器端应用程序向站点管理员生成包含反馈的电子邮件

————

它将调用邮件程序,其中包含提交的详细信息,如:


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

————

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

 


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


1、可以使用将触发时间延迟的注入命令,从而根据应用程序响应所需的时间来确认命令是否已执行

————

2、ping命令是一种有效的方法,因为它允许您指定要发送的ICMP数据包的数量,从而指定命令运行所需的时间:


& ping -c 10 127.0.0.1 &


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

————

涉及实验:

实验2:具有时延的操作系统命令盲注入


实验2:具有时延的操作系统命令盲注入


part1:

填写反馈信息


使用Burp Suite拦截和修改提交反馈的请求

b4ecb17ceeb04f68a76147a06f8bd889.png

part2:

发送到repeater

修改email参数


email=x||ping+-c+10+127.0.0.1||


观察响应,时间基本上为10s,存在系统命令注入


00e79b154fe146b5bbd9ceed5cb7422e.png


part3:

修改数据包,并关闭拦截


b0a803fec5134cecbd4fa2ed6e1b993d.png


等10s后刷新一下页面,就完成了


ad92c1dcb4994a979f7d58a5c9192f42.png


4、通过重定向输出利用盲目操作系统命令注入


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


& whoami > /var/www/static/whoami.txt &
(学过Linux的应该都会这些命令)


2、解释:>字符发送来自whoami命令添加到指定文件(这里是输出到whoami.txt,没有就自动创建)。然后可以使用浏览器获取https://vulnerable-website.com/whoami.txt以检索文件,并查看插入命令的输出。


涉及实验:

实验3:带有输出重定向的盲操作系统命令注入


实验3:带有输出重定向的盲操作系统命令注入


part1:

填写反馈信息

使用Burp Suite拦截和修改提交反馈的请求


4af2cb945f2b414d8ece1f19b7328a06.png



part2:

发送到repeater

修改email参数


email=||whoami>/var/www/images/output.txt||

e7822b4fcad4404494b81d28ed38e123.png

在数据包中修改,并关闭拦截

5b18b4c6eb92466990167a9fa68302c5.png


part3:


通过filename参数文件包含,读取输出到output.txt文件的信息


filename=output.txt


916b18001b67468ca2bfb8aa6eb04a62.png



第三个数据包(老演员了)


64d2a3d53c674b818cb7df1d850eda4a.png

发送到repeater


08c101e84e33438e9f03df18bfeafc1f.png


在数据包中修改,并关闭拦截

c37f8d71dc784ba48affddc37acbc09b.png


5ca13f2d5e4949e5b68f788f5e48abf2.png


目录
相关文章
|
1月前
|
算法
数据结构实验之操作系统打印机管理器问题
本实验旨在通过实现操作系统中的打印机管理器问题,掌握队列的基本操作如入队、出队等,利用队列的先进先出特性解决先申请先打印的问题。实验包括队列的初始化、入队、出队、打印队列内容等功能,并通过菜单式界面进行交互。实验结果显示基本功能可正常执行,但在连续操作时存在执行失败的情况,需进一步优化。
43 4
|
2月前
|
Linux 编译器 C语言
./build.sh:行1: g++: 未找到命令的错误问题在centos操作系统下面如何解决
通过上述步骤,您应该能够有效地解决CentOS系统中 `g++: 未找到命令`的错误。确保软件开发环境配置得当,对于顺利执行编译脚本和日常开发工作至关重要。如果问题依然存在,考虑检查脚本内的命令路径引用是否正确,或进一步排查系统配置问题。
163 0
|
2月前
|
存储 Java iOS开发
MacOS环境-手写操作系统-43-dir命令的实现 和 文件写入
MacOS环境-手写操作系统-43-dir命令的实现 和 文件写入
42 0
|
5月前
|
弹性计算 运维
阿里云操作系统智能助手OS Copilot实验测评报告
**OS Copilot 产品体验与功能反馈摘要** 运维人员发现OS Copilot易上手,文档清晰,助其高效排查故障(8/10分)。愿意推荐并参与开源开发。亮点在于知识问答,能快速筛选答案。相较于竞品,优点是新手友好、文档清晰,但功能扩展性待增强。期望增加系统错误排查与解决方案,并集成ECS等,以优化系统安装流程。
阿里云操作系统智能助手OS Copilot实验测评报告
|
5月前
|
弹性计算 运维 自然语言处理
阿里云操作系统智能助手OS Copilot实验测评报告
OS Copilot是阿里云Linux的智能助手,助于提升运维效率,通过学习用户习惯提供智能建议。开发者反馈其在DevOps场景中非常有用,给予10分帮助度评价。用户赞赏其命令执行功能,希望能扩展多命令执行和错误自动修正。与ACK、ECS等集成,可自动化部署和CI/CD流程。文档清晰,适合新手,用户愿意推荐并参与开源开发。
107 3
阿里云操作系统智能助手OS Copilot实验测评报告
|
5月前
|
弹性计算 运维 自然语言处理
阿里云操作系统智能助手OS Copilot实验测评报告
阿里云OS Copilot是一款专为Linux设计的智能运维助手,利用大语言模型提供自然语言问答、命令执行辅助和系统调优功能。软件维护工程师反馈,OS Copilot易于上手,文档清晰,对提升运维效率有显著帮助,评分10/10。其轻量级设计、准确的回答是主要优点,但可能在复杂场景下表现不足。用户期望扩展到更多Linux发行版,增加系统优化建议、代码优化和日志分析功能,并能与其他产品如ACK、ECS联动。希望能有异常处理提示和日志输出以增强问题定位。
124 14
|
5月前
|
弹性计算 运维 自然语言处理
阿里云操作系统智能助手OS Copilot实验测评报告
OS Copilot是Alibaba Cloud Linux基于大模型构建的操作系统智能助手,其旨在通过自然语言问答、辅助命令执行及系统运维调优等功能,提升用户对Alibaba Cloud Linux的使用效率。
|
5月前
|
弹性计算 运维 自然语言处理
阿里云操作系统智能助手OS Copilot实验测评报告
OS Copilot是针对Linux的智能助手,助力学习、运维及编程。用户界面直观,自然语言交互方便新手。官方文档详尽,但初次配置略复杂,适合学生和开发者。在提高代码编写和调试效率、系统学习上得分高,功能亮点包括代码生成、问答和命令执行。用户期待更多操作系统支持、自动错误分析和系统排查功能。
190 3
|
5月前
|
弹性计算 运维
阿里云操作系统智能助手OS Copilot实验测评报告
简介:体验OS Copilot对于新人使用是友好的,教程给出的比较全面,还支持语言问答,命令执行等优点,还允许用户直接在操作系统内部使用阿里云,完成ECS的实例查询等操作。但是在系统兼容上表现出不足,对于服务器地区不明确。但总体来说测评者对OS Copilot其智能化、高效化、专业化评价是高的。
|
5月前
|
弹性计算 人工智能 运维
阿里云操作系统智能助手OS Copilot实验测评报告
阿里云操作系统智能助手OS Copilot实验测评报告
115 2