安全渗透学习-dvwa(命令注入)
Posted 重启艺术大师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全渗透学习-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:查看系统信息
以上是关于安全渗透学习-dvwa(命令注入)的主要内容,如果未能解决你的问题,请参考以下文章