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命令执行漏洞 应用程序的某些功能功能需要调用可以执行系统命令的函数,如果这些函数或者函数的参数被用户控制,就有可能通过命令连接符将恶意命令拼接到正常的函数中,从而随意执行系统命令,这就是命 ...
随机推荐
- java安全编码指南之:Thread API调用规则
目录 简介 start一个Thread 不要使用ThreadGroup 不要使用stop()方法 wait 和 await 需要放在循环中调用 简介 java中多线程的开发中少不了使用Thread,我 ...
- Eclipse JSP +Tomcat 环境搭建 错误记录
环境搭建请参考原文:https://www.cnblogs.com/james-lee/p/5964238.html 错误1:运行时,弹出如下错误:(如果没有此错误,请忽略) 原因是,我们之前点击了T ...
- Git操作文件的时候手贱了,怎么恢复?
我们在使用git的过程当中很难避免的一点就是手贱,因为人嘛总有犯错疏忽的时候,有时候一不小心就操作错了.我也经常遇到这种情况,所以这时候对git的了解和掌握就非常重要,即使操作错了,我们也可以通过gi ...
- 通过express快速搭建一个node服务
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.可以理解为是运行在服务端的 JavaScript.如果你是一个前端程序员,不太擅长像PHP.Python或Ruby等 ...
- c#用于时间日期的类型:DateTime
https://blog.csdn.net/qq_42675313/article/details/82155446 写的简洁易懂了
- Java学习的第六天
1.今天学习了各种运算符, 还有选择结构,循环结构 2.今天学习没有遇到困难. 3.明天学习数组和第三章的开头一部分.
- Yii2使用数据库操作汇总(增删查改、事务)
查询 //1.简单查询 $admin=Admin::model()->findAll($condition,$params); $admin=Admin::model()->findAll ...
- SQL Server双机热备之发布、订阅实现实时同步
一.复制的功能概述 SQL Server 复制功能实现了主从库的分离,从而将主库的压力分解掉,主库就主要负责数据的更改等,而主库主要负责查询ji.另外,有了主.从库,则从另一个方面,也了一层安全性,即 ...
- 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 ...
- 【漏洞复现】Shiro<=1.2.4反序列化漏洞
0x01 概述 Shiro简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从 ...