首页 » Web前端 » php博客法式xunblog技巧_开源安然项目之马脚治理xunfeng平台的运用研究

php博客法式xunblog技巧_开源安然项目之马脚治理xunfeng平台的运用研究

访客 2024-11-06 0

扫一扫用手机浏览

文章目录 [+]

信息安全小白一枚,梦想是成为精通多条技能栈的野生程序员,对付各方向的打算机技能都抱有激情亲切,尤其喜好信安大佬们办理问题的那些灵巧的思路和办法。
来到这里的目的便是拓展视野,在打好根本的同时尽可能提升自己的能力。

1、项目概要

php博客法式xunblog技巧_开源安然项目之马脚治理xunfeng平台的运用研究

巡风是一款适用于企业内网的漏洞快速应急、巡航扫描系统,通过搜索功能可清晰的理解内部网络资产分布情形,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表。

php博客法式xunblog技巧_开源安然项目之马脚治理xunfeng平台的运用研究
(图片来自网络侵删)

软件只作初步测试,无攻击性行为。

软件主体分为两部分:

①网络资产识别:通过用户配置的IP范围定期自动的进行端口探测(支持调用MASSCAN),并进行指纹识别,识别内容包括:做事类型、组件容器、脚本措辞、CMS。

②漏洞检测引擎会根据用户指定的任务规则进行定期或者一次性的漏洞检测,其支持2种插件类型、标示符与脚本,均可通过web掌握台进行添加。

参考链接:https://github.com/ysrc/xunfeng

2、项目安装

1. 运行环境

①操作系统

项目适配的64位操作系统列表:

Debian7、8

Ubuntu 14.04、14.10、16.04、16.10

CentOS 7

本次安装项目利用的操作系统版本:

CentOS-7-x86_64-DVD-1908.iso (点击链接可直接下载)

②软件依赖

Python2.7

Mogodb3. 2 .0

2. 安装、支配步骤

(不推举,可跳过)手动安装

在安装之前,建议改换海内yum源

①修正时区

确保时区为Asia/Shanghai

如果不在或不能确定,实行如下命令:

echo TZ='Asia/Shanghai'; export TZ >> ~/.bash_profile && source ~/.bash_profile

②安装操作系统依赖

yum -y install python-devel openssl openssl-devel gcc sqlite sqlite-devel mysql-devel libxml2-devel libxslt-devel git

③(可选)升级CentOS7自带的Python2.7,5

下载py2.7:wget https:// www.python.org /ftp/python/2.7.18/Python- 2.7.18.tgz

解压:tar zxvf Python-2.7.18.tgz

进入解压后的目录中,安装并配置编译环境:

./configure --prefix=/usr/local

make

make altinstall

备份原有Python(备份后利用“python 2.7.5”可以打开旧版本):

mv /usr/bin/python /usr/bin/python2.7.5

链接新版本并查看:

ln -s /usr/local/bin/python2.7 /usr/bin/python

python

如图,升级成功

配置yum:

vim /usr/bin/yum

将#!/usr/bin/python改为#!/usr/bin/python2.7.5

用同样方法修正文件:/usr/libexec/urlgrabber-ext-down

④安装pip

如果未安装pip,建议安装pip:

下载:wget https://sec.ly.com/mirror/get-pip.py --no-check-certificate

安装:python get-pip.py

⑤安装数据库:

下载:wget https:// sec.ly.com /mirror/ mongodb-linux-x86_64-3.4.0.tgz

解压:tar -zxvf mongodb-linux-x86_64-3.4.0.tgz

将二进制文件放置到指定位置:cp -r mongodb-linux-x86_64-3.4.0 /usr/local/mongodb

变动配置文件/etc/profile:

配置如下环境变量:

export MONGODB_HOME=/usr/local/mongodb

export PATH=$PATH:$MONGODB_HOME/bin

运用配置:

source /etc/profile

配置数据库:

mkdir /var/lib/mongodb/

cd /usr/local/mongodb

mkdir data

cd data

mkdir db

cd ..

mkdir logs

cd logs

touch mongodb.log

cd ..

vi mongodb.conf

配置文件内容如下:

把稳,上述配置是为了演示方便,请勿照搬,这样的配置不符合运维规范0.0,正常来讲数据库的数据(data)和日志(logs)是要分开在两块盘上存储的。

启动数据库做事:

./mongod -f mongodb.conf

客户端连接数据库:

./mongo

配置数据库添加认证:

个中,user和pwd项为设置的账号和密码,可根据情形变动

⑥安装巡风

阿里源已失落效,官方源下载慢,建议最开始先挂着一个终端进行下载

git clone https://github.com/ysrc/xunfeng.git

下载完成后,先配置好数据库:

进入xunfeng的db目录下:

mongorestore -h 127.0.0.1 --port 27017 -d xunfeng .

修正config.py:

修正run.sh:

根据require.txt安装Python依赖库:

pip install -r requirements.txt -i https://pypi.doubanio.com/simple/

上述这些配置信息必须与mongodb中相应的配置同等

运行xunfeng/run.sh

总体来说很麻烦,特殊随意马虎出问题,我在末了一步实行运行脚本时出错,连像样的报错信息都没有显示QAQ,终极还是采取了下面的安装流程。

(非常推举)基于docker安装支配

①Docker的安装

(如果已经安装了docker,此步可以跳过)

docker依赖环境的安装:

yum -y install yum-utils device-mapper-persistent-data lvm2

设置下载docker的镜像源(阿里云):

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker:

yum makecache fast

yum -y install docker-ce

启动docker:

systemctl start docker

设置开机自启:

systemctl enable docker

测试docker:

docker run hello world

②安装巡风

利用git命令下载巡风(没有git先用yum安装git):

git clone https://github.com/ysrc/xunfeng.git

在中心仓库中拉取xunfeng的镜像:

docker pull ysrc/xunfeng

创建docker容器:

docker run -d -p 8008:80 --name xunfeng 镜像id

Tip:上述命令实在就相称于在Linux中创造出了一个进程级的隔离环境,大略理解为一块独立空间,然后将那块空间的80端口映射到了外部机器的8008端口上,因此我们在表面访问8008端口,就可以访问到容器中对应的做事

此容器中的xunfeng干系信息如下:

又一个Tip:如果在启动docker容器时涌现了:

WARNING: IPv4 forwarding is disabled. Networking will not work.

问题产生缘故原由:没有开启IPv4转发

办理方法(开启IPv4转发):

vi /etc/sysctl.conf

添加:net.ipv4.ip_forward=1

重启网络做事:systemctl restart network

参考链接:

https://www.51ittech.com/knowledge-base/centos-7-upgrade-python2-to-python2-last-version/

https://www.jianshu.com/p/d4ae4f5d283a

https://blog.csdn.net/u012199908/article/details/53056819

https://blog.csdn.net/five3/article/details/8904635

https://blog.csdn.net/github_38885296/article/details/80619191

https://www.jianshu.com/p/3a1c539e7355

https://blog.csdn.net/Jas0n_Liu/article/details/78179762

https://github.com/ysrc/xunfeng

3、项目利用

0. 巡风的事情流程简述

经由初步体验,笔者大概理解了巡风的事情流程:

爬取扫描内网存活IP及其开放的端口,进而天生内网资产统计信息,并进行周期性的更新。

作为用户,我们可以在诸多资产信息中搜索筛选出所需,并可以通过创建任务的办法,周期性或一次性地利用插件对这些内网IP进行漏洞扫描,检讨内网的安全情形,能够非常方便地将结果以excel表格的办法导出。
必要时,我们还可以自行编写POC来丰富插件库。

巡风的优点同样在于,它可以同时探测、存储、管理大量的内网资产信息,多线程大大提高了它的扫描效率。

1. 内网资产探测

进入xunfeng首页,登录

点击配置

找到网络资产探测列表这一项,此项为必填项,不然项目无法正常事情。

(通过指定IP范围的办法,指定爬虫引擎的探测范围)

设定好后,点击“更新”,扫描将被急速触发。

此外,爬虫引擎的选项中还可以设定一些做事类型、CMS、代码措辞等的识别规则,TCP连接超时时间,资产探测周期等,每一项都带有利用提示(项目名阁下的灰色的问号标识)。

在扫描引擎中,可以开启MASSCAN进行端口扫描(右侧是扫描的线程数),把稳MASSCAN的路径要精确(图中root该当改为opt):

在这里也同样可以设置进行一些诸如进程数、白名单、超时时间等跟扫描干系的参数配置。

2. 筛选内网资产,针对性地创建任务

可以根据搜索功能的提示,按照指定格式查询内网资产

如果当前没搜索到所需的目标资产,我们可以选择手动新建目标:

(纵然是我们手动新建的,只要目标无效,都会被巡风自动删除)

勾选我们的目标后,可以针对其新建任务:

(完善任务信息后,如果目标符合所选插件的实行条件,添加成功,否则添加失落败)

参考链接:

http://blog.icxun.cn/hack/Intranet/672.html

4、利用案例

1. 前期准备

重新开了一个docker容器,为了方便,将端口直接映射到80。

目前巡风装在虚拟机上,为了让内网资产数据更丰富些,我们其余多开几台虚拟机。

以下为开启的所有虚拟机:

2. 扫描内网资产信息

设置探测范围后点击更新

等待一会后,创造扫描结果中多出了一个ssh做事:

勾选,新增任务:

接着又用同样的办法,手动增加了一个目标,添加了一个http干系的漏洞扫描任务。

等待一会,两个任务都有了却果:

结果是:ssh弱密码扫描到一个漏洞,而http的没有扫描到漏洞。

ssh弱密码扫描结果如下:

3. 尾声

准备结束案例的时候,点进统计页面创造所有的内网资产都已经被探测出来了:

模糊查询的结果(列出了所有资产信息,页面按比例缩小了一些):

五、补充:关于插件

1. 添加自定义插件的办法

点击巡风导航栏的“插件”一项进入插件管理页面:

可以看到项目内置有很多插件,我们点击右上角的“新增插件”:

插件的格式分两种,一种是Json格式,另一种是脚本。

Json格式的插件添加很大略,根据提示完成即可:

如果想要添加脚本格式的插件,直接将脚本拖拽上传即可:

(下面着重给出Python脚本格式插件的添加和利用案例)

2. 案例——脚本插件的编写和利用

巡风平台中已经内置有一些插件(下图为个中的一部分):

①准备事情

措辞环境:Python2.7

实验工具:Tomcat8.5.32

把稳!
由于插件脚本终极是要在docker中运行的,脚本中的网络连接默认会被靶机的防火墙拦截,此时最大略的办理办法是关闭靶机的防火墙(在我们不知情的情形下,插件脚本发出的要求被防火墙拦截后,代码会抛出非常,如果没有作任何处理,巡风页面将不会有任何提示,也不会有日志记录,这是非常随意马虎踩到的坑!
)。

②CVE-2020-1938 Tomcat-Ajp协议漏洞先容

Tomcat利用两种连接器和客户端进行通信,一种是耳熟能详的http连接器,另一种是ajp连接器。

关于ajp协议,百度百科上的阐明为:

AJP(Apache JServ Protocol)是定向包协议。
由于性能缘故原由,利用二进制格式来传输可读性文本。
WEB做事器通过 TCP连接和SERVLET容器连接。

大略来讲,便是除了http之外,客户端还可以通过ajp协议同Tomcat做事器进行通信,而本次利用的漏洞就涌如今Tomcat的ajp协议中。

CVE-2020-1938是文件包含漏洞,攻击者可以利用此漏洞读取或包含Tomcat上webapp目录下的所有文件(如配置文件、源代码等),该漏洞被国家信息安全漏洞库评级为高危。

受漏洞影响的Tomcat版本如下:

图片截取自:https:// www.anquanke.com /post/id/199448

③漏洞复现

在编写插件之前,前辈行一个大略的漏洞复现。

POC来源:https:// github.com / YDHCUI / CNVD -2020-10487-Tomcat- Ajp - lfi

(在此之前,已经在靶机上搭建支配好了Tomcat8.5.32)

上图中,我们利用此漏洞成功读取出了Tomcat做事器上WEB-INF目录中的web.xml配置文件。

可见其危害性之大。

查看POC代码的关键部分:

Ajp协议的要求头:

Tomcat中涌现漏洞的三个属性:

④编写插件

手中已经拥有了POC,我们只需在其根本之上进行改写即可。

不雅观察POC的主事情流程代码:

argparse模块用于运行脚本时从外部传参的情形,而我们不能规定让巡风如何去运行这个POC。
紧张修正的便是这个部分。

不丢脸出,主流程便是先实例化Tomcat工具,然后调用该工具下的perform_request方法取得结果,终极处理结果工具并输出字符串信息。

个中的重点是:

①Tomcat工具的初始化须要两个参数:target和port;

②perform_request方法有两个返回值,而在解包过程中第一个返回值是定义了一个单下划线变量去存储的,这解释第一个返回值不主要,可以忽略,最主要的结果在第二个返回值data中。

该POC修正为巡风插件的策略为:

①删除所有干系argparse模块的部分,采取巡风插件的格式进行编写,并在实例化工具时精确通报参数。

②保留代码中对结果工具data的处理部分,改变末了的输出办法(把打印输出改为返回结果字符串)

经由修正后的主流程代码截图如下:

运行测试脚本,功能正常:

⑤添加插件

添加成功:

在插件库中查看:

把稳!
巡风插件对代码格式的检测非常严格,本人编写代码时经由了多次考试测验,创造代码必须完备符合巡风插件的格式规范(包括代码开头的注释)才可成功添加。

④测试自定义插件

新建目标,并为目标新建任务,指定添加的自定义插件:

等待数秒钟,得到结果(对测试代码的输出部分进行了小改动):

可以看到自定义插件的扫描结果也被计入了统计信息:

3. 从官方渠道安装插件

Github上唯一透露的官方渠道便是上图中的公众年夜众号,目前可以确定的是,官方渠道的插件已经良久都没有更新过了,不过这并不妨碍用户利用自行编写的或网络上网络到的POC进行插件的制作。

xunfeng中内置的插件下方的信息栏一样平常会有作者设置的链接,POC和漏洞先容一样平常都会包含在目标网页中:

参考链接:https:// github.com / ysrc / xunfeng

5、总结

巡风总体来讲是一个非常好用的开源项目,紧张浸染便是内网家当的探测和漏扫,可以自定义插件的功能更是增加了项目的可延展性,搜索功能做得也比较人性化,还支持干系数据的Excel形式导出,此外,它对付许多不同类型的做事都有归类的标签,这是一个亮点。

不过也想说一下缺陷:

首先是探测和扫描的过程中短缺给用户的反馈,让用户无法获知程序目前在做什么,进展如何(尤其是基于docker搭建的项目,进入到docker容器的内部去翻找项目的扫描日志是非常繁琐的);

第二点是前端页面的展示问题,扫描任务完成后,无法看到任务的简单情形,想知道是否扫出了漏洞,须要一个个点开来查看详细情形,这个会严重拖慢事情进度(尤其是在任务量大的情形下)。

末了一点便是,个人认为该项目再加上一个“立即探测”的功能就更好了,目前的状态是每次扫描至少间隔一小时,无法知足很紧急的场景需求。

(Knifer7:希望自己有朝一日能够读懂这类安全软件的源码)

国科学院学生会是由国科学院辅导开展的学员做事型组织,致力于合营国科学院完成日常事情的开展以及强化磨炼学员的自身职业素养与专业技能,培植部门有技能部和综合部。

如果你们也想提升自我,又或者是想认识这些和你们一样精良的小伙伴,那就赶紧联系辅导老师并加入我们吧!

学生会信箱:

student@goktech.cn

标签:

相关文章