Jason Sheh

FingerScan一款在线网站指纹识别工具


0x00 简介
FingerScan是一款由python编写,使用nginx+uwsgi+flask搭建服务端,实现的简单指纹识别工具。目前仅能识别2000多种,前端界面也不够优美,功能有待提高。

0x01 技术
一般来说指纹识别技术包括以下几种:

以广泛使用的wordpress为例:
响应头中存在以下的信息
Server:nginx/1.10.2
X-Powered-By:PHP/5.4.16
可以看出此网站有nginx+php构成

响应体中
< … href=’https://octfive.cn/wp-content/themes/flat/assets/css/flat.min.css?ver=1.7.8‘… />
< … href=’https://octfive.cn/wp-content/themes/flat/style.css?ver=4.8.3‘… />
/wp-content/为wordpress特有,ver=4.8.3甚至能识别出特定的版本信息

而在wordpress中一般会有如下特定的文件:
https://octfive.cn/wp-login.php
https://octfive.cn/xmlrpc.php
有的网站则会有相同的favicon文件,对比响应md5可以判别是否为相同的服务

综合以上信息能够大体的得出一个网站相当多的构建信息,在安全中的意义就是能够对症下药。
比如知道是使用wordpress就可以去wordpress最新的相关漏洞来进行测试,节省时间的同时也能提高准确性。

在指纹识别中最重要的就是相关识别规则的收集,我在这里使用的别人已经收集好的fofa的指纹库,对原始数据进行一定的处理之后,便于python直接处理,但是牺牲逻辑运算的功能,后续版本可能会完善相关功能。下一步的计划是爬取zoomeye的相关规则并且整合,希望能做到识别更多更准。

0x02 在线执行
由于在网页端执行比较方便,而且功能相对比较简单,并没有太多复杂运算或是需要大量带宽等耗费时间与资源的操作,把此工具放在服务器是十分合适的,并且我以后总会遇到需要把python与网页相结合的情况,因此学习了一下如何通过uwsgi实现此功能。

首先需要在服务器上安装uwsgi
pip install uwsgi

配置nginx

server {
        listen 80;
        server_name fingerprint.octfive.cn;
        root        /var/www/fingerprint;

        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:5000;
            uwsgi_param UWSGI_CHDIR  /var/www/fingerprint; # 指向网站根目录
            uwsgi_param UWSGI_SCRIPT web:app; # 指定启动程序
        }
    }

配置uswgi

module = web

callable = app
master = true
processes = 3

socket = 127.0.0.1:5000
chmod-socket = 660
vacuum = true

重启nginx

nginx -t
service nginx restart
启动uwsgi
uwsgi --ini config.ini -d web.log
注意:务必指定日志文件否则可能会输出在命令行
关闭uwsgi
killall  -9 uwsgi

0x03 总结
距离上次更新已经很久了,这次的文章也没有太多内容就是从其他项目里抽出一个功能,做成了网页的形式,总共也就一两天的工作量。其实还有一篇还安静的呆在草稿里 希望下次能多写一些有技术含量的文章。其实我也想过翻译一些twitter上medium上老外写的挺好的文章,但是我想了想我都看完了,在翻译成中文对自己的提升也不太大,要说对英语方面的帮助还是多背背单词吧。

大三日程过半,12,14周考完试后可以预见时间较多,那个时候把毕业设计写个小的框架出来,再利用一下最近自己一直在升级的新的工具突然觉得还能再写个文章,看看能不能再找几个漏洞出来,这些基本上是我的目标了。