1. 命令执行漏洞简介

命令执行

应用有时需要调用一些执行系统命令的函数,

如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,

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

利用条件

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

漏洞分类

  1. 代码层过滤不严

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

    system("/bin/program --arg $arg");

  2. 系统的漏洞造成命令注入

    bash破壳漏洞(CVE-2014-6271)

  3. 调用的第三方组件存在代码执行漏洞

    如WordPress中用来处理图片的ImageMagick组件

    JAVA中的命令执行漏洞(struts2/ElasticsearchGroovy等)

    ThinkPHP命令执行

漏洞危害

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

漏洞可能代码(以system为例)

1. system("$arg");                                      //直接输入即可

2. system("/bin/prog $arg");                     //直接输入;ls

3. system("/bin/prog -p $arg");                //和2一样

4. system("/bin/prog --p=\"$arg\"");      //可以输入";ls;"

5. system("/bin/prog --p=‘$arg‘");          //可以输入‘;ls;‘

在Linux上,上面的 ; 也可以用 | 、|| 代替

;    前面的执行完执行后面的

|    是管道符,显示后面的执行结果

||   当前面的执行出错时执行后面的

在Windows上,不能用 ; 可以用 &、&&、|、|| 代替

A&B         前面的语句为假则直接执行后面的

A&&B     A执行成功,然后才会执行B

A|B         A的输出,作为B的输入

A||B         A执行失败,然后才会执行B

漏洞利用

示例一

<?php

$arg = $_GET[‘cmd‘];

if ($arg)

{

system("$arg");

}

?>

示例二

<?php

$arg = $_GET[‘cmd‘];

if ($arg)

{

system("ping -n 3 $arg");

}

?>

其他

  • 代码执行:
    在cmd.php中的代码如下:

<?php

eval($_REQUEST[‘code‘]);

?>

提交http:/127.0.0.1/1.php?code=phpinfo() 后就会执行phpinfo()

  • 动态函数调用
    在cmd.php中的代码如下:

<?php

$fun = $_GET[‘fun‘];

$par = $_GET[‘par‘];

$fun($par);

?>

提交http://127.0.0.1/1.php?fun=system&par=ipconfig,

最终执行的是system("ipconfig")

漏洞修复

  1. 尽量少用执行命令的函数或者直接禁用
  2. 参数值尽量使用引号包括
  3. 在使用动态函数之前,确保使用的函数是指定的函数之一
  4. 在进入执行命令的函数/方法之前,对参数进行过滤,对敏感字符进行转义

<?php

$arg = $_GET[‘cmd‘];

// $arg = addslashes($arg);

$arg = escapeshellcmd($arg);  //拼接前就处理

if ($arg) {

system("ls -al ‘$arg‘");

}

?>

原文地址:https://www.cnblogs.com/bmjoker/p/9084864.html

时间: 2024-10-23 05:14:28

1. 命令执行漏洞简介的相关文章

命令执行漏洞

0x01:命令执行漏洞简介 用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,可能会允许攻击者通过改变 $PATH 或程序执行环境的其他方面来执行一个恶意构造的代码 0x02:命令执行 VS 代码执行 命令执行漏洞: 直接调用操作系统命令 代码执行漏洞: 靠执行脚本代码调用操作系统命令 命令执行原理: 在操作系统中,"&.|.||"都可以作为命令连接符使用,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导

NETGEAR 系列路由器命令执行漏洞简析

NETGEAR 系列路由器命令执行漏洞简析 2016年12月7日,国外网站exploit-db上爆出一个关于NETGEAR R7000路由器的命令注入漏洞.一时间,各路人马开始忙碌起来.厂商忙于声明和修复,有些人忙于利用,而我们则在复现的过程中寻找漏洞的本质. 一.漏洞简介 1.漏洞简介 2016年12月7日,NETGEAR R7000路由器在exploit-db上被爆出存在远程命令执行漏洞,随着安全研究人员的不断深入,R8000和R6400这两款路由器也被证实有同样的问题. 2016年12月1

Metasploit溢出java RMI SERVER命令执行漏洞

利用java RMI SERVER命令执行漏洞,获得目标主机root权限. Java RMI Server的RMI注册表和RMI激活服务的默认配置存在安全漏洞,可被利用导致代码执行. 一.利用nmap工具扫描目标主机 1.1使用nmap命令对目标主机进行扫描.单击桌面空白处,右键菜单选择"在终端中打开". 1.2在终端中输入命令"nmap –sV  192.168.1.3",对目标主机进行端口扫描,发现开放1099端口. 1.3在终端中输入命令"msfco

ASP代码审计 -4.命令执行漏洞总结

命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip") response.write server.createobject("wscript.shell").exec("cmd.exe /c ping "&ip&"").stdout.readall %> 利用方式: http:

DVWA系列之9 high级别命令执行漏洞

将DVWA Security切换到high级别,在Command Execution中查看网页源码. 这里首先也是用stripslashes函数对获取到的IP地址进行了处理,主要是为了去掉转义后添加的斜杠,原因之前已经解释过,由于在high级别下会自动启用PHP的magic_quotes_gpc魔术引号,对所有的传值数据自动用addslashes()函数转义,所以需要用stripslashes()函数去除. 接下来使用了explode函数,以"."为分隔符将$target变量中的IP地

web命令执行漏洞

一,什么是命令执行漏洞: 应用有时需要调用一些执行系统命令的函数,如PHP中的system.exec.shell_exec.passthru.popen.proc_popen等,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞. 二,利用条件: 1,应用调用执行命令的函数 2,将用户输入作为系统命令的参数拼接到命令中 3,没有对用户输入过滤或者过滤不严格 三,漏洞危害: 1,攻击者可以执行命令获取想要的信息 2,攻击者可以拿下服务器等

struts2远程命令执行漏洞S2-045

Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-045,CVE编号CVE-2017-5638,在使用基于Jakarta插件的文件上传功能时,有可能存在远程命令执行,导致系统被黑客入侵,漏洞评级为:高危. 漏洞详情:恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令. 风险等级:高风险. 漏洞风险:黑客通过利用漏洞可以实现远程命令执行. 影响版本:Struts 2.3.5 - Struts 2.3.31, Struts 2

小白日记36:kali渗透测试之Web渗透-手动漏洞挖掘(二)-突破身份认证,操作系统任意命令执行漏洞

手动漏洞挖掘 ###################################################################################### 手动漏洞挖掘原则[会比自动扫描器发现的漏洞要多,要全面] 1.每一个变量都进行尝试 2.所有头[如:cookie中的变量] 3.逐个变量删除 #####################################################################################

DVWA系列之7 low级别命令执行漏洞

下面我们开始分析DVWA中的Command Execution命令执行漏洞. 首先仍是将DVWA Security设置为Low,选择Command Execution,这里在文本框中输入一个IP,点击Submmit提交便可以执行ping命令. 点击"View Source"查看网页源码. 可以看到,这里的数据是以post方式提交过来的,然后被赋值给了变量$target. 接下来有一个if语句,判断条件是"stristr(php_uname('s'), 'Windows NT'