关于弱口令的思考及实战演练

0x00 前言


前段时间,在做mysql弱口令检测优化,痛苦的把mysql源码读了一遍。业余时间就一直在想关于弱口令的林林总总。其实很多个人信息泄露,都是由于缺乏安全意识,使用12345 888888 asdfghjkl等弱密码造成的。

今天我就用实际行动来证实一下,弱口令的危害。

0x01 思路


海康威视等厂商旗下的设备,大多都采用了很简单的初始密码,而且大部分用户也不会去修改初始密码。
今天我们来验证一下,能否通过弱口令来访问这些公共设备。

首先我们需要一个引擎,来抓取暴露在互联网上的在线设备的信息,而恰恰就有这么一个强大的引擎:

https://www.shodan.io 是一个检索全球在线设备的引擎。比方说输入关键字“Apache”,就能检索到世界范围内的很多Apache主机的详细信息。

好了,利用这个引擎,我们就来做一次有趣的编程。

0x02 准备环境:


1.  操作系统,我们首选Linux
2.  编程语言,Python3
3.  shodan网站引擎的python库(以及API_KEY)

确认Python3已经安装,然后安装第三方shodan库:

sudo pip3 install shodan

0x03 Shodan API 使用:


通过下面一段代码,可以发现这个API的使用还是很简单的


# !/usr/bin/env python3
# -*- encoding:utf-8 -*-

'''
read the API doc, we know the format of results
{
        'total': 8669969,
        'matches': [
                {
                        'data': 'HTTP/1.0 200 OK\r\nDate: Mon, 08 Nov 2010 05:09:59 GMT\r\nSer...',
                        'hostnames': ['pl4t1n.de'],
                        'ip': 3579573318,
                        'ip_str': '89.110.147.239',
                        'os': 'FreeBSD 4.4',
                        'port': 80,
                        'timestamp': '2014-01-15T05:49:56.283713'
                },
                ...
        ]
}
'''

__author = 'zhe'

import shodan
import json
import os

MY_SHODAN_API_KEY = 'replace to your own api key'
api = shodan.Shodan(MY_SHODAN_API_KEY)


def GetRawJsonPath(key_words):
    file_path = os.path.join(os.getcwd(), key_words + '_raw.json')
    return file_path


def Search(key_words):
    try:
        # Call api to search key_words, and save results in a dict
        results = {}
        results = api.search(key_words)
        print( ('search %i matched result about %s') % (results['total'], key_words))

        # We save the results to a json file
        with open(GetRawJsonPath(key_words), 'w') as f:
            f.write(json.dumps(results))
            print(('results saved to path: %s') % GetRawJsonPath(key_words))

    except shodan.APIError as e:
        print ('Error: %s') % e




def test():
    Search('NVR Webserver')


if __name__ == '__main__':
    test()

下面就是我们运行python脚本后得到的Json文件:


json 格式的搜索结果

0x04 信息提取


打开刚刚得到的Json文件,我们发现详细,但是我们只需要其中的一小部分信息。
所以接下来我们来提取对我们有用的信息
上代码

def Parse(key_words):
    data = {}
    filter_data = []
    with open(GetRawJsonPath(key_words), 'r') as f:
        data = json.load(f)

    for item in data['matches']:
        elem = {}
        elem['city'] = item['location']['city']
        elem['ip'] = item['ip_str']
        elem['port'] = item['port']
        filter_data.append(elem)

    # save filter json to file
    with open(GetFilterJsonPath(key_words), 'w') as f:
        f.write(json.dumps(filter_data))
        print(('filter results saved to path: %s') % GetFilterJsonPath(key_words))

同样,运行脚本后,得到结果:

[
  {
    "city": "New Rochelle",
    "ip": "72.69.197.*",
    "port": 80
  },
  {
    "city": "Baotou",
    "ip": "116.116.225.*",
    "port": 80
  },
  {
    "city": "Baotou",
    "ip": "1.31.92.*",
    "port": 80
  }
...
]

0x05 先验证一下


这时候,弱口令就排上用场了,我们随机验证几个:

Paste_Image.png

很容易就登陆进去了

Paste_Image.png
Paste_Image.png

0x06 批量验证,筛选有效设备


现在就需要了解HTTP协议了,我先去恶补一下网络协议>>>

这一步,我的思路是,用脚本批量构造POST请求,分别验证每一个设备密码是否正确(这里可以考虑使用弱口令表,来暴利破解)
但是现在就卡在了,如何构造正确的POST请求,请求中包括用户名和密码信息。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,464评论 25 707
  • 一、快速术语检索 比特币地址:(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串...
    不如假如阅读 15,885评论 4 88
  • 有一本畅销书叫《断舍离》,讲的是把家里不常用的东西扔掉。有好多人愿意囤积货物,特别是一些老人,总不舍得扔东西。我认...
    臧叔阅读 654评论 0 3
  • 七夕刚过,当所有人还沉浸在那天属于自己的浪漫时刻的时候,我们科室的所有同事却被重症监护室那一大束刺眼的红色玫瑰花感...
    那时那刻阅读 283评论 0 1