php代码审计5审计命令执行漏洞
命令执行漏洞:通过易受攻击的应用程序在主机操作系统上执行任意命令,用户提供的数据(表单,cookie,http头等)未过滤
挖掘思路:
用户能够控制函数输入,存在可执行代码的危险函数
命令执行和代码执行的区别:
命令执行 执行效果不受限于语言,语法本身,不受命令本身限制
代码执行 执行效果完全受限语言本身
命令执行类型:
代码层过滤不严,系统的漏洞造成命令注入,调用的第三方组件存在代码执行漏洞
常见危险函数
system函数
string system(string $command[,int &$return_var])
$command 要执行的命令
$return_var 如果提供此参数,那么外部命令执行后的返回状态将会被设置到此变量中
exec函数
string exec(string $command[,array &$output[,int &$return_var]])
$command 要执行的命令
$output 如果提供此参数,会有命令执行的输出填充次数组
$return_var 如果同时提供$output $return_var参数,命令执行后的返回状态会被写入到此变量
shell_exec函数
string sehll_exec(string $cmd)
$cmd 要执行的命令
”反引号()则是调用此函数
passthru函数
string passthru(string $command[,int &$return_var])
$command 要执行的命令
$return_var 如果提供此参数,Unix命令的返回状态会被记录的次参数
passthru函数
string passthru(string $command[,int &$return_var])
修复方案:
过滤函数防护
Escapeshellcmd() 过滤整条命令
Escapeshellarg() 过滤整个参数
尽量少用执行命令的函数或者直接禁用参数值,尽量使用引号包括
在使用动态函数之前,确保使用的函数是指定的函数之一
在进行执行命令的函数/方法之前,对参数进行过滤,对铭感字符进行转义,尽量少用执行命令的函数
对于可控点是程序参数的情况下,使用escapeshellcmd函数进行过滤,对于可控点是程序参数值的情况下使用escapeshellarg函数进行过滤
参数的值尽量使用引号包裹,并在拼接前调用addslashes进行转义
而针对特定第三方组件引发的漏洞,就是及时打补丁,修改安装时的默认配置
php代码审计5审计命令执行漏洞的更多相关文章
- PHP代码审计学习之命令执行漏洞挖掘及防御
[1]可能存在命令执行漏洞的函数: 00x1:常用的命令执行函数:exec.system.shell_exec.passthru 00x2:常用的函数处理函数:call_user_func.call_ ...
- php代码审计4审计代码执行漏洞
代码执行漏洞代码执行漏洞是指应用程序本身过滤不严,用户可以通过请求将代码注入到应用中执行,当应用在调用一些能将字符串转化成代码的函数(如php中的eval)时,没有考虑到用户是否能控制这个字符串,造成 ...
- ASP代码审计 -4.命令执行漏洞总结
命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...
- PHP代码审计笔记--命令执行漏洞
命令执行漏洞,用户通过浏览器在远程服务器上执行任意系统命令,严格意义上,与代码执行漏洞还是有一定的区别. 0x01漏洞实例 例1: <?php $target=$_REQUEST['ip']; ...
- ASP代码审计学习笔记 -4.命令执行漏洞
命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...
- 2020/1/28 PHP代码审计之命令执行漏洞
0x00 命令执行漏洞原理 应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system.exec.shell_exec.passthru.popen.proc_popen等函数可以执行 ...
- WordPress <= 4.6 命令执行漏洞(PHPMailer)复现分析
漏洞信息 WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站.也可以把 WordPress 当作一个内容管理系统(C ...
- PHP命令执行漏洞初探
PHP命令执行漏洞初探 Mirror王宇阳 by PHP 命令执行 PHP提供如下函数用于执行外部应用程序:例如:system().shell_exec().exec().passthru() sys ...
- HFS远程命令执行漏洞入侵抓鸡黑阔服务器
先来科普一下: HFS是什么? hfs网络文件服务器 2.3是专为个人用户所设计的HTTP档案系统,如果您觉得架设FTP Server太麻烦,那么这个软件可以提供您更方便的网络文件传输系统,下载后无须 ...
随机推荐
- Py修行路 python基础 (十九)面向对象进阶(下)
item系列 __slots__方法 __next__ 和 __iter__实现迭代器 析构函数 上下文管理协议 元类一.item系列 把对象操作属性模拟成字典的格式. 例如:对象名['key'] ...
- 简单 JS 弹出层 背景变暗
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ___pInvalidArgHandler already defined in LIBCMTD.lib(invarg.obj)
vs2013编译项目时出错,网上很多的解决方案全都是垃圾,根本不能用 不过也有不是垃圾的,就是下面这个: 关于采用静态链接编译生成EXE库函数重复定义问题 看了好多关于类似LIBCMT.lib(inv ...
- Android的设置界面及Preference使用
一般来说,我们的APP都会有自己的设置页面,那么其实我们有非常简单的制作方法.老样子,先看效果图. 然后就是看源代码了. 第一步,先在res文件夹中新建一个xml文件夹,用来存放preferences ...
- java多线程编程核心技术-笔记
一.第一章 1.自定义线程类中实例变量针对其他线程有共享和不共享之分,自定义线程中的变量,如果是继承自thread类,则每个线程中的示例变量的更改,不影响其他线程2.当多个线程去访问一个局部变量是会产 ...
- linux多线程默认栈大小和最大线程数
linux的线程栈大小可以使用ulimit -s查看,对于ubunt 2.6的内核线程栈的默认大小为8M,如下: shine@shine-bupt:~/Program/C$ ulimit -s 819 ...
- Write your first jQuery plugin
本文固定链接: http://www.jquery.org.cn/archives/380 一般来说,jQuery插件的开发分为两种:一种是挂在jQuery命名空间下的全局函数,也可称为静态方法:另一 ...
- python3 破解 geetest(极验)的滑块验证码
Kernel_wu 快速学习的实践者 python3 破解 geetest(极验)的滑块验证码 from selenium import webdriver from selenium.webdriv ...
- Tags and Layers
[Tags and Layers] 1.tags and layers 配置面板."Edit" -> "Project Settings" -> & ...
- Unity3D自带Demo AngryBots路径
[Unity3D自带Demo AngryBots路径] 1.Windows: C:\Users\Public\Documents\Unity Porjects 2.MacOSX: /Users/Sha ...