zoukankan      html  css  js  c++  java
  • 2019-11-13:任意代码执行,基础学习, 笔记

    session文件的位置linux一般在/tmp/或在/var/lib/php5/ 等位置,windows下如果使用phpstudy,phpstudyPHPTutorial mp mp下,新版本的在phpstudy_proExtensions mp mp

    phpmyadmin任意文件包含漏洞,cve-2014-8959
    漏洞范围 4.0.1-4.0.10.6 4.1.1-4.1.14.7 4.2.1-4.2.12
    http://127.0.0.1/phpmyadmin4/gis_data_editor.php?token=002b368c387963db9fbd71e3ef38310b&gis_data[gis_type]=/../../../2.jpg%00,token值为登录之后自己获得的,gis_data[gis_type]=../../../2.jpg为已经上传成功的图片马,../目录为跳转到根目录

    文件包含漏洞防御
    1,修改Php的配置文件将open_basedir的值设置为可以包含的特定目录,后面要加/,例如 open_basedir=/var/www/html
    2,关闭allow_url_fopen和allow_url_include可以防止远程文件包含
    3,对可以包含的文件进行限制,可以使用白明单的方式,或者设置可以包含的目录,如open_basedir
    4,进行严格的检查,参数值不允许出现../之类的目录跳转符号

    命令执行漏洞是,日常的网络访问中,我们常常可以看到某些Web网站具有执行系统命令的功能,比如:有些网站提供ping功能,我们可以输入一个IP地址,它就会帮我们去尝试ping目标的IP地址,而我们则可以看到执行结果。但是如果用户没有遵循网站的本意,而去输入精心构造的指令,可能会对网站本身的功能逻辑产生逆转,导致让目标网站执行恶意命令。

    命令执行漏洞的分类
    web代码层命令执行,exec("whoami");
    第三方组件命令执行漏洞,WordPress中用来处理图片的ImageMagick组件 ,JAVA中的命令注入漏洞(struts2/ElasticsearchGroovy等) ,vBulletin 5.x 版本通杀远程代码执行
    系统层面命令执行漏洞,MS08-067,bash破壳漏洞

    命令注入漏洞产生原因有两点,用户可以控制输入的内容,用户输入的内容被当作命令执行

    常用执行命令函数
    ``反撇号输出并返回shell结果。
    system()输出并返回最后一行shell结果。
    passthru()​ 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。 相同点:都可以获得命令执行的状态码
    shell_exec()通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回
    exec()不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
    popen()
    proc_open()
    pcntl_exec()

    命令执行权限,命令注入漏洞的危害跟web中间件运行的权限有关。由于web应用运行在web中间件上,所以web应用会“继承”web中间件的运行权限。如果存在命令注入漏洞的web应用运行在以系统管理员身份运行的web中间件上,那么通过web执行命令就相当于以管理员权限执行命令。

    windows下多条命令执行语法格式
    命令1 & 命令2, 先执行命令1后执行命令2,无论命令1执行是否成功
    命令1 && 命令2 ,先执行命令1,只有命令1执行成功了,再执行命令2
    命令1 || 命令2 ,先执行命令1只有命令1失败了,再执行命令2
    命令1 | 命令2 ,|管道符,将命令1执行的结果传递给命令2,命令1如果有错误,命令2一样可以执行

    linix下多条命令执行语法格式
    命令1 ; 命令2 ,先执行命令1,再执行命令2,无论命令1执行是否成功
    命令1 && 命令2 ,先执行命令1,在执行命令2,至于命令1执行成功时候,才执行命令2
    命令1||命令2,先执行命令1,在执行命令2,只有命令1执行失败时候才执行命令2
    命令1 | 命令2,|是管道,将命令1的执行结果,传输给命令2

    代码执行
    当应用调用一些能将字符转化成代码的函数时候,如eval(php 7之后没有eval了),没有考虑用户是否能控制这个字符串,将造成代码注入漏洞

    $data=$_GET['data'];
    eval("$ret=$data;"); 可直接执行函数
    eval("$ret=strtolower('$data');"); 可以采用闭合的方式绕过执行eval("$ret=strtolower('1') ;phpinfo() ;//');");
    eval("$ret=strtolower("$data");"); 可以采用闭合的方式绕过执行eval("$ret=strtolower("1") ;phpinfo() ;//');");
    urly Syntax 漏洞利用,eval("$ret=strtolower("$data");"); 可以采用${}方式绕过,${phpinfo()},eval("$ret=strtolower("${phpinfo()}");");

  • 相关阅读:
    aaa
    https://download.csdn.net/download/qq_33200967/10679367
    hadoop修改
    xa
    commit
    mybatis
    centos7 部署openstf
    selenium api docs
    Chrome浏览器在自动化中的应用
    selenium自动化测试各浏览器驱动下载地址
  • 原文地址:https://www.cnblogs.com/sym945/p/11851117.html
Copyright © 2011-2022 走看看