命令注入

命令注入就是通过利用无验证变量构造特殊语句对服务器进行渗透.

注入的种类有很多,而不仅仅是SQL Injection. php常见注入有以下几种(常见:,常见!!):

  1. 命令注入 (Command Injection)
  2. Eval注入(Eval Injection)
  3. 客户端脚本攻击(Script Injection)
  4. 跨网站脚本攻击(Cross Site Scripting,XSS)
  5. SQL注入攻击(SQL Injection)
  6. 动态函数注入攻击(Dynamic Variable Evaluation)
  7. 序列化注入 & 对象注入

php中一般用5个函数来执行外部的应用程序或函数(当然,能实现这样功能的手段不只是这5个函数)

  system() , exec() , passthru(), shell_exec(),

关键字发现

我们拿到一套web源码的时候,有的时候没必要通读的情况下,我们可以结合编辑器特性对关键字进行全局搜素,以便我们快速的定位那些代码使用了我们指定的函数.

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

我们可以看到. 代码中并没有对$target进行过滤.直接接收POST数据然后拼接到了代码里.

由此我们基本可以确定是存在注入漏洞的.进行手动验证..

通过验证得知. 注入漏洞确实存在.接下来我们就需要做相应的修复.

注入修复

通过发现漏洞过程,得知造成此问题是因为参数过滤不严导致的,那我们如果能对提交的参数做很好的验证过滤,保证我们提交的数据时ip类型或者域名类型是不是就可以解决了?

这里以正则匹配过滤的模式来对参数进行校验.如果参数合法.则执行ping操作. 否则抛出异常信息 IP is error

修复完手工验证. 发现漏洞已修复.

PHP代码审计之命令注入的更多相关文章

  1. PHP代码审计之命令注入攻击

    PHP漏洞-命令注入攻击 命令注入攻击 PHP中可以使用下列5个函数来执行外部的应用程序或函数 system.exec.passthru.shell_exec.``(与shell_exec功能相同) ...

  2. PHP代码审计2-常用超全局变量,常用命令注入,常用XSS漏洞审计,文件包含

    超全局变量 $GLOBALS — 引用全局作用域中可用的全部变量$_SERVER — 服务器和执行环境信息$_GET — HTTP GET 变量$_POST — HTTP POST 变量$_FILES ...

  3. 代码审计-DVWA-命令注入

    首先说明,我水平不高,这是我在学习代码审计过程中写的记录笔记,难免有不正之处,还望指出. Windows 10 php7.2.10 + apache DVWA代码审计 命令执行 low <?ph ...

  4. OS命令注入

    SSL http://kb.cnblogs.com/page/162080/ http://baike.baidu.com/link?url=jPitKuDw_ncDlMbOc1SkWzM9TuKX9 ...

  5. PHP漏洞全解(二)-命令注入攻击

    本文主要介绍针对PHP网站常见的攻击方式中的命令攻击.Command Injection,即命令注入攻击,是指这样一种攻击手段,黑客通过把HTML代码输入一个输入机制(例如缺乏有效验证限制的表格域)来 ...

  6. PHP安全编程:shell命令注入(转)

    使用系统命令是一项危险的操作,尤其在你试图使用远程数据来构造要执行的命令时更是如此.如果使用了被污染数据,命令注入漏洞就产生了. exec()是用于执行shell命令的函数.它返回执行并返回命令输出的 ...

  7. Commix命令注入漏洞利用

    介绍 项目地址:https://github.com/stasinopoulos/commix Commix是一个使用Python开发的漏洞测试工具,这个工具是为了方便的检测一个请求是否存在命令注入漏 ...

  8. PHP 代码审计代码执行注入

    PHP 代码审计代码执行注入 所谓的代码执行注入就是 在php里面有些函数中输入的字符串参数会当做PHP代码执行. 如此的文章里面就大有文章可以探究了 一 常见的代码执行函数 Eval,assert, ...

  9. PHP命令注入笔记

    一.PHP命令注入介绍 在学习php相关的攻击时,遇到了Command Injection,即命令注入攻击,是指这样一种攻击手段,黑客通过把HTML代码输入一个输入机制(例如缺乏有效验证限制的表格域) ...

随机推荐

  1. js坚持不懈之15:修改html内容和属性的方法

    1. 修改 HTML 内容 <!DOCTYPE html> <html> <body> <p id = "change">原始内容& ...

  2. LeetCode算法题-Shortest Completing Word(Java实现)

    这是悦乐书的第309次更新,第330篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第178题(顺位题号是748).从给定的字典单词中查找最小长度单词,其中包含字符串lic ...

  3. linux使用Nginx搭建静态资源服务器

    最近公司需要做一个宣传片播放  视频有点大 好几百M 就想到使用Nginx来代理静态资源,在过程中出现了一些问题,比如端口没开.访问是403等,没有成功,后面慢慢查找问题,才发现大部分博客资料的都不全 ...

  4. 使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js

    前言:前端小白一枚,刚注册博客,先发个学习过程中新碰到小问题试试水吧~ 摘要:最近在学习bootstrap,偶然碰到了一个小问题,bootstrap网站也没有做过多的解释,今天分享给大家. 问题描述: ...

  5. Linux云计算运维-Redis

    Redis简介 Redis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品. Redis采用内存(In-Memory)数据集(DataSet) ...

  6. git 本地代码冲突解决,强制更新

    git reset soft,hard,mixed之区别深解 git reset --hard  强制更新覆盖本地   GIT reset命令,似乎让人很迷惑,以至于误解,误用.但是事实上不应该如此难 ...

  7. 从Java小白到阿里巴巴工程师,回顾我两年来的学习经历

    添加描述

  8. jeecg入门操作—模板配置(录入界面)

    点击online表单的模板配置,进入模板设计列表页面,点击创建模板 点击创建模板 点击激活 设计完成,点击激活(表单模板可以多个,激活状态只能有一个) 激活后,重新加入功能测试,点击添加页面,效果如下 ...

  9. mybatis动态数据更新 + 批量动态数据插入

    动态更新 <update id="updateElevator" parameterType="com.diantijiang.saas.data.elevator ...

  10. Debate CodeForces - 1070F (贪心)

    Elections in Berland are coming. There are only two candidates — Alice and Bob. The main Berland TV ...