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代码输入一个输入机制(例如缺乏有效验证限制的表格域) ...
随机推荐
- modbus串口通讯C#
简介 公司给的一个小任务,这篇文章进行详细讲解 题目: modbus串口通讯 主要内容如下: 1.实现使用modbus通讯规约的测试软件: 2.具有通信超时功能: 3.分主站从站,并能编辑报文.生成报 ...
- requests库下载图片的方法
方法: 传入图片url,requests.get()方法请求一下,将源码以二进制的形式写在本地即可. 以前一直以为requests库中有特定的方法获取图片,类似urllib.request.urlre ...
- Ubuntu 16.04 安装Google 浏览器
Ubuntu安装好后,自带Firefox浏览器,有时我们需要再安装几个浏览器,那么Google Chrome,就是首选, 安装如下: 下载浏览器安装包, 下载链接:https://dl.google. ...
- 中国移动能力开放商店OneNET View数据可视化公测 10分钟轻便生成行业可视化界面
随着云计算,5G技术,人工智能等底层技术的发展,万物互联时代已经到来,同时带来了海量数据,如何效果好.低成本.短时间的表现据,成为物联网行业从业者和公司的当务之急. OneNET View传统的数据展 ...
- springboot文件上传下载简单使用
springboot的文件上传比较简单 一.使用默认的Resolver:StandardServletMultipartResolver controller package com.mydemo.w ...
- Dom 动态添加元素节点总结
jQuery创建元素节点的方法: 创建元素节点: $("<div></div>"): 创建文本节点: $("<div>直接将文本的内容 ...
- 菜鸟学python之大数据的初认识
这次作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2639 1.这些分析所采用数据来源是什么? 国家数据库:中国铁路 ...
- java核心卷笔记--P48字符串3.6.5
一定不要使用 == 运算符检测两个字符串是否相等 ! 这个运算符只能够确定两个字串是否放置在同一个位置上 . 当然 , 如果字符串放置在同一个位置上 , 它们必然相等. 但是 ,完全有可能将内容相同的 ...
- vue cli使用融云实现聊天
公司有个项目要实现一个聊天功能,需求如下图,略显随意 公司最终选择融云这个吊炸天的即时通信,文档详细的一匹,刚开始看文档感觉很详细实现起来也不麻烦,有很多开源的demo可以在线演示和下载 不过我们的项 ...
- c语言利用读取命令行(多行读取)
#include<stdio.h> #include<stdlib.h> #include<string.h> int main() { FILE *fh = po ...