菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)

1.命令行注入介绍

命令执行概念

       命令执行漏洞指在可以随意执行系统命令,属于高危漏洞之一,也属于代码执行范围内,好比说一句话木马

分类

代码过滤不严格或者无过滤

系统漏洞造成的命令执行,bash破壳漏洞,该漏洞可以构造环境变量的值来执行具有攻击力的脚本代码,会影响到bash交互的多种应用,例如http,ssh,dhcp

调用第三方组件,例如php(system(),shell_exec(),exec(),eval()),java(struts2),thinkphp(老牌的php框架)

&&和&和|和||

&&: command1&&command2

命令执行顺序:两个都执行,如果第一个命令不可执行第二个也不执行了。

&:command1&command2

命令执行顺序:两个都执行第一个命令不可执行第二个也可以执行

|:command1|command2

命令执行顺序:只执行command2的命令

||:command1||command2

命令执行顺序:只执行command1的命令,如果第一个执行不了,就执行第二个命令

一些常用命令

windows下

dir,

ipconfig,

arp-a,

calc,

regedit,

netstat-ano

arp-a:(arp欺骗攻击)在这个表里面假设

 

linux下

cat /etc/passwd,

id,

groups,

cat /etc/group,whoami,pwud,

name-a,

netstat-pantu,

netstat-nr

2.Command Injection(命令行注入)

实验环境

  1. Windows服务器:Windows xp,IP地址:192.168.65.128

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第1张图片

    2.测试机:Windows10物理机(开启代理,代理服务器为burpsuit)

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第2张图片

实验过程

安全级别:Low

  1. 设置安全级别;

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第3张图片

    2.查看源码;

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第4张图片

    3.源码分析;

stristr(string,search,before_search)

string

必需。规定被搜索的字符串。

search

必需。规定要搜索的字符串。

如果该参数是数字,则搜索匹配该数字对应的 ASCII 值的字符。

before_search

可选。默认值为 "false" 的布尔值。

如果设置为 "true",它将返回 search 参数第一次出现之前的字符串部分。

php_uname(mode)

这个函数会返回运行php的操作系统的相关描述,参数mode可取值”a” (此为默认,包含序列”s n r v m”里的所有模式),”s ”(返回操作系统名称),”n”(返回主机名),” r”(返回版本名称),”v”(返回版本信息), ”m”(返回机器类型)。

可以看到,服务器通过判断操作系统执行不同ping命令,但是对ip参数并未做任何的过滤,从而导致了严重的命令注入漏洞;

    4.实验操作;

命令行执行漏洞

127.0.0.1

 

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第5张图片

127.0.0.1&&ipconfig

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第6张图片

 

127.0.0.1&ipconfig

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第7张图片

 

127.0.01|ipconfig

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第8张图片

 

127.0.0.1||ipconfig

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第9张图片

 

安全级别:Medium

  1. 设置安全级别;

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第10张图片

 

    2.查看源码;

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第11张图片

    3.源码分析;

Medium级别相比Low级别的代码,服务器端对ip参数做了一定过滤,把”&&”“ ;”;”替换为空;

Medium级别的过滤方式本质上采用的是黑名单机制,相比白名单依旧存在安全问题;

    4.实验过程

4.1 尝试使用&&,被过滤;

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第12张图片

4.2 服务器过滤了&&,并未过滤&;

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第13张图片

4.3 服务器过滤了&&,并未过滤 | ;

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第14张图片

绕过方法

4.4 绕过方法1 : 采用&&&的方式;这种方法实际就是&模式;

 

4.5  绕过方法2 : 采用&;&的方式;(没有循环检测机制,所以这里相当于还是过滤了;于是还可以用&&);

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第15张图片

安全级别:High

    1.设置安全级别

 

    2.查看源码;

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第16张图片

    3.源码分析;

  '&'  => '',

  ';'  => '',

  '|  ' => '',   #“| ”后面有个空格;

  '-'  => '',

  '$'  => '',

  '('  => '',

  ')'  => '',

  '`'  => '',

  '||' => '

服务器对IP参数做了限制,过滤了如上字符,将如上字符都替换为空;

注:源码中是将“| ”替换为空,并不是“|”,所以可以采用“|”的方式绕过;

    4.实验过程;

4.1 尝试采用"&","|   "等方式实现命令行注入;

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第17张图片

绕过方式

4.2 绕过方法“|”;

 

安全级别:Impossible

    1.设置安全级别;

 

    2.查看源码;

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第18张图片

    3.源码分析;

在Impossible级别中,代码加入了Anti-CSRF token,同时对参数ip进行了严格的限制,只有诸如“数字.数字.数字.数字”的输入才会被接收执行,杜绝了命令注入漏洞;

    4.实验过程;

菜鸟渗透日记22——DVWA下使用Command Injection(命令行注入)_第19张图片

 

 

 

 

你可能感兴趣的:(kali渗透测试)