安全性测试入门:DVWA系列研究(二):Command Injection命令行注入攻击和防御
本篇继续对于安全性测试话题,结合DVWA进行研习。
Command Injection:命令注入攻击。
1. Command Injection命令注入
命令注入是通过在应用中执行宿主操作系统的命令,来达到破坏目的的一种攻击方式。如果我们的应用程序将不安全的用户输入传递给了系统命令解析器(shell),那么命令攻击就有可能发生。
通常来说,由应用程序传递操作系统命令会赋有和应用一样的权限,所以如果没有合理防御机制会给系统带来很大危害。命令注入攻击漏洞是PHP应用程序中常见的漏洞之一。
命令注入和代码注入不同,代码注入的目的在于将外部代码注入应用程序本身,并随程序执行;命令攻击的对象是服务器的宿主机。
DVWA的相应模块中,有如下功能:应用提供了一个用来ping对象主机的功能。正常情况下,输入IP地址,返回命令结果。
在DVWA最低防御级别下,尝试进行攻击。
由于在windows cmd和linux shell条件下,都可以通过&&来串行执行命令,我们附上dir命令执行后:
可以看到dir命令被执行,并且打印出了其结果。
如果我们用更复杂的命令附在以上命令之后,基本都可以执行,包括创建删除文件等等,可以对宿主系统造成非常大的危害。
2. 防御机制
分别对比DVWA4个安全级别的后台核心代码:
Low:
代码使用shell_exec将用户输入执行ping命令,基本没有任何防御。
Medium:
使用黑名单机制,替换掉如“&&”和“;”这样的命令符号。但是这样简单的黑名单是很容易绕过的,比如“|”管道符就没有屏蔽。
High:
完善了黑名单机制,筛除了更多字符,但仍有可能绕开。
Impossible:
使用白名单机制替换掉黑名单,将用户输入的字符串重组为数组,依次遍历数组内元素,删除其中所有的非数字和“.”。这样就达到了防御命令注入的目的。
安全性测试入门:DVWA系列研究(二):Command Injection命令行注入攻击和防御的更多相关文章
- DVWA笔记之二:Command Injection
命令注入 1.Low级别 <?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input $target = $_REQUE ...
- 安全性测试入门:DVWA系列研究(一):Brute Force暴力破解攻击和防御
写在篇头: 随着国内的互联网产业日臻成熟,软件质量的要求越来越高,对测试团队和测试工程师提出了种种新的挑战. 传统的行业现象是90%的测试工程师被堆积在基本的功能.系统.黑盒测试,但是随着软件测试整体 ...
- 前端安全系列(二):如何防止CSRF攻击?
前端安全系列(二):如何防止CSRF攻击? 背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点.在移动互联网时代,前端人员除了传统的 XS ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(25)|实战2:命令行工具minigrep(2)]
[易学易懂系列|rustlang语言|零基础|快速入门|(25)|实战2:命令行工具minigrep(2)] 项目实战 实战2:命令行工具minigrep 我们继续开发我们的minigrep. 我们现 ...
- ES6+ 现在就用系列(二):let 命令
系列目录 ES6+ 现在就用系列(一):为什么使用ES6+ ES6+ 现在就用系列(二):let 命令 ES6+ 现在就用系列(三):const 命令 ES6+ 现在就用系列(四):箭头函数 => ...
- DVWA 黑客攻防演练(三)命令行注入(Command Injection)
文章会讨论 DVWA 中低.中.高.不可能级别的命令行注入 这里的需求是在服务器上可以 ping 一下其他的服务器 低级 Hacker 试下输入 192.168.31.130; cat /etc/ap ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(24)|实战2:命令行工具minigrep(1)]
[易学易懂系列|rustlang语言|零基础|快速入门|(24)|实战2:命令行工具minigrep(1)] 项目实战 实战2:命令行工具minigrep 有了昨天的基础,我们今天来开始另一个稍微有点 ...
- DVWA全级别之SQL Injection(SQL注入)
DVWA全级别之SQL Injection(注入) DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web ...
- DVWA-全等级命令行注入
DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法 ...
随机推荐
- python爬虫入门(五)Selenium模拟用户操作
爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider) 之间恢宏壮阔的斗争... 小莫想要某站上所有的电影,写了标准的爬虫(基于HttpClient库), ...
- fastjson 的使用总结
前言 最近在开发过程中使用了大量的json作为前后端数据交换的方式,由于之前没有对json做过系统的学习,所有在使用过程中查阅了大量的文档与资料,这里主要记录了我在开发后对json以及fastjson ...
- Selenium2Lib库之输入常用关键字实战
4.1 Input Text关键字 按F5 查看Input Text关键字的说明,如下图: Input Text 关键字用于向文本框输入内容,需要传2个参数(文本框的元素定位和输入的值). 项目例子: ...
- Python学习 Part5:输入输出
Python学习 Part5:输入输出 1. 格式化输出 三种输出值的方法: 表达式语句 print()函数 使用文件对象的write()方法 两种方式格式化输出: 由自己处理整个字符串,通过使用字符 ...
- .NET之AutoMapper对象映射工具运用
AutoMapper对象映射工具:主要是将某一个实体转成另一个实体. 1.引用NuGet包;搜索:AutoMapper 2.创建实体类 using System; using System.Colle ...
- [CVPR2017] Deep Self-Taught Learning for Weakly Supervised Object Localization 论文笔记
http://openaccess.thecvf.com/content_cvpr_2017/papers/Jie_Deep_Self-Taught_Learning_CVPR_2017_paper. ...
- C Primer Plus 第8章 字符输入/输出和验证输入 编程练习
1. #include <stdio.h> int main(){ char ch; int ct = 0; while ((ch=getchar()) != EOF) ct++; pri ...
- Spring中资源的加载ResourceLoader
http://blog.csdn.net/u011955252/article/details/52912571
- echart css样式弄了几个月了,样式一直都没有好好解决,好激动
legend 图例,每个图表最多仅有一个图例.try this » 名称 默认值 描述 {string} orient 'horizontal' 布局方式,默认为水平布局,可选为:'horizonta ...
- C#通熟易懂观察者模式
观察者模式(有时又被称为模型-视图(View)模式.源-收听者(Listener)模式或从属者模式)是软件设计模式的一种.将观察者(watcher)和被观察者(subject)完美分离. 这里讲一个场 ...