利用grep查找webshell

2012-06-15 221550人围观 ,发现 13 个不明物体 文章系统安全

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。

利用grep命令我们可以查找常见的漏洞、webshell和其他恶意文件。本文使用的grep版本为2.9,如果你使用一个低于2.5.4的grep,那本片文章中的一些命令可能无法正常工作。可以用grep -v或grep -version确定一下版本。你也可以使用grep –help查看更多信息。如下图:

发现漏洞的常见方法:

为什么大多数web应用程序都会发现一些不安全的代码,就是因为调用了一些不安全的函数,而又未进行过滤。例如:命令注入或远程代码执行,可以执行客户端传递的参数。这里常常会用到shell_exec函数。我们可以用grep命令搜索文件中存在shell_exec函数的地方,如下:

grep -Rn “shell_exec *( ” /var/www

上图中,我们可以看到可能存在漏洞的函数行和路径。

另一个例子:include require include_once和require_once都是可能存在问题的地方,它可能会造成本地文件包含漏洞。我们可以使用grep查找出现该函数的地方然后进行测试判断,如下:

grep -Rn “include *(” /var/www
grep -Rn “require *(” /var/www
grep -Rn “include_once *(” /var/www
grep -Rn “require_once *(” /var/www

以上两个简单的例子可以做为白盒挖掘漏洞的参考,下面介绍一下查找webshell和其他恶意文件的方法:

常见的webshell都会包含一些功能,如执行命令、下载文件、编辑文件、反弹连接等行为。除了常见的shell_exec,base64_decode和eval,还有其他的一些特征码,比如phpspy2006中会包含“Version:2006,proxycontents”,phpspy2008中会包含“phpspypass,goaction(‘backconnect”等等。还有以下一些常见的特征:

phpinfo
system
php_uname
chmod
fopen
flclose
readfile
edoced_46esab
passthru

我们可以用grep搜索包含这些函数的文件,如下:

grep -Rn “shell_exec *(” /var/www
grep -Rn “base64_decode *(” /var/www
grep -Rn “phpinfo *(” /var/www
grep -Rn “system *(” /var/www
grep -Rn “php_uname *(” /var/www
grep -Rn “chmod *(” /var/www
grep -Rn “fopen *(” /var/www
grep -Rn “fclose *(” /var/www
grep -Rn “readfile *(” /var/www
grep -Rn “edoced_46esab *(” /var/www
grep -Rn “eval *(” /var/www
grep -Rn “passthru *(” /var/www

当然这些可以合并成一条命令,如下:

grep -RPn “(passthru|shell_exec|system|phpinfo|base64_decode|chmod|mkdir|fopen|fclose|readfile|php_uname|eval|tcpflood|udpflood|edoced_46esab) *\(” /var/www

这些评论亮了

  • leo108 (1级) 世界上有10种人,一种懂二进制,另一种不懂 回复
    菜刀连接地址填shell.php?a=assert,密码填b
    )10( 亮了
  • leo108 (1级) 世界上有10种人,一种懂二进制,另一种不懂 回复
    preg_replace也是个敏感函数,还有就是$_GET['a']($_POST['b']);这种的,都不是很好扫
    )7( 亮了
发表评论

已有 13 条评论

取消
Loading...
css.php