zoukankan      html  css  js  c++  java
  • 渗透之路基础 -- 命令执行漏洞

    漏洞原理

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

    ​ 常见调用的一些系统命令的函数,如PHP中的system(),exec(),shell(),passthru(),popen(),proc_popen()等。

    漏洞产生

    • 应用调用执行系统命令的函数

    • 存在系统命令的参数可以被用户输入并且拼接到参数中执行

    • 未对用户输入进行过滤或过滤不严格

    漏洞分类

    1. 代码层过滤措施不完善

      Web应用中通过system函数来调用

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

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

    3. 调用的第三方中间件或组件中存在的漏洞

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

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

      ThinkPHP命令执行

    漏洞危害

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

    PHP中常见的漏洞代码

    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

    漏洞防御

    1. 尽量少用执行命令的函数或者直接禁用
    2. 参数值尽量使用引号包括
    3. 在使用动态函数之前,确保使用的函数是指定的函数之一
    4. 在进入执行命令的函数/方法之前,对参数进行过滤,对敏感字符进行转义
  • 相关阅读:
    css基础教程
    网页加载-上下幕布分开
    Vue-Aixos
    webpack学习
    Vue、Element 路由跳转,左侧菜单高亮显示,页面刷新不会改变当前高亮菜单
    Vue知识概括
    JSON.parse() 与 JSON.stringify()
    Bootstrap4 样式笔记
    ES6基础语法
    V-model 双向绑定的原理是什么?
  • 原文地址:https://www.cnblogs.com/r0ckysec/p/11529390.html
Copyright © 2011-2022 走看看