首先我们来了解基础

基础知识来源于:<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的命令执行漏洞学习的更多相关文章

  1. FastJson远程命令执行漏洞学习笔记

    FastJson远程命令执行漏洞学习笔记 Fastjson简介 fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.fastjson.ja ...

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

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

  3. ASP代码审计学习笔记 -4.命令执行漏洞

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

  4. PHP代码审计学习之命令执行漏洞挖掘及防御

    [1]可能存在命令执行漏洞的函数: 00x1:常用的命令执行函数:exec.system.shell_exec.passthru 00x2:常用的函数处理函数:call_user_func.call_ ...

  5. Struct2远程命令执行漏洞(S2-053)复现学习

    1.S2-053(CVE-2017-12611) RCE出自一道题目 http://www.whalwl.cn:8027/hello.action 漏洞产生原因:Struts2在使用Freemarke ...

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

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

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

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

  8. 2020/1/28 PHP代码审计之命令执行漏洞

    0x00 命令执行漏洞原理 应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system.exec.shell_exec.passthru.popen.proc_popen等函数可以执行 ...

  9. [web安全原理]PHP命令执行漏洞基础

    前言 PHP命令执行漏洞 应用程序的某些功能功能需要调用可以执行系统命令的函数,如果这些函数或者函数的参数被用户控制,就有可能通过命令连接符将恶意命令拼接到正常的函数中,从而随意执行系统命令,这就是命 ...

随机推荐

  1. java安全编码指南之:Thread API调用规则

    目录 简介 start一个Thread 不要使用ThreadGroup 不要使用stop()方法 wait 和 await 需要放在循环中调用 简介 java中多线程的开发中少不了使用Thread,我 ...

  2. Eclipse JSP +Tomcat 环境搭建 错误记录

    环境搭建请参考原文:https://www.cnblogs.com/james-lee/p/5964238.html 错误1:运行时,弹出如下错误:(如果没有此错误,请忽略) 原因是,我们之前点击了T ...

  3. Git操作文件的时候手贱了,怎么恢复?

    我们在使用git的过程当中很难避免的一点就是手贱,因为人嘛总有犯错疏忽的时候,有时候一不小心就操作错了.我也经常遇到这种情况,所以这时候对git的了解和掌握就非常重要,即使操作错了,我们也可以通过gi ...

  4. 通过express快速搭建一个node服务

    Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.可以理解为是运行在服务端的 JavaScript.如果你是一个前端程序员,不太擅长像PHP.Python或Ruby等 ...

  5. c#用于时间日期的类型:DateTime

    https://blog.csdn.net/qq_42675313/article/details/82155446 写的简洁易懂了

  6. Java学习的第六天

    1.今天学习了各种运算符, 还有选择结构,循环结构 2.今天学习没有遇到困难. 3.明天学习数组和第三章的开头一部分.

  7. Yii2使用数据库操作汇总(增删查改、事务)

    查询 //1.简单查询 $admin=Admin::model()->findAll($condition,$params); $admin=Admin::model()->findAll ...

  8. SQL Server双机热备之发布、订阅实现实时同步

    一.复制的功能概述 SQL Server 复制功能实现了主从库的分离,从而将主库的压力分解掉,主库就主要负责数据的更改等,而主库主要负责查询ji.另外,有了主.从库,则从另一个方面,也了一层安全性,即 ...

  9. RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation

    问题 在用pytorch跑生成对抗网络的时候,出现错误Runtime Error: one of the variables needed for gradient computation has b ...

  10. 【漏洞复现】Shiro<=1.2.4反序列化漏洞

    0x01 概述 Shiro简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从 ...