【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. Linux编程中的坑——C++中exit和return的区别

    今天遇到一个坑,折腾了一天才把这个坑填上,情况是这样的: 写了段代码,在main()函数中创建一个分离线程,结果这个线程什么都没干就直接挂掉了,代码长这样: int main() { 创建一个分离线程 ...

  2. python的FTP模块

    python本身自带一个FTP模块,可以轻松实现FTP的上传,下载等操作.下面来看看用法: from ftplib import FTP import socket    #用来设置超时时间 FTP. ...

  3. SqlServer数据库1433端口问题1

    在本地使用telnet ip  1433 命令测试数据库1433端口是否打开,总是提示错误,根据网上查找资料总结了如下两点思路供参考,欢迎指正! (1)第一种情况可能是"Telnet客户端& ...

  4. GPU bubbles

    https://software.intel.com/en-us/articles/performance-analysis-and-optimization-for-pc-based-vr-appl ...

  5. unity color space 选取

    https://unity3d.com/cn/learn/tutorials/topics/graphics/choosing-color-space https://docs.unity3d.com ...

  6. 百度编辑器同一id重复调用不能生效的办法

    在使用js 调用表单组件模板的时候,表单内有一个编辑框 第一次调出的时候,百度编辑器正常显示,关闭后,再打开,百度编辑器不能显示 原因:第一次使用的时候, UE.getEditor('node_con ...

  7. SQL Server-数据库中强varchar类型使用sum函数计算总和

    select sum(cast(totalmoney AS DECIMAL)) as totalmoney from dbo.t_wxbill

  8. java匿名内部类之RocketMQ中的应用

    匿名内部类在spring中没怎么见用,在RocketMQ中有大量的应用. 确实可以提高开发效率.这可能代表两种写代码的态度吧. 匿名内部类简单来说就是直接在函数中实现接口方法,不需要声明一个接口实现类 ...

  9. SOA服务总线设计

    背景 基于总线的设计,借鉴了计算机内部硬件组成的设计思想(通过总线传输数据).在分布式系统中,不同子系统之间需要实现相互通信和远程调用,比较直接的方式就是“点对点”的通信方式,但是这样会暴露出一些很明 ...

  10. Word2007中插入公式之后,公式上下有很大的空白

    word 2007 选中一个公式,选择页面布局,点击页面设置右下角的小箭头,在弹出的对话框中,选择文档网格,在网格选项中选择无网格,确定,行距正常了. 选择一个公式,所有的公式行距都会变. Word ...