web指纹识别工具xapp


一、简介

xapp是一款专注于web指纹识别的工具。你可以使用xapp对web目标所使用的技术进行识别,为安全测试做好准备。

项目地址:https://github.com/chaitin/xapp

  1. 支持web指纹识别,可以快速识别web目标的技术栈,为安全测试提供基础数据。
  2. 规则语法与xray PoC保持一致,简单易懂,适合新手开发者快速上手。
  3. 自定义指纹规则,实现精细逻辑分支,增强识别的准确性和灵活性。
  4. 开放共创:鼓励社区参与,共同在GitHub上构建标准的指纹规则集,分享自己的指纹规则集,免费供所有人使用。
  5. 性能优化:专门针对同时加载大量指纹的场景进行优化,提高运行效率。

二、安装

2.1 下载安装

releases中下载对应的系统的最新版即可,运行xapp -h即可查看帮助。

如下图所示,创建一个目录xapp,然后将下载的文件放在xapp目录中,+x权限,更改名字为xapp,测试执行。

2.2 配置环境变量

vim ~/.zshrc

source ~/.zshrc

2.3 配置文件

执行xapp之后,会在即目录.xray目录下生成相应的配置文件,如果不指定xapp-config.yaml,使用默认的配置文件。

三、使用

3.1 指定指纹扫描单个目标

xapp -r xxx.yml -t https://www.example.com
echo https://www.example.com | xapp -r xxx.yml

3.2 指定指纹扫描多个目标

xapp -r xxx.yml -t https://www.example.com -t https://www.example2.com
xapp -r xxx.yml -i targets.txt
cat targets.txt | xapp -r xxx.yml

3.3 指定多个指纹进行扫描:

xapp -r xxx.yml -r yyy.yml -t https://www.example.com
xapp -r "./finger/web/*.yml" -t https://www.example.com
xapp -r "./finger/**/*.yml" -t https://www.example.com

3.4 指定group进行扫描:

xapp -g web.list -t https://www.example.com

四、参数

示例:
     Scan single target:       xapp -t http://192.168.1.1:8000
     └>  multiple targets:     xapp -t http://192.168.1.1:8000 -t http://192.168.1.1:8001
     └>  target file:          xapp -i a.txt
     Show plugin:              xapp -v>  run one plugin:       xapp -t http://192.168.1.1:8000 -r "./finger/finger.yml">  run plugins:          xapp -t http://192.168.1.1:8000 -r "./finger/*.yml"


描述:
   web application scanner

命令:
   lint     对 yaml 脚本进行静态格式校验
   score    对 yaml 指纹脚本进行评分
   help, h  Shows a list of commands or help for one command

选项:
   HTTP客户端:
     --hrps value, --host_rps value             对于单个Host的每秒最大发送请求数: 小于等于0时不限制每秒最大发送请求数 (default: 0)
     --http-proxy value [ --http-proxy value ]  HTTP客户端代理: [http|https|socks5://][username[:password]@]host[:port] 仅对http连接生效
     --retry value                              请求失败重试次数 (default: 2)

   插件展示:
     -v  列出启用的插件 (default: false)

   日志管理:
     --debug            调试:打印debug日志 (default: false)
     --log-level value  指定等级:debug/info(默认)/warn/error/fatal/disable
     --silent           静默:不打印banner,日志等级设置为fatal (default: false)

   目标拆解:
     -i value               目标文件: 指定含有扫描目标的文本文件
     -t value [ -t value ]  扫描目标: 可以为URL/IP/域名/Host:Port等多种形式的混合输入 (默认)

   结果输出:
     -o value [ -o value ]  结果输出: 指定保存结果的文件路径

   连接管理:
     --proxy value    全局代理:socks5://[username[:password]@]host[:port] 仅支持socks5,对所有连接生效
     --timeout value  读超时: 从连接中读取数据的最大耗时 (default: 5s)

   通用:
     --config value                                           配置文件:使用指定的配置文件,如果文件不存在则自动创建默认配置文件
     -d value, --disable value [ -d value, --disable value ]  禁用:禁止特定插件执行,仅支持输入插件名
     -g value, --group value [ -g value, --group value ]      插件组:执行指定的插件组文件
     -r value, --run value [ -r value, --run value ]          仅执行:仅执行指定的插件,支持glob/绝对路径/相对路径

五、插件存储库

地址:https://github.com/chaitin/xray-plugins

5.1 仓库用途

为各类插件创建了一个专门的存储库,旨在方便大家共享和使用各种插件。

这里主要收录的是开源的、转化成 xray格式的脚本,以供大家使用。

5.2 插件文件格式

本仓库中的插件包括指纹、POC 以及一些指定运行的文件列表。推荐使用以下工具来运行这些插件:

  • 指纹:推荐使用 xapp 运行
  • POC:推荐使用 xpoc 运行
  • Group List:其中存放着一些梳理过的指定运行的文件列表,推荐使用xapp、xpoc -g 运行。

5.3 ⚠️ 使用须知

请注意,本仓库中的插件仅经过 xlint 验证,未经过实际靶站的验证,因此这些插件的内容可能并不一定完全可用。我们建议在使用之前自行验证其有效性。

什么是xlint?

xlint 是一款专门用于对 xray 的 YAML 插件进行格式检测的工具,通过使用该工具可以对脚本进行规范化检测,确保脚本能够正常运行。

地址:https://github.com/chaitin/xray-plugins/releases

使用 -f 参数可以指定检测一个或多个文件。通过使用多个 -f 参数,您还可以指定检测多个文件夹中的文件。例如:

xlint -f xxx.yml
xlint -f "./finger/*"
xlint -f "./finger/*" -f "./poc/*"
  • 使用--rules可以指定检测某一个规则,默认不写就全部执行
    • celcheck
    • schemacheck
    • payloadcheck
    • transportcheck
    • unusedcheck

5.4 仓库结构

翻了一下仓库内容,插件并不多。

5.5 使用

直接git clone下来,使用的时候用参数指定插件。

五、实战使用

使用默认方式扫描一个Laravel站点,没有识别出相应的指纹。

有效性堪忧,需要额外下载指纹规则。

https://github.com/chaitin/xray-plugins

截屏2025-01-22 11.36.49

加载插件执行,效果依然很差。插件的覆盖度明显不够。


文章作者: 司晓凯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 司晓凯 !
  目录