• PHP代码审计之命令注入


    命令注入

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

    注入的种类有很多,而不仅仅是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

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

  • 相关阅读:
    mysql 如何优化left join
    mysql按日期分组(group by)查询统计的时候,没有数据补0的解决办法。
    JVM中各种变量保存位置
    CDN原理
    为什么家里的宽带的IP显示的是外地?
    2017 年 PHP 程序员未来路在何方?
    Nginx开启Gzip压缩提高页面加载速度
    git如何强制用远程分支更新本地
    真正的S2b其实是S2b2c
    判断JS数据类型的几种方法
  • 原文地址:https://www.cnblogs.com/php09/p/10516616.html
Copyright © 2020-2023  润新知