PHP命令执行漏洞初探
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命令执行漏洞初探的更多相关文章
- HFS远程命令执行漏洞入侵抓鸡黑阔服务器
先来科普一下: HFS是什么? hfs网络文件服务器 2.3是专为个人用户所设计的HTTP档案系统,如果您觉得架设FTP Server太麻烦,那么这个软件可以提供您更方便的网络文件传输系统,下载后无须 ...
- ASP代码审计 -4.命令执行漏洞总结
命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...
- Samba 4.x.x全版本存在命令执行漏洞
Samba 4.0.0到4.1.10版本的nmbd(the NetBIOS name services daemon)被发现存在远程命令执行漏洞.CVE编号为CVE-2014-3560.目前官方已经发 ...
- 小白日记36:kali渗透测试之Web渗透-手动漏洞挖掘(二)-突破身份认证,操作系统任意命令执行漏洞
手动漏洞挖掘 ###################################################################################### 手动漏洞挖掘 ...
- JBOSSAS 5.x/6.x 反序列化命令执行漏洞(CVE-2017-12149)
本文主要记录一下JBOSSAS 5.x/6.x 反序列化命令执行漏洞的测试过程 仅供学习 文中利用到漏洞环境由phith0n维护: JBoss 5.x/6.x 反序列化漏洞(CVE-2017-1214 ...
- Kali学习笔记30:身份认证与命令执行漏洞
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 实验环境: Kali机器:192.168.163.13 ...
- FlexPaper 2.3.6 远程命令执行漏洞 附Exp
影响版本:小于FlexPaper 2.3.6的所有版本 FlexPaper (https://www.flowpaper.com) 是一个开源项目,遵循GPL协议,在互联网上非常流行.它为web客户端 ...
- ThinkPHP5.0.21&5.1.* 代码执行和命令执行漏洞利用
ThinkPHP5.0.21&5.1.* 代码执行和命令执行漏洞利用 ThinkPHP5.0.21&5.1.* exploit code execution and command ...
- struts2远程命令执行漏洞S2-045
Apache Struts2最新漏洞(CVE-2017-5638,S02-45) struts2远程命令执行漏洞S2-045 Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-04 ...
随机推荐
- pycharm中启动Django方法
1.找到Edit Configurations 2.Parameters处添加 runserver 0.0.0.0:8080 3.运行成功
- luogu P5514 [MtOI2019]永夜的报应
题目背景 在这世上有一乡一林一竹亭,也有一主一仆一仇敌. 有人曾经想拍下他们的身影,却被可爱的兔子迷惑了心神. 那些迷途中的人啊,终究会消失在不灭的永夜中-- 题目描述 蓬莱山 辉夜(Kaguya)手 ...
- 配置React Native的开发环境
本文转载自:http://mp.weixin.qq.com/s?__biz=MzIxNjEzNjUzOQ==&mid=402020148&idx=2&sn=ccad14a919 ...
- Prometheus笔记(二)监控go项目实时给grafana展示
欢迎加入go语言学习交流群 636728449 Prometheus笔记(二)监控go项目实时给grafana展示 Prometheus笔记(一)metric type 文章目录 一.promethe ...
- 洛谷 题解 P1351 【联合权值】
Problem P1351 [联合权值] record 用时: 99ms 空间: 13068KB(12.76MB) 代码长度: 3.96KB 提交记录: R9883701 注: 使用了 o1 优化 o ...
- Vue-router的实现原理
参考博客:https://www.jianshu.com/p/4295aec31302 参考博客:https://segmentfault.com/a/1190000015123061
- 用HAL库结合STM cube编写代码控制stm32f103c8t6来驱动减速电机实现慢快逐步切换转动
用到的模块 TB6612FNG电机驱动模块 stm32F103C8T6最小系统板 LM2596S降压模块 直流减速电机(不涉及编码器知识) 模块介绍 1.TB6612FNG电机驱动模块 (1)< ...
- CCF-CSP题解 201903-4 消息传递接口
求并行的各个进程,且进程内部顺序执行的情况下,会不会出现"死锁". 首先用\(%[^\n]\)将每个进程读入.最后过不了居然是因为\(str[\ ]\)开小了(悲喜交加.存储在\( ...
- eclipse配置svn导出项目
eclipse安装svn 菜单栏help-->eclipse marketspace-->find中搜索subclipse,安装-->ok windows-->show vie ...
- Spring Cloud Config入门(本地配置)
spring cloud config 简介 Spring Cloud Config为分布式系统中的外部化配置提供服务器和客户端支持.使用Config Server,您可以在所有环境中管理应用程序的外 ...