【1】可能存在命令执行漏洞的函数:

00x1:常用的命令执行函数:exec、system、shell_exec、passthru

00x2:常用的函数处理函数:call_user_func、call_user_func_array、file_get_contents.....更多函数处理函数传递门:http://www.php.net/manual/zh/book.funchand.php

 函数处理函数的使用:<?php $a = "phpinfo()";call_user_func($_GET['id'],$a); ?>访问:127.0.0.1/1.php?assert即可看到效果


【2】如何预防命令执行漏洞:

00x1:escapeshellcmd()//该函数过滤的是整条的命令

00x2:escapeshellarg()//用来保证传入的命令执行函数里面的参数确实是以字符串参数的形式存在的不能被注入!


实例挖掘一个程序的命令执行漏洞。


我随便搜索了一个命令执行函数(PS:网站程序是老古董了):

随笔点开了一个文件,在文件的35行处找到命令执行函数system,两个参数,看看有没有进行过滤。

从35行很清楚的看到,其使用了一个tex_filter_get_cmd的函数,那么我们找一下这个函数,看下是如何写的。该文件中没有找到定义该函数的,那么必然是被包含了,被包含了两个文件夹,一个是lib.php一个是config.php那么势必是lib.php了,因为config.php是配置文件。

找到lib.php打开lib.php以后找到这个tex_filter_get_cmd函数,函数内部情况如下所示:

其实也可以很明显的看到$texexp函数有使用escapeshellarg函数过滤然后赋值给$texexp变量,但是$pathname并没有任何过滤就直接带入44行以及47行执行了。由此导致本次的命令执行漏洞。

在42行他判断了系统是否为windows如果是windows就执行43到44行的代码。

44行的$executable变量是由40行的赋值而来的,那么我们再来看看tex_filter_get_executale函数。该函数在这个文件当中。其结构如下所示:

总体的来说就是调用了16行的exe

那么构造好的EXP就应该是:texed.php?formdata=foo&pathname=foo"+||+ver||+echo+

防御:

    使用escapeshellcmd($pathname);过滤掉$filename

  

PHP代码审计学习之命令执行漏洞挖掘及防御的更多相关文章

  1. php代码审计5审计命令执行漏洞

    命令执行漏洞:通过易受攻击的应用程序在主机操作系统上执行任意命令,用户提供的数据(表单,cookie,http头等)未过滤 挖掘思路:用户能够控制函数输入,存在可执行代码的危险函数 命令执行和代码执行 ...

  2. ASP代码审计学习笔记 -4.命令执行漏洞

    命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...

  3. Kali学习笔记30:身份认证与命令执行漏洞

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 实验环境: Kali机器:192.168.163.13 ...

  4. 2020/1/28 PHP代码审计之命令执行漏洞

    0x00 命令执行漏洞原理 应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system.exec.shell_exec.passthru.popen.proc_popen等函数可以执行 ...

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

    手动漏洞挖掘 ###################################################################################### 手动漏洞挖掘 ...

  6. PHP的命令执行漏洞学习

    首先我们来了解基础 基础知识来源于:<web安全攻防>徐焱 命令执行漏洞 应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system.exec.shell_exec.pas ...

  7. FastJson远程命令执行漏洞学习笔记

    FastJson远程命令执行漏洞学习笔记 Fastjson简介 fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.fastjson.ja ...

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

    命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...

  9. PHP代码审计笔记--命令执行漏洞

    命令执行漏洞,用户通过浏览器在远程服务器上执行任意系统命令,严格意义上,与代码执行漏洞还是有一定的区别. 0x01漏洞实例 例1: <?php $target=$_REQUEST['ip']; ...

随机推荐

  1. Wishbone接口Altera JTAG UART

    某些时候,我们在使用Altera FPGA的时候,尤其是涉及SoC系统的时候,通常需要一个串口与PC交互.使用Altera的USB-Blaster免去了外接一个串口.我们可以使用下面所述的IP核通过U ...

  2. go语言基础之安装go开发环境和beego

    1.install gogo1.11.4.windows-amd64.msi  #默认安装就可以 2.golandgoland-2018.2.2.exe 安装完成,不要运行软件. 软件下载:https ...

  3. scrapy爬虫框架实例二

    本实例主要通过抓取慕课网的课程信息来展示scrapy框架抓取数据的过程. 1.抓取网站情况介绍 抓取网站:http://www.imooc.com/course/list 抓取内容:要抓取的内容是全部 ...

  4. idea下一次Jar包依赖问题的解决过程

    项目导入后有几个类显示没找到依赖类. 第一步,定位到该类所在的jar包:pom文件没有报错,所以这应该是一个jar包版本问题,通过import路劲大概确定了jar包,我本地这个jar包一共有两个版本, ...

  5. VLC播放RTSP视频延迟问题

    VLC播放RTSP视频延迟问题 配置 VLC 以播放 RTSP/RTP 流 实测发现RTP都不如TCP快? vlc播放rtp封装的h.264延时很大是什么原因? 开启打印: VLC的工具->消息 ...

  6. 运行maven pom.xml文件后编译环境变为jdk1.5

    idea中运行pom.xml文件后,将编译环境变成了1.5,造成一系列的编译问题很是不方便. 以下是解决方法: 在"pom.xml"里加入如下代码: <properties& ...

  7. 获取ping的最短、最长、平均时间

    # -*- coding: utf-8 -*- import osimport rep = os.popen('ping 120.26.77.101') out = p.read()regex = r ...

  8. JS中confirm,prompt用法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 07-spring学习-bean的其他配置(了解)

    首先需要明确,默认情况下,只要在applicationContext.xml文件里面配置的时候自动进行构造方法初始化. 但是用户也可以实现自己的配置,让其在第一次使用的时候进行初始化,这种操作叫做 延 ...

  10. ConfigurationManager读取dll的配置文件

    ConfigurationManager读取dll的配置文件 最近一个项目,需要发布dll给第三方使用,其中需要一些配置参数. 我们知道.NET的exe工程是自带的App.config文件的,编译之后 ...