安全渗透学习-dvwa(命令注入)

命令注入(Command Injection),是指在某些需要输入数据的位置,还构造了恶意的代码破坏了原先的语句结构。而系统缺少有效的过滤,最终达到破坏数据、信息泄露甚至掌控电脑的目的。

low:

源码: 

对指令没有任何的过滤处理

target参数为将要ping的ip地址,比如在输入框输入127.0.0.1后,对于windows系统,会发出ping 127.0.0.1操作

这里可以引入命令行的几种操作方式:

A && B: 先执行A,如果成功,执行B;

A || B :先执行A,如果失败,执行B;

A | B:管道,先执行A后,将A的结果作为B的输入,打印的是B的结果;

A & B:先执行A,然后不管成功与否,执行B;

medium:

代码部分和low大致相

可以看到代码中设置了set blacklist和remove any of charatars部分

相比Low级别的代码,服务器端对ip参数做了一定过滤,即把”&&” ,”;”删除,本质上采用的是黑名单机制,但依旧存在安全风险,部分参数例如 |  ,&  ,等依旧可以使用。

High:

High等级代码设置了更多过滤参数,但依旧存在一个问题就符号后增减空格仍然可以进行命令注入操作。

impossible

除了增加了user_token和session_token字段

stripslashes(string)

stripslashes函数会删除字符串string中的反斜杠,返回已剥离反斜杠的字符串。

explode(separator,string,limit)

explode函数把字符串打散为数组,返回字符串的数组。参数separator规定在哪里分割字符串,参数string是要分割的字符串,可选参数limit规定所返回的数组元素的数目

is_numberic()函数

它的返回值为:如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE。

传入ip地址(即用户的输入内容)后,服务器会利用explode函数将该地址依据.划分为4个部分,比如127.0.0.1中的3个.将该ip划分成了4个数字,检验每个部分是否为数字。所以如果出现非法字符,is_numberic()就返回了false。

加入Anti-CSRFtoken,服务器端对token进行验证,防止黑客利用保存用户验证信息的cookie来伪造请求。

搜集了一些 CTF或渗透测试中常用于进行命令注入攻击拼接的命令:

sleep 5:观察是否存在时间差来检测是否存在漏洞;

whoami:当前的用户;

cat /etc/shadow:影子文件,存储linux中用户的密码信息

ls -alh /home/:查看用户

ls -alh /home/用户名/ : 查看具体用户的目录

usname -a:查看系统信息

参考 <https://zhuanlan.zhihu.com/p/106785478>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值