版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
命令注入攻击前言命令注入漏洞是指攻击者可以随意执行系统命令。它属于高危漏洞之一,也属于代码执行的范畴。命令注入漏洞不仅存在于B/S架构中,在C/S架构中也常常遇到,本章节我们主要讲述Web中的命令注入漏洞。命令注入攻击原理命令注入攻击简介命令注入攻击防御命令注入攻击实践命令注入攻击命令注入是一种攻击,其目标是通过易受攻击的应用程序在主机操作系统上执行任意命令。当应用程序将不安全的用户提供的数据(表单、cookie、HTTP标头等)传递给系统外壳时,这些类型的攻击是可能的。在这种攻击中,攻击者提供的操作系统命令通常以易受攻击的应用程序的权限执行。通常,它们可能主要是由于输入验证不足。这种攻击与代码执行不同,代码执行允许攻击者添加自己的代码,然后由应用程序执行。在命令注入中,攻击者扩展了应用程序的默认功能,无需注入代码即可执行系统命令。命令注入攻击命令注入攻击危害利用此漏洞,攻击者可以使用易受攻击的应用程序的权限运行操作系统命令。根据当前用户的权限,此漏洞可能导致访问系统、泄露关键敏感数据,并可能导致对服务器或系统的完全控制接管。命令注入攻击漏洞成因Web应用程序有时需要执行操作系统命令(OS命令)来与底层主机操作系统和文件系统进行通信。这可以用于运行系统命令、启动用另一种编程语言编写的应用程序,或者运行shell、python、perl或PHP脚本。对于任何操作系统,包括Windows、Unix和Linux,都可以使用可以执行作为shell命令传递给其他脚本的命令的函数。我们知道命令是可以连接的,如果我们去掉ping
的IP,然后拿“|”连接符连接其他命令,会发生什么呢?命令注入攻击示例拿DVWA举例,DVWA是一个渗透测试平台,来看下命令执行这个模块,ping命令执行如下:命令注入攻击示例拼接命令:命令注入攻击原理命令注入攻击简介命令注入攻击防御命令注入攻击实践命令注入攻击简介命令注入漏洞是指Web应用程序中调用了系统可执行命令的函数,而且输入参数是可控的,如果黑客在输入中拼接了命令,就可以进行非法操作。命令注入攻击简介通常情况下脚本应用有时需要调用一些执行系统命令的函数,如PHP中的system、execshell_exec、passthru、popen、proc_popen等,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。命令注入攻击常用函数system函数命令执行命令注入攻击常用函数exec函数命令执行命令注入攻击常用函数passthru函数命令执行命令注入攻击命令连接符shell_exec函数命令执行命令解释shell1&shell2既执行shell1的命令也执行shell2的命令shell1&&shell2在shell1执行成功的情况下执行shell2,shell1执行失败就不会执行shell2,和逻辑与一样shell1|shell2“|”为管道符,它将shell1执行的结果作为shell2的输入,因此无论shell1执行结果如何,都会执行shell2shell1||shell2在shell1执行失败的情况下执行shell2,shell1执行成功则不会执行shell2,和逻辑或一样shell1;shell2在Linux系统下会将shell1和shell2都执行shell1`shell2`shell2的执行结果会在shell1的报错信息中显示命令注入攻击命令连接符如果后台代码并未对用户输入的参数的值进行过滤就直接与命令进行拼接并执行,就会造成命令注入攻击。常用的命令注入命令当您发现操作系统命令注入漏洞时,执行一些初始命令以获取有关您已入侵的系统的信息通常很有用。下面总结了一些在Linux和Windows平台上有用的命令:命令的目的 Linux 视窗当前用户名 whoami whoami操作系统 uname-a ver网络配置 ifconfig ipconfig/all网络连接 netstat-an netstat-an运行进程 ps-ef tasklistargoptionloadprocessstepreadfunctionreqfeatureexemodulepayloadrunprint常用的命令注入攻击测试参数cmdexeccommandexecutepingqueryjumpcoderegdofunc命令注入攻击原理命令注入攻击简介命令注入攻击防御命令注入攻击实践命令注入攻击防御迄今为止,防止操作系统命令注入漏洞的最有效方法是永远不要从应用层代码调用操作系统命令。几乎在每种情况下,都有使用更安全的平台API实现所需功能的替代方法。如果认为使用用户提供的输入调用操作系统命令不可避免,则必须执行强输入验证。一些有效验证的例子包括:·根据允许值的白名单进行验证。·验证输入是否为数字。·验证输入仅包含字母数字字符,没有其他语法或空格。永远不要试图通过转义shell元字符来清理输入。实际上,这太容易出错并且容易被熟练的攻击者绕过。命令注入攻击防御命令注入攻击代码层防御:·尽量少的调用执行系统命令的函数,通过黑名单的方式过滤敏感函数,如在PHP的配置文件php.ini中禁止一部分危险函数。disable_functions=system,passthru,shell_exec,exec,popen,白名单的方式对特殊输入的类型/长度进行限制。·对开发者要执行特定系统命令,必须把命令转换成一个字符串,然后传给执行者(也就是shell),然后shell再解析,这个传递过程就可能会出现信息传递不对等的问题,就很容易造成实际执行命令和预期执行的产生差别。·如果非要使用到该功能,尽量使用pcntl_exec这类可以限制一次只执行一条命令并且参数为数组传入的函数而不是system这种直接调用sh去执行命令的函数,同事在执行系统命令的时候检查用户输入参数(即可控部分),在使用pcntl_exec之前也需要小心地检查被执行的命令是否存在执行子命令的可能。命令注入攻击防御命令注入攻击企业角度防御:·预防:在业务得研发初期就需要安全的接入,在软件的设计,开发,测试,运行环境等等环节进行管控,提前将可能出现的问题扼杀在初期。·检测:在业务上线后,对生产环节进行周期性检测,做好各类资产管理,安全问题排查,做好风险评估工作,对系统提早发现并修复漏洞。·防御:建立完整的漏洞管理方案,漏洞应急响应流程,建立各种防御系统,在漏洞发生的时候有效的拦截。命令注入攻击原理命令注入攻击简介命令注入攻击防御命令注入攻击实践命令注入攻击实验环境存在一个命令注入漏洞,应用程序查看库存的功能执行一个包含用户提供的产品和商店ID的shell命令,并在其响应中返回该命令的原始输出。命令注入攻击使用BurpSuite进行抓包,返回包中可以看到库存的数量命令注入攻击使用管道符进行拼接,完成命令执行盲操作系统命令注入攻击操作系统命令注入的许多实例都是盲漏洞。这意味着应用程序不会在其HTTP响应中返回命令的输出。仍然可以利用盲点漏洞,但需要不同的技术。考虑一个允许用户提交有关该站点的反馈的网站。用户输入他们的电子邮件地址和反馈消息。然后,服务器端应用程序生成一封包含反馈的电子邮件给站点管理员。为此,它mail使用提交的详细信息调用程序。例如:mail-s"Thissiteisgreat"-aFrom:peter@
feedback@mail命令的输出(如果有)不会在应用程序的响应中返回,因此使用echo有效负载将无效。在这种情况下,可以使用各种其他技术来检测和利用漏洞。使用时间延迟检测盲操作系统命令执行根据应用程序响应所需的时间来确认命令已执行。该ping命令是执行此操作的有效方法,因为它允许指定要发送的ICMP数据包的数量,以及运行该命令所需的时间:&ping-c10&此命令将导致应用程序ping其环回网络适配器10秒。使用时间延迟检测盲操作系统命令执行实验环境存在一个命令注入漏洞,应用程序命令的输出不会在响应中返回使用时间延迟检测盲操作系统命令执行尝试替换Ping命令进行测试,可以发现BurpSuite一直处于Waiting状态使用时间延迟检测盲操作系统命令执行接着替换ping–c10来测试,通过响应包的时间判断,命令确实执行了通过重定向输出利用盲操作系统命令注入将注入命令的输出重定向到Web根目录中的文件中,然后您可以使用浏览器检索该文件。例如,如果应用程序从文件系统位置提供静态资源/var/www/static,那么您可以提交以下输入:&whoami
>/var/www/static/whoami.txt&该>字符将whoami命令的输出发送到指定的文件。然后,您可以使用浏览器获取hwhoami.txt文件以检索文件,并查看注入命令的输出。通过重定向输出利用盲操作系统命令注入实验环境存在一个命令注入漏洞,命令的输出不会在响应中返回。但是可以使用输出重定向来捕获命令的输出。利用命令whoami>/var/www/images/output.txt,重定向将命令的结果输出到一个文件中。通过重定向输出利用盲操作系统命令注入前台刷新页面的时候,可以看到使用filename参数引用图片名进行展示通过重定向输出利用盲操作系统命令注入替换图片为重定向的文件名,如果可以使用../进行目录穿越,那么重定向文件路径就可以不用爆破,如果不能够目录穿越,只能引用指定目录下的文件,那么就必须猜解,例如该环境的/var/www/images/目录。命令注入攻击利用姿势总结·存在回显示的话,可以直接读取各种配置文件,密码文件,数据库连接文件等等·遇到不回显的情况,最可靠的方法使用时间延迟推断,类似与盲注的方法。通过一些命令的延时作用来判断漏洞的存在,例如ping命令·不能在浏览器直接看到回显,可将命令重定向到当前目录下的文件中并查看。或者用TFTP上传工具到服务器,用telnet和netcat建立反向shell,用mail通过SMTP发送结果给自己的计算机·查看自己的权限,可以提升自己权限,访问敏感数据或控制服务器。命令注入利用场景分类·通用的代码层命令执行:一些商业应用需要执行命令,商业应用的一些核心代码可能封装在二进制文件中,在web应用中通过system函数来调用:
system("/bin/program--arg$arg");·系统的漏洞造成命令执行:bash破壳漏洞(CVE-201
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 招标文件购买信用先行
- 旅店服务合同的性质分析
- 专业团队的笔译
- 短期借款人协议合同
- 房屋买卖合同标准模板
- 广场物业服务合同文本
- 面砖供应链合作协议
- 烟草制品保证
- 外加工与采购合同的更新
- 购房贷款合同范本模板示例
- GB/T 18344-2016汽车维护、检测、诊断技术规范
- 神态描写课件
- 医惠内镜消毒质量追溯系统
- 如何提高基层干部群众工作能力课件
- 风险分级管控与隐患排查治理双重预防体系建设资料汇编
- 2022年读者出版集团有限公司招聘笔试试题及答案解析
- NB∕T 33009-2021 电动汽车充换电设施建设技术导则
- 大学《传播学概论》试卷及答案
- 工程设计费收费标准
- -坚定目标赢在执行 主题班会课件
- 英语语法基础知识教学讲义课件
评论
0/150
提交评论