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

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

源码: 

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

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

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;

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

medium:

代码部分和low大致相

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

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

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

High:

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

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

impossible

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

除了增加了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进行验证,防止黑客利用保存用户验证搜集了一些 CTF或渗透测试中常用于进行命令注入攻击拼接的命令:

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

whoami:当前的用户;

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

ls -alh /home/:查看用户

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

usname -a:查看系统信息

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

版权声明:玥玥 发表于 2021-08-21 20:09:28。
转载请注明:安全渗透学习-dvwa(命令注入) | 女黑客导航