findWebshell – 基于python的webshell检查工具
- 发表于
- webshell
findWebshell简介
findWebshell是一款基于python开发的webshell检查工具/webshell扫描工具,可以检查任意类型的webshell后门。
该工具具有一定的扩展能力,能够通过字典添加以及插件开发两种方式,对findwebshell进行扩展。
因为是基于python开发的小工具,只要有python运行环境就可以了。
https://github.com/he1m4n6a/findWebshell
使用说明
1 2 3 4 5 6 7 8 9 |
Usage: main.py [options] Options: -h, --help show this help message and exit -p PATH, --path=PATH input web directory filepath -o OUTPUT, --output=OUTPUT create a html report -e php|asp|aspx|jsp|all, --ext=php|asp|aspx|jsp|all define what's file format to scan |
示例
1 2 3 4 |
python main.py -e php -p /var/www/test -o output -e 网页格式 -p 扫描的路径 -o 生成的html文件名,默认生成report.html |
扫描结果:
开发文档
字典添加
directory目录下的sensitiveWord.py定义的是后门中的敏感关键字,可以手动添加,格式为{"关键字":"类型"}
1 2 3 4 |
php_sensitive_words = { "www.phpdp.org":"PHP神盾加密后门", "www.phpjm.net":"PHP加密后门" } |
directory目录下的webshell.py定义的是webshell列表,直接添加webshell到列表里
1 2 3 4 5 |
php_webshell = [ "后门.php", "xxoo.php", "一句话.php" ] |
插件开发
命令规范
插件命名格式:网页类型_后门类型-plugin.py,示例
1 2 3 |
php_eval_assert-plugin.py php_preg_replace-plugin.py asp_execute-plugin.py |
函数规范和返回值,函数格式
1 2 |
def judgeBackdoor(fileCtent) 成功返回后门类型,失败返回None |
示例
1 2 3 4 5 6 7 |
def judgeBackdoor(fileCtent): if keyword in fileCtent: result = re.compile(rule).findall(fileCtent) if len(result) > 0: return backdoorType else: return None |
我们扩展的插件基本上是基于一个原理,即通过正则表达式在读入的文件内容筛选出可疑的字段,从而判断是否存在特定类型的webshell,这样的方式一般需要较为强大的webshell特征代码储备,但是其本身还是对文件内容的扫描,并没有基于行为等。
优点
- 开源
- 文件小,扫描速度快
- 容易扩展,存在字典方式和插件方式,这两种方式。
缺点
- 字典方式和插件方式都是静态的,是基于对webshell文件名、敏感文件内容文本或者webshell内容中的特征代码的识别。其实现方式还是比较简单粗暴的。
原文连接:findWebshell – 基于python的webshell检查工具
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。