PHP代码审计学习之命令执行漏洞挖掘及防御
【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代码审计学习之命令执行漏洞挖掘及防御的更多相关文章
- php代码审计5审计命令执行漏洞
命令执行漏洞:通过易受攻击的应用程序在主机操作系统上执行任意命令,用户提供的数据(表单,cookie,http头等)未过滤 挖掘思路:用户能够控制函数输入,存在可执行代码的危险函数 命令执行和代码执行 ...
- ASP代码审计学习笔记 -4.命令执行漏洞
命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...
- Kali学习笔记30:身份认证与命令执行漏洞
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 实验环境: Kali机器:192.168.163.13 ...
- 2020/1/28 PHP代码审计之命令执行漏洞
0x00 命令执行漏洞原理 应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system.exec.shell_exec.passthru.popen.proc_popen等函数可以执行 ...
- 小白日记36:kali渗透测试之Web渗透-手动漏洞挖掘(二)-突破身份认证,操作系统任意命令执行漏洞
手动漏洞挖掘 ###################################################################################### 手动漏洞挖掘 ...
- PHP的命令执行漏洞学习
首先我们来了解基础 基础知识来源于:<web安全攻防>徐焱 命令执行漏洞 应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system.exec.shell_exec.pas ...
- FastJson远程命令执行漏洞学习笔记
FastJson远程命令执行漏洞学习笔记 Fastjson简介 fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.fastjson.ja ...
- ASP代码审计 -4.命令执行漏洞总结
命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...
- PHP代码审计笔记--命令执行漏洞
命令执行漏洞,用户通过浏览器在远程服务器上执行任意系统命令,严格意义上,与代码执行漏洞还是有一定的区别. 0x01漏洞实例 例1: <?php $target=$_REQUEST['ip']; ...
随机推荐
- WSDL-学习总结
1.什么是WSDL 是一种使用 XML 编写的文档.这种文档可描述某个 Web service.它可规定服务的位置,以及此服务提供的操作(或方法). 2.WSDL文档结构: <binding&g ...
- ZOJ3622 Magic Number(水题)
分析: 举个样例xxx(三位数)为魔力数,则xxx|(xxx+1000*y),那么xxx|1000,这个就是结论 同理:四位数xxxx|10000,五位数xxxxx|100000 代码: #inclu ...
- automake连载---关于两个文件configure.in和Makefile.am的编写
http://blog.csdn.net/shanzhizi/article/details/30251763 automake主要通过编辑Makefile.am来控制它的行为,下面就常用的三个Mak ...
- POJ1125 Stockbroker Grapevine 多源最短路
题目大意 给定一个图,问从某一个顶点出发,到其它顶点的最短路的最大距离最短的情况下,是从哪个顶点出发?须要多久? (假设有人一直没有联络,输出disjoint) 解题思路 Floyd不解释 代码 #i ...
- 微信小程序小红点未读消息如何实现?
如图类似的 这样的需求还挺多的,那么如何实现呢? data: { userInfo: {}, projectSource: 'https://github.com/liuxuanqiang/wec ...
- 更轻便的markdown 编辑器Typora
更轻便的markdown 编辑器 Typora 所见即所得的键入方式 https://typora.io 文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论.
- 开机自启动:从busybox到debian
需要在mint上设置opensips的开机自启动,翻了半天资料还是一知半解.最后在opensips的官方文档,查到用下面的语句,添加自启动成功.不过貌似还是会有启动不成功,没有仔细测试过. updat ...
- ES6 字符串扩展
1.字符串遍历接口 字符串可以被for...of循环遍历 'use strict'; for (let codePoint of 'foo') { //控制台输出f o o console.log(c ...
- View设置宽高
public class ViewMeasuare extends View { public ViewMeasuare(Context context, AttributeSet attrs) { ...
- Oracle 性能调优案例(代码级别)
业务案例一: 业务:千万记录表中查询出50条符合条件的记录. 现象:oracle部署时跨机器,业务取得数据耗时10ms.造成业务性能不达标. 为了突出主题,对于异常分支,均已省略. 对于通常写法, o ...