PHP的命令执行漏洞学习
首先我们来了解基础
基础知识来源于:<web安全攻防>徐焱
命令执行漏洞
应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system、exec、shell_exec、passthru、popen、proc_popen等函数可以执行系统命令。当黑客能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行漏洞,这就是命令执行漏洞。
先了解下这些知识
Windows管道符
“|”:直接执行后面的语句。如:ping 127.0.0.1|whoami
“||”:如果前面执行的语句出错泽执行后面的语句,前面的语句智能为假 如:ping 2 || whoami
“&”:如果前面的语句为假则直接执行后面的语句,前面的语句可真可假 如 ping 127.0.0.1&whoami
“&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句只能为真。例如:ping 127.0.0.1&&whoami
Linux管道符
“;”:执行完前面的语句再执行后面的 例如:ping 127.0.0.1;whoami
“|”:显示后面语句的执行结果 例如:ping 127.0.0.1|whoami
“||”:当前面的语句只能怪出错时,执行后面的语句,例如:ping 1||whoami
“&”:如果当前面的语句为假则直接执行后面的语句,前面的语句可真可假。例如:ping 127.0.0.1&whoami
“&&”:如果前面的语句为假则直接出错,也不执行后面的,前面的语句只能为真 例如:ping 127.0.0.1&&whoami
测试学习我们可以写一个简单的PHP
1 <?php
2
3 echo system(“pint -n 2 ”.$_GET[‘IP’]);
4
5 ?>
搭建好我们可以进行简单漏洞攻击 如图我们执行了查看系统当前用户命令

DVWA靶场的命令执行漏洞
LOW
Low Command Injection Source
先分析代码!
1. <?php
2.
3. if( isset( $_POST[ 'Submit' ] ) ) {
4. // Get input
5. $target = $_REQUEST[ 'ip' ];
6.
7. // Determine OS and execute the ping command.
8. if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
9. // Windows
10. $cmd = shell_exec( 'ping ' . $target );
11. }
12. else {
13. // *nix
14. $cmd = shell_exec( 'ping -c 4 ' . $target );
15. }
16. // Feedback for the end user
17. echo "<pre>{$cmd}</pre>";
18. }
19.
20. ?>
我们分析这个靶场的代码可以看到$_REQUEST接受用户传过来的值 我们并没有看到有什么过滤机制的代码所以 可以输入任何东西。
测试执行ping127.0.0.1没问题 我们利用管道命令来 再加命令语句

我这边环境时本地windows我们选用windows的管道符 来执行 OK

Medium
Medium Command Injection Source
继续先分析代码
1. <?php
2. if( isset( $_POST[ 'Submit' ] ) ) {
3. // Get input
4. $target = $_REQUEST[ 'ip' ];
5. // Set blacklist
6. $substitutions = array(
7. '&&' => '',
8. ';' => '',
9. );
10. // Remove any of the charactars in the array (blacklist).
11. $target = str_replace( array_keys( $substitutions ), $substitutions, $target );
12. // Determine OS and execute the ping command.
13. if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
14. // Windows
15. $cmd = shell_exec( 'ping ' . $target );
16. }
17. else {
18. // *nix
19. $cmd = shell_exec( 'ping -c 4 ' . $target );
20. }
21. // Feedback for the end user
22. echo "<pre>{$cmd}</pre>";
23. }
我们注意6-9行 这里是个黑名单过滤 我们可以想办法绕过 这里虽然把&&和分号;加入了黑名单,但是我们还可以用逻辑或(||)、管道符(|)或(&)来命令执行 绕过

PHP的命令执行漏洞学习的更多相关文章
- FastJson远程命令执行漏洞学习笔记
FastJson远程命令执行漏洞学习笔记 Fastjson简介 fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.fastjson.ja ...
- Kali学习笔记30:身份认证与命令执行漏洞
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 实验环境: Kali机器:192.168.163.13 ...
- ASP代码审计学习笔记 -4.命令执行漏洞
命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...
- PHP代码审计学习之命令执行漏洞挖掘及防御
[1]可能存在命令执行漏洞的函数: 00x1:常用的命令执行函数:exec.system.shell_exec.passthru 00x2:常用的函数处理函数:call_user_func.call_ ...
- Struct2远程命令执行漏洞(S2-053)复现学习
1.S2-053(CVE-2017-12611) RCE出自一道题目 http://www.whalwl.cn:8027/hello.action 漏洞产生原因:Struts2在使用Freemarke ...
- JBOSSAS 5.x/6.x 反序列化命令执行漏洞(CVE-2017-12149)
本文主要记录一下JBOSSAS 5.x/6.x 反序列化命令执行漏洞的测试过程 仅供学习 文中利用到漏洞环境由phith0n维护: JBoss 5.x/6.x 反序列化漏洞(CVE-2017-1214 ...
- ThinkPHP5.0.21&5.1.* 代码执行和命令执行漏洞利用
ThinkPHP5.0.21&5.1.* 代码执行和命令执行漏洞利用 ThinkPHP5.0.21&5.1.* exploit code execution and command ...
- 2020/1/28 PHP代码审计之命令执行漏洞
0x00 命令执行漏洞原理 应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system.exec.shell_exec.passthru.popen.proc_popen等函数可以执行 ...
- [web安全原理]PHP命令执行漏洞基础
前言 PHP命令执行漏洞 应用程序的某些功能功能需要调用可以执行系统命令的函数,如果这些函数或者函数的参数被用户控制,就有可能通过命令连接符将恶意命令拼接到正常的函数中,从而随意执行系统命令,这就是命 ...
随机推荐
- Java9系列第6篇-Stream流API的增强
我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注.期待您能关注我,我将把java 9 ...
- 解决Java连接Oracle 12c存在的问题
感谢作者 原文链接:https://blog.csdn.net/peng_wei_kang/article/details/80403486 1.发现项目报以下错误: Caused by: jav ...
- Windows下mysql5.6升级到5.7的方法
Mysql的升级方式分为两种:原地升级和逻辑升级.这两种升级方式,本质没有什么区别的. 只是在对数据文件的处理上有些区别而已.原地升级是直接将数据文件进行拷贝,而逻辑升级对数据文件的处理方式是通过逻辑 ...
- 基于ssm的客户管理系统
查看更多系统:系统大全,课程设计.毕业设计,请点击这里查看 01 概述 一个简单的客户关系管理系统 管理用户的基本数据 客户的分配 客户的流失 已经客户的状态 02 技术 ssm + jdk1.8 + ...
- ssm整合所用全部依赖pom.xml(idea版)
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven ...
- 线上问题排查,一不小心踩到阿里的 arthas坑了
最近帮新来的校招同学排查一个线上问题,问题本身不是很难,但是过程中踩到了一个arthas的坑,挺有意思的. 同时,也分享下在排查过程中使用的一些比较实用的工具,包括tcpdump.arthas.sim ...
- Redis---00概述
一.什么是Redis? 1.概念: 是一个由Salvatore Sanfilippo写的key-value存储系统.是一个典型的NoSQL数据库, 2.特点: ①:数据是存储在内存中的 ②:是一个ke ...
- Spring源码分析之Bean的创建过程详解
前文传送门: Spring源码分析之预启动流程 Spring源码分析之BeanFactory体系结构 Spring源码分析之BeanFactoryPostProcessor调用过程详解 本文内容: 在 ...
- 嵌入式linux和stm32嵌入式开发这两者之间有什么关联性
对于更开始入坑的同学,可能也像我一样搞不清楚两者的区别与联系.现在结合知乎网上的相关资料发一篇文章来具体分析. 基于STM32的开发属于微控制器开发领域,主要开发工具是keil或IAR,这种开发更准确 ...
- Tomcat启动中文乱码
将Tomcat中conf里面的logging.properties修改一下编码方式: java.util.logging.ConsoleHandler.encoding = UTF-8 改成 java ...