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

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

 

posted @ 2019-03-12 14:44  admin_root_root  阅读(783)  评论(0编辑  收藏  举报