用户
搜索
  • TA的每日心情
    奋斗
    2017-6-30 09:26
  • 签到天数: 161 天

    连续签到: 1 天

    [LV.7]常住居民III

    版主

    pypy

    Rank: 7Rank: 7Rank: 7

    23

    主题

    673

    帖子

    1945

    魔法币
    收听
    3
    粉丝
    19
    注册时间
    2015-11-12

    签约作者

    发表于 2017-5-6 11:28:33 43384
    本帖最后由 xiaoye 于 2017-5-6 14:52 编辑
    难易程度:★★★
    阅读点:linux;python;python web;
    文章作者:xiaoye
    文章来源:i春秋
    关键字:网络渗透技术,django实现渗透测试系统

    前言
    之前用Django实现了一个简陋的在线ip定位
                                                                                     2.PNG
    界面丑了点。。在下前端渣,,有需要的可以自行在渲染的html文件中美化;这次我们来实现一个在线字典生成,这个不是w8ay表哥写的那个社会工程学字典,而是最近春秋ADO老师更新的高精度字典生成中的代码,自己对它进行了优化,并且集成到了Django里,主要是根据目标url,来生成相关的口令,往往用于爆破

    一、核心模块--字典生成
    ADO 老师介绍的一个模块:exrex,感觉挺好用的

    安装:pip install exrex
    项目地址:https://github.com/asciimoo/exrex

    常见用法:
                                                                dic01.PNG
    exrex.generate()函数里写入的是正则,然后exrex会生成所有符合该正则的字符串,我们就利用这个特性,传入一个与常见弱口令、字符、以及与url相关的字符有关联的正则,然后自动生成大量字典。

    核心代码dic_generate.py
    [Python] 纯文本查看 复制代码
    '''
    @author: xiaoye
    '''
    #coding: utf-8
    import exrex
    
    '''a = list(exrex.generate('[Pp][a@]ssw[Oo]rd'))
    print a'''
    
    dic_bad = ['com', 'www', 'bbs', 'cn', '/', 'org', 'edu', 'xyz', 'top']
    filter_list = ['!', '@', '#', '201']
    dic_final = []
    
    def url_split(url=''):
        if '://' in url:
            domain = url.split('://')[1] 
        else:
            domain = url
        #print domain
        if '/' in domain:
            domain = domain.split('/')[0]
        #print domain
        url_dics = domain.split('.')
        #print url_diclist
        return url_dics
        
        
    def dic_create(url_dics):
        with open('D:\\django_test\\webtool\\tool\\dic_rule.ini', 'r') as f:
            for i in f.readlines():
                i = i.strip('\n')
                if i[0] != '#':
                    rule = str(i)
        with open('D:\\django_test\\webtool\\tool\\comm_dic.txt', 'r') as f:
            comm_dics = f.readlines()
        dic_final = []
        for url_dic in url_dics:
            if url_dic not in dic_bad:
                for comm_dic in comm_dics:
                    dics = list(exrex.generate(rule.format(url_dic=url_dic, comm_dic=comm_dic.strip('\n'))))
                    for dic in dics:
                        if (len(dic) > 4) and (dic[0] not in filter_list):
                            dic_final.append(dic)
        #print dic_final
            fin = '.'.join(url_dics)
            dic_final.append(fin)
        return dic_final
    
    #dic_create(url_split())    
                
        
                

    整体思路是ADO老师的,自己又增加了一些过滤条件,把生成的一些过于简单的口令删去了;

    规则写入了一个配置文件dic_rule.ini:
    [Python] 纯文本查看 复制代码
    #example:{url_dic}[!@#]{comm_dic}
    #{url_dic}[@#]{comm_dic}
    #{url_dic}[#]{comm_dic}
    (|{url_dic})(|@|#|!)(|{comm_dic})(|201[4567])
    #(|{url_dic})(|@|#|!|!@#)(|{comm_dic})(|201[4567])


    可以自增多条规则,将不用的注释掉
    然后我们要将它当作模块使用

    二、Django集成
    前篇文章已经写了一些基础,这里不多赘述
    首先肯定是在urls.py中增加一个url正则:
    [Python] 纯文本查看 复制代码
    from django.conf.urls import url
    from django.contrib import admin
    from tool import views as tool_views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
            #url(r'^tool1/$', tool_views.tool1),
            url(r'^tool/ip/$', tool_views.ip_api),
            url(r'^tool/dict/$', tool_views.dic),
    ]

    tool/dict/就是我们的增加项,tool_views.dic就是对应于url的视图函数

    接着完善dic视图函数,在views.py:
    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    from django.http import HttpResponse
    from tool import ipapi
    from tool import dic_generate
    
    from django.shortcuts import render
    
    # Create your views here.
    
            
    def dic(request):
            url = request.POST.get('url', '')
            url_dics = dic_generate.url_split(url)
            dic_final = dic_generate.dic_create(url_dics)
            return render(request, 'tool/dic.html', locals())


    渲染了一个dic.html:
    [HTML] 纯文本查看 复制代码
    <html>
    <head>
    <title>dic create by xiaoye</title>
    
    </head>
    <body>
    <div>
    <form action='http://127.0.0.1:8080/tool/dict/' method='POST'>
    {% csrf_token %}
    <input type='text' name='url' >
    <input type='submit' name='submit' value='create dictionary according to url'>
    </form>
    <div>
    <div>
    {% for dic in dic_final %}
    {{dic}}<br>
    {% endfor %}
    <div>
    </body>
    </html>


    到这里就差不多了

    三、结果展示
    [Python] 纯文本查看 复制代码
    python manage.py runserver 0.0.0.0:8080

                                                                      dic02.PNG
    当然,真正部署的时候,一般是要用nginx&uwsgi来做的,这里展示,就直接用自带的了
    直接进入,会只显示配置好的弱口令,这个是写入一个comm_dic.txt中的:
    dic0x.PNG

    dic03.PNG
    在input框里输入http://demo.ichunqiu.com/djf/s 点击按钮
    就会显示出很多和url相关的字典了
    dic04.PNG

    四、总结
    源码已经放置:https://github.com/xiaoyecent/django-webtool
    求star^_^
    django学的时间不长,不足之处万望指出,感谢表哥们



    评分

    参与人数 1魔法币 +5 收起 理由
    USer360Se + 5 感谢分享 希望分享更精彩的脚本 23333.

    查看全部评分

    本帖被以下淘专辑推荐:

    http://blog.163.com/sy_butian/欢迎交流
    yyyxy 管理员 六国战旗移动展示平台! 秦 楚 燕 魏 齐 赵
    来自 5#
    发表于 2017-5-19 14:11:05

    文章奖励介绍及评分标准:http://bbs.ichunqiu.com/thread-7869-1-1.html,如有疑问请加QQ:286894635!
    奖金
    点评
    50
    不错,可惜较为简单,建议下次研究一下一些更加深入的编程方法。比如编译原理。

    使用道具 举报 回复
    发表于 2017-5-6 11:52:33
    我xiaoye表哥的Python就是6
    使用道具 举报 回复
    小叶表哥py真心6
    来啊~快活啊~
    使用道具 举报 回复
    66666666
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册