DVWA通关攻略之命令注入

这篇具有很好参考价值的文章主要介绍了DVWA通关攻略之命令注入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


1.Command Injection 命令注入

命令注入(Command Injection)漏洞也称为远程命令/代码执行漏洞(RCE,Remote Command/Code Exec),指应用程序的某些功能需要调用可以执行系统命令的函数,如果这些函数或者函数的参数能被用户控制,就可能通过命令连接符将恶意命令拼接到正常的函数中,从而随意执行系统命令,属于高危漏洞之一。命令注入是滥用应用web应用程序的行为从而实现在操作系统上执行命令,在执行命令时将获得与操作系统上应用程序相同的权限。例如,在以user1的用户身份运行的Web服务器上执行命令注入,将在对应的操作系统用户user1权限下执行命令,从而获得用户user1所拥有的系统权限。
在Web应用中,有时候会用到一些命令执行的函数,如php中system、exec、shell_exec等,当对用户输入的命令没有进行限制或者过滤不严导致用户可以执行任意命令时,就会造成命令执行漏洞。比如PHP中的eval()函数,可以将函数中的参数当做PHP代码来执行,如果这些函数的参数控制不严格,可能会被利用,造成任意代码执行。

例如,使用ping命令测试IP,正常输入一个IP或者域名会返回一个正常的返回结果。当输入恶意构造的语句www.baidu.com && netstat -an,会把后面的语句也给执行了。

2.漏洞场景

通常使用用户输入的数据来填充系统命令的应用程序可能存在命令注入漏洞,大多数存在于可被攻击者修改的缺少输入验证的地方(forms, cookies, HTTP headers etc.)。不用操作系统使用的注入语法、命令不一样。命令注入漏洞可以通过以下两种方式进行检测:盲注类型的命令注入(无回显)、详细的命令注入(有回显)。
Blind(盲注类型,无回显)类型的命令注入,在测试payload时应用程序并没有直接输出结果,必须设法调查应用程序的行为以确定你的payload是否成功执行。
盲注类型的命令注入在发生命令注入攻击时,并没有可见的输出显示,不会立即引起注意。对于这种类型的命令注入,我们需要使用会导致一些时间延迟的payload;例如,ping和sleep命令。以ping命令为例,根据你指定的ping次数,应用程序将挂起x秒。另一种检测盲注类型命令注入的方法是强制输出一些结果,这可以通过使用诸如>之类的重定向运算符来完成。例如,可以告诉Web应用程序执行诸如 whoami 之类的命令并将其重定向到一个新建文件中;然后我们可以使用诸如cat之类的命令来读取这个新创建的文件的内容。测试命令注入通常很复杂,可能需要经过多次尝试,尤其是Linux和Windows两种操作系统所使用的命令语法还存在不同之处。
Verbose(详细类型,有回显)类型的命令注入,详细类型的命令注入是指应用程序会向我们提供有关正在发生或正在执行的payload的反馈或输出。检测此种类型的命令注入通常可以用很简单的方法,例如,包含ping或whoami等命令的payload的执行结果会直接显示在 Web应用程序的页面上。在测试payload时能够从应用程序获得直接反馈。
挖掘命令注入漏洞主要是寻找绕过应用程序输入过滤规则方法,设法使得应用程序执行攻击者想要执行的命令。
在命令注入中通常需要注入多条命令,多条命令一次执行来扩大危害,下面是一些能够构成多条命令执行的字符串:Windows下,&&、||、%0a,Linux下,&&、||、 ( ) 、 ‘ ‘ 、回车符 C R ( ()、``、回车符CR(%0d)和换行符LF(%0a)。在Linux中双引号包裹的字符串” ()‘‘、回车符CR(()”或”``”中的内容被当做命令执行,但是单引号包括的字符串是纯字符串。
命令行注入常用的参数有&&、&、|、||、;、%0a(换行符的URL编码)、转义字符、注释符。
1.;,各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。
2.&&,若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。
3.||,是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。
4.|,是管道符号。管道符号改变标准输入的源或者是标准输出的目的地。
5.&,是后台任务符号。 后台任务符号使shell在后台执行该任务,这样用户就可以立即得到一个提示符并继续其他工作。
6.%0a,是url编码,所以一定要输在url中,否则%0a会被再次编码。
7.转义字符,系统中的cmd.ext,bash程序执行命令能够解析很多特殊字符,它们的存在让BAT批处理和bash脚本处理工作更加便捷,但是如果想去掉特殊字符的特殊意义,就需要转义,所以转义字符即为取消特殊字符的特殊意义。windows的转义字符为^,Linux的转义字符为\。
8.注释符号,Windows注释符号为::,在BAT批处理中用的比较多。Linux的注释符号为#,在bash脚本中用的比较多。

3.实验演示

3.1.手工挖掘

在DVWA页面左侧选择Brute Force。
DVWA Security设置为low,即开发者没有采取任何保护的方法防止命令注入。
DVWA通关攻略之命令注入

输入框实现ping命令,先随便输入127.0.0.1试试
DVWA通关攻略之命令注入

成功执行。可以使用;。一次执行多条命令。
输入127.0.0.1;whoami

DVWA通关攻略之命令注入

DVWA Security设置为Medium,这个级别开发者意识到一些命令注入的问题,设置了各种各样的匹配补丁过滤用户输入,但这是不够的,大量其他系统语法能被用于绕过过滤。
查看源码
DVWA通关攻略之命令注入

发现黑名单过滤了&&和;,不使用这两个符号即可。使用|
输入127.0.0.1|whoami
DVWA通关攻略之命令注入

DVWA Security设置为High,这个级别开发者重新设计、使用了更多的输入过滤规则,但这依然是不够的,开发者在过滤器上犯了轻微的拼写错误,而且相信某些PHP命令会纠正这个错误,依然可以绕过。
查看源码
DVWA通关攻略之命令注入

发现使用黑名单过滤了&、;、| 、-、$、(、)、`、||。仔细观察发现|后面多了一个空格。也是就会过滤|+空格。不会过滤|。
输入127.0.0.1|whoami
DVWA通关攻略之命令注入

DVWA Security设置为Impossible Level。以上级别使用的的是黑名单过滤,允许任何输入删除不需要的输入,这个级别设置了白名单,只允许某些输入,只允许非常严格的输入,如果不匹配,也不产生确定的结果,它将不允许执行。

3.2.使用burp爆破挖掘命令注入

使用命令注入防御时,如果使用黑名单技术,黑名单中列举的过滤字符是有限的,可以使用爆破技术来枚举不在黑名单中的可绕过过滤的字符。
启动burp,抓包成功
DVWA通关攻略之命令注入

Action发送到Intruder。
在positions中点击clear,然后选中要爆破的内容,点击Add。
DVWA通关攻略之命令注入

在payload中点击load 选择字典All_attack.txt。
DVWA通关攻略之命令注入

然后点击start attack,执行爆破。
DVWA通关攻略之命令注入
在爆破结果中点击Length,在Status 200的结果中查看返回内容,可以发现很多能绕过过滤的字符串。

4.命令注入防御

可以通过多种方式防止命令注入,从尽可能少地使用编程语言中具有潜在危险的易受攻击的函数或库,到不依赖用户输入并过滤用户输入。下面的示例是在 PHP 编程语言环境下,但是,相同的原则也可以扩展到其他编程语言环境。
在 PHP 中,有许多函数可以与操作系统发生交互,并通过 shell 执行命令,包括:
Exec–执行一个外部程序
Passthru–执行外部程序并且显示原始输出
System–执行外部程序并且显示输出
对输入数据进行过滤,清理web应用程序所使用的用户输入是防止命令注入的好方法。这是指定用户可以提交的数据格式或类型的过程。例如,可以指定仅接受数字数据或删除任何特殊字符(如 >、& 和 /)的输入字段。
使用白名单技术。
…等等。文章来源地址https://www.toymoban.com/news/detail-502482.html

到了这里,关于DVWA通关攻略之命令注入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DVWA------SQL Injection (Blind)(SQL盲注)

    一、SQL 盲注 1.简介 2.分类 3.盲注测试思路 二、SQL Injection (Blind) 1.LOW 1.1代码审计 1.2漏洞利用 2.medium 3.high 4.Impossible         SQL Injection(Blind),即SQL盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法

    2024年02月16日
    浏览(42)
  • dvwa靶场通关(七)

    我们输入 1\\\',出现报错信息,根据报错信息可知,查询语句是单引号闭合的字符型  接着判断字段数 1\\\' order by 3#  报错 1\\\' order by 2# 正常  所以字段数就是2 利用联合查询爆出数据库名和版本  输入 -1\\\' union select database(),version()#  爆出表名 -1\\\'union select 1,group_concat(table_name) from i

    2024年02月10日
    浏览(38)
  • DVWA靶场通关实战

    截至2022.11.24,DVWA共有十四个模块,分别是: 按我的思路就是,Low、Media、High是拿来攻击的,Impossible是来教你防御的 然后就是缩减了一下目录,本来攻击方式、源码审计、漏洞原理都加了标题,但是那样目录就太长太丑了,想想还是删了算了 直接开冲! 暴力破解,又叫撞库

    2024年02月14日
    浏览(38)
  • dvwa xss通关

    选择难度: 直接用下面JS代码尝试: 通关成功: 直接下面代码尝试后失败 发现这段代码直接被输出: 尝试修改script标签的字母大小写,做大小写绕过: 通关成功:

    2024年02月10日
    浏览(37)
  • dvwa文件上传通关及代码分析

    查看源码:

    2024年02月10日
    浏览(35)
  • DVWA靶场之CSRF通关详解

    CSRF的形成原因主要是由于Web应用程序没有充分验证请求来源的问题。正常的请求必须携带正确的Cookie信息,而攻击者可以构造一个恶意网站,在其中包含一个发送CSRF请求的链接或表单,当用户访问这个网站时,浏览器会自动发送CSRF请求到被攻击的网站,从而实现攻击。 随机

    2024年02月10日
    浏览(34)
  • 网络安全之DVWA通关教程

    DVWA全称为Damn Vulnerable Web Application,意为存在糟糕漏洞的web应用。它是一个基于PHP/MySQL开发的存在糟糕漏洞的web应用,旨在为专业的安全人员提供一个合法的环境,来测试他们的工具和技能。帮助web开发人员理解web应用保护的过程,还可以在课堂中为师生的安全性教学提供便

    2024年02月13日
    浏览(44)
  • Langchain框架 prompt injection注入

    Prompt Injection 是一种攻击技术,黑客或恶意攻击者操纵 AI 模型的输入值,以诱导模型返回非预期的结果 LangChain 是一个基于大语言模型进行应用开发的框架。 所谓大语言模型(Large Language Models, LLMs),是指基于海量语料训练、参数动辄数十亿上百亿的语言模型。除了大家熟知

    2024年02月01日
    浏览(42)
  • 什么是依赖注入(Dependency Injection)?

    依赖注入(Dependency Injection,简称DI)是一种设计模式,用于实现类之间的解耦和依赖关系的管理。它通过将依赖关系的创建和维护责任转移到外部容器中,使得类不需要自己实例化依赖对象,而是由外部容器动态地注入依赖。 传统的对象创建方式往往由类自身负责创建和管

    2024年02月15日
    浏览(43)
  • Angular 17+ 高级教程 – Dependency Injection 依赖注入

    本来是想先介绍 Angular Component 的,但 Component 里面会涉及到一些 Dependency Injection (简称 DI) 的概念,所以还是先介绍 DI 吧。 温馨提醒:如果你对 JS class、prototype 不太熟悉的话,建议你先看这篇 JavaScript – 理解 Object, Class, This, Prototype, Function, Mixins   首先我们有一个 class Ser

    2024年03月09日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包