前言:命令执行和代码执行也是web安全中常见的一种漏洞,这次就先来学习一下命令执行漏洞。

Command Execution

一、简介

由于开发人员在编写源代码时,没有对源代码中可执行的特殊函数入口做过滤,导致客户端可以提交一些cmd命令,并交由服务器程序执行。导致攻击者可以通过浏览器或者其他客户端软件提交一些cmd命令(或者bash命令)至服务器程序,服务器程序通过system、eval、exec等函数直接或者间接地调用cmd.exe执行攻击者提交的命令。

二、常用的连接符

A;B    先执行A,再执行B
A&B    简单拼接,A B之间无制约关系
A|B    显示B的执行结果
A&&B   A执行成功,然后才会执行B
A||B   A执行失败,然后才会执行B

三、常用的函数

exec() — 执行一个外部程序
#exec 不会主动返回执行结果,且只是返回结果的最后一行;
passthru() — 执行外部程序并且显示原始输出
#passthru()用来执行外部命令,但直接将结果输出到浏览器(未经任何处理的 原始输出),没有返回值;
system() — 执行外部程序,并且显示输出
#system()成功则返回命令输出的最后一行,失败则返回 FALSE;
shell_exec() — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
#当进程执行过程中发生错误,或者进程不产生输出的情况下,都会返回 NULL
eval():将输入的字符串参数当做PHP程序代码来执行

具体可以参考php中文网

四、windows net命令

Net ViewI
作用:显示域列表、计算机列表或指定计算机的共享资源列表。
Net User
作用:添加或更改用户帐号或显示用户帐号信息。
Net Use
作用:连接计算机或断开计算机与共享资源的连接,或显示计算机的连接信息。
Net Time
作用:使计算机的时钟与另一台计算机或域的时间同步。
Net Config
作用:显示当前运行的可配置服务,或显示并更改某项服务的设置。

具体可以参考大师傅的博客CMD-NET命令详解这个漏洞是真的恐怖,可以任意修改你的计算机里的内容。

在了解了基础的知识后,下面就通过DVWA来练习一下Command Execution.

DVWA——Command Injection

在此之前先来解决乱码的问题

DVWA\dvwa\includes目录下找到dvwaPage.inc.php文件中所有的”charset=utf-8”,修改”charset=gb2312”,即可解决乱码问题。


low

观察源码

stristr() 函数搜索字符串在另一字符串中的第一次出现,不区分大小写
php_uname() 返回了运行 PHP 的操作系统的描述。
参数:
'a':此为默认。
's':操作系统名称。
'n':主机名。
'r':版本名称。
'v':版本信息。
'm':机器类型。

通过源码可以看出,源码只是针对不同的操作系统执行不同的ping命令而已,没有对ip参数并未做任何的过滤,因此存在命令注入漏洞。

输入

127.0.0.1&&echo "Hello"


回显结果执行了我输入的echo "Hello"命令

接下来输入

127.0.0.1&&net user


命令执行成功,但这个漏洞是真的恐怖,如果攻击者利用这个漏洞修改电脑用户、更改系统配置。。。,可见危害之大。

medium

观察源码

发现这段代码

  $target = str_replace( array_keys( $substitutions ), $substitutions, $target ); #array_keys() 函数返回包含数组中所有键名的一个新数组。

过滤了&&,但是没有过滤掉&|,所以依旧有漏洞存在

输入

127.0.0.1 | net user


也可以输入

127.0.0.1& net user

一样会执行成功

除此之外,也可以采用拼接的方法进行绕过

127.0.0.1&;&net user


High

观察源码

这次过滤的更狠,几乎过滤了所有的常用连接符,拼接的方法也是不起作用的,但是观察代码发现

|+空格多出一个空格,所以不会过滤|那就利用这个漏洞进行命令执行

输入

127.0.0.1 |net user


impossible

观察源码

stripslashes(string)
#stripslashes函数会删除字符串string中的反斜杠,返回已剥离反斜杠的字符串。
explode(separator,string,limit)
#explode()函数把字符串打散为数组,返回字符串的数组。参数separator规定在哪里分割字符串,参数string是要分割的字符串,可选参数limit规定所返回的数组元素的数目
is_numeric(string)
#is_numeric()函数检测string是否为数字或数字字符串,如果是返回TRUE,否则返回FALSE。

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

总结:通过这次学校了解了命令执行漏洞的一些知识,确实很有意思,接下来学习代码执行漏洞。

参考博客:
Command Injection
Web安全 - 命令执行漏洞
命令执行漏洞简介

DVWA——命令执行漏洞学习相关推荐

  1. FastJson远程命令执行漏洞

    FastJson远程命令执行漏洞学习笔记 Fastjson简介 fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.fastjson.ja ...

  2. DVWA系列之10 命令执行漏洞的挖掘与防御

    通用的命令执行漏洞防御方法通常是使用两个函数:EscapeShellCmd和EscapeShellArg,下面分别来分析这两个函数. EscapeShellCmd()函数可以把一个字符串中所有可能瞒过 ...

  3. nc65命令执行漏洞上传webshell学习笔记

    nc65命令执行漏洞上传webshell学习笔记 免责声明: 此文为本人学习笔记,不承担任何法律责任. 访问者在从事与本站相关的所有⾏为(包括但不限于访问浏览.利⽤.转载.宣传介绍)时,必须以善意且谨 ...

  4. DVWA靶场01-系统命令执行漏洞利用及防护(Low/Medium/Hight)

    目录 01-Low 01.1 任意文件读取 01.2 小马实现Getshell 01.2.1 获取网站路径 01.2.2 写入一句话木马 01.2.3 连接一句话木马 01.3 设置后门 02-Med ...

  5. 【Web安全】DVWA之Command injection(命令执行漏洞)探索

    文章目录 1 命令行注入 2 low 3 Medium 4 Middle 5 Impossible 1 命令行注入 命令执行漏洞的原理:在操作系统中, & .&& .| . | ...

  6. 闲人的命令执行漏洞基础学习1

    命令执行漏洞是指攻击者可以随意执行系统命令. 在window和Linux系统下: && & || |符号可以作为命令连接符使用. 如ping url && ne ...

  7. 【漏洞学习——命令执行】中国民生银行某站命令执行漏洞Getshell

    漏洞细节 http://58.68.130.68/wis18/customerjsp/msyh/login/login.jsp 命令执行漏洞 shell http://58.68.130.68/wis ...

  8. 【注意】关于Redis存在远程命令执行漏洞的安全公告

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 来源:CNVD漏洞平台 安全公告编号:CNTA-2019-0024 2019年7月10日,国 ...

  9. 命令执行——命令执行漏洞及(四)

    普及DVWA中的命令执行漏洞并通过源码分析深入了解命令执行漏洞 DVWA介绍 点我查看搭建方法 DVWA(Damn Vulnerable Web Application) 平台: >用来进行安全 ...

最新文章

  1. Python自动发送邮件-smtplib和email库
  2. freeswitch cdr mysql_部署FreeSWITCH + FusionPBX
  3. 外卖红包深度研究报告:千亿市场下的公号私域
  4. linux运行完脚本 命令失效,linux – Systemd退出bash脚本,执行导致失败的命令,而不是继续...
  5. python 计算订单_从问题到程序:用Python学编程和计算
  6. java 导出EXcel数据
  7. 仿二手商城模板html,仿转转商城APP页面模板
  8. 计算机网络七版pdf
  9. 《证券市场的风险与心理》
  10. freeotp使用教程_PPT模板怎么用
  11. wangEditor上传不了图片
  12. anywhere 无法正常使用的问题--IP地址解析
  13. Excel必知必会——count,counta,countif,countifs
  14. Win10 Microsoft Edge浏览器播放视频出现绿屏情况解决之一
  15. Lsyncd:负载均衡之后,服务器的文件双向同步
  16. 微信小程序 实现报表(表格)双指缩放功能
  17. DFT的简单介绍(上)
  18. hdu1814 Peaceful Commission 2-sat
  19. 笔记本电脑计算机出现问题怎么办,笔记本电脑经常死机怎么办 笔记本电脑死机原因分析...
  20. 学习是为了完善人生,不是为了享受人生!

热门文章

  1. 混合云存储跨云灾备方案之跨云复制
  2. 计算机中的域到底是什么意思?有什么用出?我们为什么要加入域?域和工作组有什么分别呢?
  3. minGW下载与编译器安装
  4. ubuntu下安装qq2012
  5. 简单说说NVMe 2.0协议
  6. 龙格库塔法的基本原理
  7. 【机器学习】机器学习算法模式:区别监督学习、无监督学习、半监督学习、强化学习
  8. mblock控制SG90舵机模块
  9. tomcat并发量怎么看
  10. linux软件包管理(RPM)简单介绍