【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. 使用Sublime经验分享

    Sublime轻量级.可是绝对是神一样的编辑器. 1.代码清晰美观 2.能够选择文件夹作为文件结构文件夹显示在左側 3.以tab的形式打开多个页面在同一个窗体内 设置方法例如以下: Preferenc ...

  2. Ubuntu12.04 Bugzilla 和 TestOpia的安装步骤

    1.        安装apache User@ubuntu:$  sudo apt-get install apache2 注:安装完以后能够通过http://192.168.128.128/ 来訪 ...

  3. Android 开发之使用Eclipse Debug调试详解(转)

    转自 http://blog.csdn.net/xys289187120/article/details/6636331 1.在程序中添加一个断点 如果所示:在Eclipse中添加了一个程序断点 在E ...

  4. 【Python 数据分析】module 'numpy' has no attribute 'array'

    安装好Numpy模块后,开始做了几个小测试都可以运行,但是当我创建numpy.py这个文件后 numpy.py import numpy y = numpy.array([[11,4,2],[2,6, ...

  5. Lr_debug_message,Lr_output_message,Lr_error_message,Lrd_stmt,Lrd_fetch

    今天在群里,问了 Lr_debug_message,Lr_output_message,Lr_error_message,Lrd_stmt,Lrd_fetch.下 面我整理了下Lr_debug_mes ...

  6. Python-Mac OS X EI Capitan下安装Scrapy

    sudo pip install scrapy --ignore-installed six #sudo pip install scrapy --upgrade --ignore-installed ...

  7. 解决chrome和firefox flash不透明的方法

    透明flash在IE内核的浏览器下正常.在chrome和火狐下不透明了. 解决方法: <object height="377" width="712" c ...

  8. python selenium --调用js

    转自:http://www.cnblogs.com/fnng/p/3230768.html 本节重点: 调用js方法 execute_script(script, *args) 在当前窗口/框架 同步 ...

  9. Mongodb - TTL(time to live)特性

    TTL集合支持mongodb对存储的数据进行失效时间设置,经过指定的时间段后.或在指定的时间点过期,集合自动被mongod清除.这一特性有利于对一些只需要保存一定时间的数据信息进行存储,比如机器产生的 ...

  10. GCC手册学习(序)

    已经是2014年的年末了,又快过了一年.今年,一定要认真把GCC再学习一遍,做好笔记. 总览 gcc [option|filename] ... g++ [option|filename] ...   ...