PHP命令执行漏洞初探

Mirror王宇阳 by

PHP 命令执行

PHP提供如下函数用于执行外部应用程序;例如:system()、shell_exec()、exec()、passthru()

system()

<?php
$host = $argv[1];
system("ping ".$host);
?>

在服务端运行php.exe index.php 192.168.2.1

执行php.exe index.php "|net user"(这里的“|”符号的作用时屏蔽源代码的ping字符)

passthru() — 执行外部程序并且显示原始输出

proc_open() — 执行一个命令,并且打开用来输入/输出的文件指针。

shell_exec() — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。

popen() — 通过 popen() 的参数传递一条命令,并对 popen() 所打开的文件进行执行

eval()

PHP中的eval()函数可以把参数字符串按照PHP代码来动态执行,输入的字符串必须是合法的PHP代码字段并以分号结尾

<?php
eval($_REQUEST['code']);
// $_REQUEST:支持GET和POST两种请求的数据
?>

在URL中插入?code=phpinfo();利用GET方法向服务器请求,服务端的index.php处理代码中的eval()函数会将请求的字符串做为PHP代码执行

动态调用

<?php
function T1() {
echo "<script>alert('Hello,World!');</script>";
return 0 ;
} function T2() {
echo "<script>alert('Error');</script>";
return 0 ;
} $fun = $_REQUEST['fun'];
echo $fun();
// 当fun的value为:phpinfo时,在php的echo中构成 phpinfo()
?>

当然了,并不会仅仅只执行一个phpinfo()、T1()……

<?php
$fun = $_GET['fun'];
$par = $_GET['par'];
$fun($par);
?>

PHP的其它危险函数

array_map()

<?php
$arr = $_GET['arr'];
$array = array(1,2,3,4,5);
$new_array = array_map($arr, $array);
?>

array_map() 返回用户自定义函数处理后的数组

assert()

bool assert(mixed $assertion [,string $description])

检查一个断言是否为False;把字符串$description作为PHP代码进行执行

preg_replace()

执行一个正则表达式的搜索和替换

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

pattern 要搜索的正则匹配模式

replacement 用于替换的字符串或数组

subject 要进行搜索和替换的字符串或数组

include

include $file

在变量$file可控的情况下,我们就可以包含任意文件,从而达到getshell的目的;

由于不同的配置环境和不同的包含文件分为:远程文件包含和本地文件包含

文件操作函数

copy:拷贝文件

file_get_contents:将整个文件读入为一个字符串

file_put_contents:将一个字符串写入文件

file:把整个文件读入一个数组中

fopen:打开文件或者 URL

move_uploaded_file:将上传的文件移动到新位置

readfile:输出文件

rename:重命名一个文件或目录

rmdir:删除目录

unlink & delete:删除文件

特殊函数

phpinfo():这个文件里面包含了PHP的编译选项,启动的扩展、版本、服务器配置信息、环境变量、操作系统信息、path变量等非常重要的敏感配置信息

使用软连接读取文件内容

symlink():一般是在linux服务器上使用的,为一个目标建立一个连接,在读取这个链接所连接的文件的内容,并返回内容

环境变量

getenv:获取一个环境变量的值

putenv($a) :添加$a到服务器环境变量,但环境变量仅存活于当前请求期间。 在请求结束时环境会恢复到初始状态。

推荐文章: PHP代码审计——常见危险及特殊函数

PHP命令执行漏洞初探的更多相关文章

  1. HFS远程命令执行漏洞入侵抓鸡黑阔服务器

    先来科普一下: HFS是什么? hfs网络文件服务器 2.3是专为个人用户所设计的HTTP档案系统,如果您觉得架设FTP Server太麻烦,那么这个软件可以提供您更方便的网络文件传输系统,下载后无须 ...

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

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

  3. Samba 4.x.x全版本存在命令执行漏洞

    Samba 4.0.0到4.1.10版本的nmbd(the NetBIOS name services daemon)被发现存在远程命令执行漏洞.CVE编号为CVE-2014-3560.目前官方已经发 ...

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

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

  5. JBOSSAS 5.x/6.x 反序列化命令执行漏洞(CVE-2017-12149)

    本文主要记录一下JBOSSAS 5.x/6.x 反序列化命令执行漏洞的测试过程 仅供学习 文中利用到漏洞环境由phith0n维护: JBoss 5.x/6.x 反序列化漏洞(CVE-2017-1214 ...

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

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

  7. FlexPaper 2.3.6 远程命令执行漏洞 附Exp

    影响版本:小于FlexPaper 2.3.6的所有版本 FlexPaper (https://www.flowpaper.com) 是一个开源项目,遵循GPL协议,在互联网上非常流行.它为web客户端 ...

  8. ThinkPHP5.0.21&5.1.* 代码执行和命令执行漏洞利用

    ThinkPHP5.0.21&5.1.* 代码执行和命令执行漏洞利用 ThinkPHP5.0.21&5.1.*  exploit code execution and command ...

  9. struts2远程命令执行漏洞S2-045

    Apache Struts2最新漏洞(CVE-2017-5638,S02-45) struts2远程命令执行漏洞S2-045 Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-04 ...

随机推荐

  1. MongoDB第一天(MongoDB的简介和安装)

    MongoDB 简介 什么是 MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++语言编写.在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关 ...

  2. LightOJ1355 Game Of CS(green 博弈)

    Jolly and Emily are two bees studying in Computer Science. Unlike other bees they are fond of playin ...

  3. 最全的linux系统安装教程和排错方法

    第4章 linux信息和系统安装与连接    260 4.1 linux的发展历史    260 4.2 GPL协议,FSF协议    261 4.3 linux系统的安装    261 4.3.1 ...

  4. JS页面跳转和打开新窗口方式

    1.window.location.href=URL : 在本窗体打开一个新的页面,也是最常用的一种方法: 2.window.open(URL)  :  在一个新的窗口打开一个新的页面: 3.loca ...

  5. 前端表单提交,提交有图片出现的问题,及解决方案 兼容ie9

    更新一下我的小园子,主要说的是jq文件上传的过程中,如果出现上传的文件里有图片问题 其实文件上传有图片的情况下,不是什么大问题,对于前端来说,但是,如果需要兼容ie9的时候,就需要处理一下 文件上传如 ...

  6. 小胖求学系列之-文档生成利器(上)-smart-doc

    最近小胖上课总是挂着黑眼圈,同桌小张问:你昨晚通宵啦?小胖有气无力的说到:最近开发的项目接口文档没写,昨晚补文档补了很久,哎,昨晚只睡了2个小时.小张说:不是有生成文档工具吗,类似swagger2.s ...

  7. vue之新手使用

    vue中文网站:https://cn.vuejs.org/v2/guide/installation.html  包含了安装.使用.api.视频. 一. 什么是 Vue Vue 是一个前端框架,特点是 ...

  8. 《Java知识应用》Java加密方式(Base64)详解

    1. 说明 Base64加密方式:比较简单,加密快,对普通大众可以起到加密的作用.在程序员眼中和透明一样. Base64应用场景:图片转码(应用于邮件,img标签,http加密) 2. 案例 impo ...

  9. 《Java算法》排序算法-快速排序

    排序算法-快速排序: /** * 给定一个数组:按照从小到大排序. * 思路: * 1. 获取第一个数放入临时变量data,将大于data的数放右边,小于data的数放在左边. * 2. data左边 ...

  10. java设计模式(二)单例模式,一生只爱一人,只争一朝一夕

    单例模式:保证一个类在内存中的对象唯一,有且仅能实例化一次.(如多个代码块需要读取配置文件,or开启事务,orjdbc读取数据源就是个经典例子)参考:吟啸且徐行 实现步骤: 私有构造方法.保证唯一的 ...