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