前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小白都能看懂的命令执行漏洞

小白都能看懂的命令执行漏洞

作者头像
Power7089
发布2020-07-27 16:18:55
4590
发布2020-07-27 16:18:55
举报

01

6

命令执行漏洞原理

应用有时要调用一些执行系统命令的函数,如PHP中的 system、exec、shell_exec、Passthru、popen、proc_popen等,当用户能控制这些函数中的参数时,就可以建恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。

02

6

命令执行漏洞利用条件

  • 应用调用执行系统命令的函数
  • 将用户输入作为系统命令的参数拼接到命令执行中
  • 没有对用户输入进行过滤或过滤不严谨

03

6

漏洞分类

  • 代码层过滤不严谨

在商业应用的一些核心代码封装在二进制文件中,在web应用中通过system函数来调用:

System(“/bin/program --arg $arg”);

  • 系统自身漏洞产生命令注入 如:bash破壳漏洞(CVE-2014-6271)
  • 在利用第三方组件存在代码执行漏洞

如:WordPress中用来出来图片的lmageMagick组件

Java中的命令执行漏洞(Struts2/ElasticsearchGroovy等)

ThinkPHP命令执行

04

6

漏洞的危害

  • 继承web服务器程序的权限去执行系统命令或读写文件
  • 反弹shell
  • 控制整个网站和服务器权限
  • 进一步内网渗透

05

6

本期作者:xxxxx

  • 用的靶场是 pikachu
  • 下载地址: https://github.com/zhuifengshaonianhanlu/pikachu

1.我们拿到靶场

2. 在输入框内我们输入正常的

这是输出正常的提示

3. 我们将恶意的系统里面带进去执行看下,这里以ipconfig为例

我们把系统命令带进去之后,然后他就执行了我们的恶意命令。它先是把前面的127.0.0.1执行完成之后,再来执行我们的ipconfig的。这是后端没有做严格的过滤,用户能用拼接的符号让系统执行其他的命令。

4. 让我们简单的来看下源码

if(isset($_POST['submit']) && $_POST['ipaddress']!=null){ $ip=$_POST['ipaddress'];// $check=explode('.', $ip);可以先拆分,然后校验数字以范围,第一位和第四位1-255,中间两位0-255 if(stristr(php_uname('s'), 'windows')){// var_dump(php_uname('s')); $result.=shell_exec('ping '.$ip);//直接将变量拼接进来,没做处理 }else { $result.=shell_exec('ping -c 4 '.$ip); }}

在这里的代码我们能看到,没用做任何的过滤

首选通过post去请求,获取相对应的ip地址,然后它会去判断操作系统的类型,如果是Windows的,他就会直接去ping一下IP地址,直接就把

shell_exec('ping '.$ip);

进行拼接起来执行。

06

6

防范命令执行漏洞

  • 尽量少用命令执行的函数或直接禁用
  • 参数值尽量使用单引号包括
  • 在使用动态函数之前,确保使用的函数是指定的函数之一或字符进行转义
  • 对php语言来说,不能完全控制危险函数。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员阿甘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档