PHP代码审计之命令注入
命令注入
命令注入就是通过利用无验证变量构造特殊语句对服务器进行渗透.
注入的种类有很多,而不仅仅是SQL Injection. php常见注入有以下几种(常见:,常见!!):
- 命令注入 (Command Injection)
- Eval注入(Eval Injection)
- 客户端脚本攻击(Script Injection)
- 跨网站脚本攻击(Cross Site Scripting,XSS)
- SQL注入攻击(SQL Injection)
- 动态函数注入攻击(Dynamic Variable Evaluation)
- 序列化注入 & 对象注入
php中一般用5个函数来执行外部的应用程序或函数(当然,能实现这样功能的手段不只是这5个函数)
system() , exec() , passthru(), shell_exec(),
关键字发现
我们拿到一套web源码的时候,有的时候没必要通读的情况下,我们可以结合编辑器特性对关键字进行全局搜素,以便我们快速的定位那些代码使用了我们指定的函数.

对搜素到的代码双击即可进入指定的代码段,我们可以结合代码段的上下文来分析具体逻辑.

我们可以看到. 代码中并没有对$target进行过滤.直接接收POST数据然后拼接到了代码里.
由此我们基本可以确定是存在注入漏洞的.进行手动验证..


通过验证得知. 注入漏洞确实存在.接下来我们就需要做相应的修复.
注入修复
通过发现漏洞过程,得知造成此问题是因为参数过滤不严导致的,那我们如果能对提交的参数做很好的验证过滤,保证我们提交的数据时ip类型或者域名类型是不是就可以解决了?
这里以正则匹配过滤的模式来对参数进行校验.如果参数合法.则执行ping操作. 否则抛出异常信息 IP is error

修复完手工验证. 发现漏洞已修复.
PHP代码审计之命令注入的更多相关文章
- PHP代码审计之命令注入攻击
PHP漏洞-命令注入攻击 命令注入攻击 PHP中可以使用下列5个函数来执行外部的应用程序或函数 system.exec.passthru.shell_exec.``(与shell_exec功能相同) ...
- PHP代码审计2-常用超全局变量,常用命令注入,常用XSS漏洞审计,文件包含
超全局变量 $GLOBALS — 引用全局作用域中可用的全部变量$_SERVER — 服务器和执行环境信息$_GET — HTTP GET 变量$_POST — HTTP POST 变量$_FILES ...
- 代码审计-DVWA-命令注入
首先说明,我水平不高,这是我在学习代码审计过程中写的记录笔记,难免有不正之处,还望指出. Windows 10 php7.2.10 + apache DVWA代码审计 命令执行 low <?ph ...
- OS命令注入
SSL http://kb.cnblogs.com/page/162080/ http://baike.baidu.com/link?url=jPitKuDw_ncDlMbOc1SkWzM9TuKX9 ...
- PHP漏洞全解(二)-命令注入攻击
本文主要介绍针对PHP网站常见的攻击方式中的命令攻击.Command Injection,即命令注入攻击,是指这样一种攻击手段,黑客通过把HTML代码输入一个输入机制(例如缺乏有效验证限制的表格域)来 ...
- PHP安全编程:shell命令注入(转)
使用系统命令是一项危险的操作,尤其在你试图使用远程数据来构造要执行的命令时更是如此.如果使用了被污染数据,命令注入漏洞就产生了. exec()是用于执行shell命令的函数.它返回执行并返回命令输出的 ...
- Commix命令注入漏洞利用
介绍 项目地址:https://github.com/stasinopoulos/commix Commix是一个使用Python开发的漏洞测试工具,这个工具是为了方便的检测一个请求是否存在命令注入漏 ...
- PHP 代码审计代码执行注入
PHP 代码审计代码执行注入 所谓的代码执行注入就是 在php里面有些函数中输入的字符串参数会当做PHP代码执行. 如此的文章里面就大有文章可以探究了 一 常见的代码执行函数 Eval,assert, ...
- PHP命令注入笔记
一.PHP命令注入介绍 在学习php相关的攻击时,遇到了Command Injection,即命令注入攻击,是指这样一种攻击手段,黑客通过把HTML代码输入一个输入机制(例如缺乏有效验证限制的表格域) ...
随机推荐
- Linux(CentOS7)下如何配置多个Tomcat容器
一.Linux版本 二.上传并解压apache-tomcat-7.0.90压缩包,然后复制粘贴出来多个tomcat 解压缩 tar -xzvf apache-tomcat-7.0.90.tar.gz ...
- 使用docker安装mysql和redis
本文介绍在linux下使用docker安装mysql和redis. 原文地址:代码汇个人博客 http://www.codehui.net/info/59.html 测试环境:centos7.6,do ...
- jQuery中$.each()方法的使用
$.each()是对数组,json和dom结构等的遍历,说一下他的使用方法吧. 1.遍历一维数组 var arr1=['aa','bb','cc','dd']; $.each(arr1,functio ...
- spring boot 打包war
@SpringBootApplication public class AesApplication extends SpringBootServletInitializer { public sta ...
- VMware Tools 继续运行脚本未能在虚拟机中成功运行。
安装VMware Tools之后,Ubuntu弹出以下警告 sudo apt-get autoremove open-vm-tools 也可以执行这个命令(如果vmware-uninstall-too ...
- VSCode python 遇到的问题:vscode can't open file '<unprintable file name>': [Errno 2] No such file or directory
代码很简单,就两行: import pandas as pd import netCDF4 as nc dataset = nc.Dataset('20150101.nc') 环境:在VSCode中左 ...
- Docker 核心技术之Dockerfile
Dockerfile 简介 什么是Dockerfile Dockerfile其实就是根据特定的语法格式撰写出来的一个普通的文本文件 利用docker build命令依次执行在Dockerfile中定义 ...
- (一)jdk8学习心得之遍历
一.遍历 -- 最好和stream流连用 使用jdk8提供的forEach进行遍历时,采用的是多线程的操作,理论上讲是会比原来的方法更快.但是注意,系统启动时需要加载lambda框架的内容.因此如果通 ...
- NodeJs之word文件生成与解析
NodeJs之word文件生成与解析 一,介绍与需求 1.1,介绍 1,officegen模块可以为Microsoft Office 2007及更高版本生成Office Open XML文件.此模块不 ...
- [转帖]为应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误。该进程 ID 为“XXXX”。数据字段包含错误号。
[终极解决方案]为应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误.该进程 ID 为“XXXX”.数据字段包含错误号. ...