首页 > 其他分享 >暗链扫描工具分析

暗链扫描工具分析

时间:2023-01-14 22:34:01浏览次数:51  
标签:fw url res 扫描 write re 暗链 工具

因为有的网站被攻击之后会被攻击者悄悄挂上暗链,用来提升恶意网站的搜索权重排名,突发奇想看一下暗链扫描工具是咋做的,去github上翻了一下,这次分析Libra

项目地址:https://github.com/rabbitmask/Libra

项目功能:网站篡改、暗链、死链监测平台

这里我们只分析暗链检测

使用

因为这里我想要测试暗链检测的功能,随便找一个18禁网址进行暗链检测

python3 Libra.py -u http://*******

运行结束后就会输出一份报告,并且列出具体结果

实际在运行过程中会有一些问题,我自行在代码里进行了部分修改

原理

暗链检测原理很清晰:

  • 输入待检测网址
  • 获取该网址内的所有URL
  • 获取这些URL的源代码
  • 检测源代码中是否存在暗链关键字
  • 保存结果

下面对每一步进行阐述

输入待检测网址

这里使用argparse库来获取解析用户的输入参数,可以形成我们常见的命令行效果

如果我们输入--help参数就能够查看到使用用法

源代码如下

parser = argparse.ArgumentParser()


parser.add_argument("-u", dest='url',help="The Target Url")

parser.add_argument("-m", dest='monitor',help="Monitor The Target Url")

parser.add_argument("-f", dest='file',help="The List Of Target Urls")

args = parser.parse_args()

看代码可以知道我们 -u 的时候就是输入待检测网址

获取该网址内的所有URL

跟进代码在crawler_api方法里面能够获取网址内的所有URL,这里的方式是通过re.compile直接匹配正则

def crawler_api(url):
    if isinstance(url, str):
        out_link=[]
        in_link=[]
        html=GetData(url)[1]
        href = re.compile('href="(.*?)"')
        src = re.compile('src="(.*?)"')
        res_href = href.findall(html)
        res_src = src.findall(html)
        res_html = res_href+res_src
        in_link.append(url)
        for i in res_html:
            file_ok=True
            for j in file_type_black:
                if j in i:
                    file_ok = False
                    break
            if file_ok and len(i)>0:
                # print(i)
                if i[:4] == 'http':
                    out_link.append(i)
                else:
                    if i[0]=='/':
                        in_link.append(url+i)
                    else:
                        in_link.append(url+'/'+ i)

        res=[]
        for i in list(set(out_link+in_link)):
            tmp=[]
            tmp.append(i)
            tmp.append(url)
            res.append(tmp)
        return res

获取这些URL的源代码

在getData方法中获取源代码

def GetData(url):
    try:
        r = requests.get(url, headers=headers, timeout=5)
        r.encoding = 'utf-8'
        return r.status_code,r.text
    except(requests.exceptions.ReadTimeout,requests.exceptions.ConnectTimeout,requests.exceptions.ConnectionError):
        return 'Timeout','Timeout'

检测源代码中是否存在暗链关键字

在hlfind方法中检测是否存在暗链关键字

def hlfind(res):
    rules = []
    host = True
    re_rules_list = get_re()
    for re_rules in re_rules_list:
        result = re.findall(r'{}'.format(re_rules[0]), res, re.S)
        if result != []:
            rules.append(re_rules[0])
            host = False
    if host == False:
        return rules
    else:
        pass

保存结果

通过libra_log方法保存检测后的数据

def libra_log(url,master,res_comparer,res_hlfind,res_diedlink,filename):

    if res_comparer or res_hlfind or res_diedlink != 200:
        fw = open(filename, 'a',encoding="utf-8")

        fw.write('### '+url+' `'+str(res_diedlink)+'` '+'\n')
        fw.write('* Master: `'+master+'`\n')
        fw.write('* Time: `'+ getDate()+'`\n')
        fw.write('```\n')

        if res_comparer:
            fw.write('========================篡改监测===============================\n')
            if push_token:
                push(master, "篡改监测", getDate())
            for i in res_comparer:
                if i[0]=='+' or i[0]== '-' or i[0] =='?':
                    fw.write(i+'\n')
        if res_hlfind:
            fw.write('========================暗链监测===============================\n')
            if push_token:
                push(master, "暗链监测", getDate())
            for i in res_hlfind:
                fw.write(i+'\n')
        if res_diedlink != 200:
            fw.write('========================死链监测===============================\n')
            if push_token:
                push(master, "死链监测", getDate())
            fw.write(url+' '+str(res_diedlink)+'\n')
        fw.write('==============================================================\n')
        fw.write('```\n\n')

        fw.close()

总结

代码整体的流程很清晰,但URL提取和关键字列表还有待维护,通过修改数据库中的关键字列表来进行优化即可

本来想自己写一个插件的,逻辑比较简单就算了

END

建了一个微信的安全交流群,欢迎添加我微信备注进群,一起来聊天吹水哇,以及一个会发布安全相关内容的公众号,欢迎关注

标签:fw,url,res,扫描,write,re,暗链,工具
From: https://www.cnblogs.com/Cl0ud/p/17052698.html

相关文章

  • 03-逻辑综合工具 - Design Compiler
    逻辑综合工具DCIC设计流程,市场-->制定spec-->RTL(同时进行sim,通过alint检查RTL有没有错误)-->systhesis(逻辑综合)-->PR(STA)-->TapeOut逻辑综合将RTL转换为GateNetli......
  • 日期处理工具类
    packageutils;importorg.apache.commons.lang.time.DateUtils;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjava.util.G......
  • Kubernetes:通过轻量化工具 kubespy 实时观察YAML资源变更
    写在前面分享一个小工具​​kubespy​​给小伙伴博文内容涉及:工具的简单介绍下载安装以​​kubectl​​插件方式使用Demo理解不足小伙伴帮忙指正我所渴求的,無非是......
  • [VueJsDev] 基础知识 - asyncTool.js异步执行工具
    asyncTool.js异步执行工具:::details目录目录​asyncTool.js异步执行工具​​​Step.1:getAc使用方法​​​​Meth.2:use方法​​​​Meth.3:run方法​​​​M......
  • linux工具grep的使用心得笔记
    grep作为linux管理中常用的三大工具之一(grep、awk、sed),其功能十分强大,因此难以对其进行全面的使用介绍,因此本文只作为个人学习的笔记之用。 grep的用处:在文本中匹配要......
  • 经纬度工具类GPSUtil
    packagecom.new3s.manage.util;importorg.apache.commons.lang3.StringUtils;publicclassGPSUtil{publicstaticStringgpsToDecimals(StringgpsParam)......
  • 20 个 JS 工具函数助力高效开发
    日常开发中,面对各种不同的需求,我们经常会用到以前开发过的一些工具函数,把这些工具函数收集起来,将大大提高我们的开发效率。1、校验数据类型export const typeOf = fu......
  • Centos7下安装Dogtail GUI自动化测试工具并打开sniff工具过程中遇到的问题解决方法
    (目录)因为测试需要,需在Centos下进行liunxGUI软件自动化测试,所以用到了python的Dogtail库,继而使用Dogtail的sniff控件获取工具,但是遇到了很多问题记录如下。1环境Cent......
  • 振弦采集模块参数配置工具VMTool 的使用
    振弦采集模块参数配置工具VMTool的使用 准备工作(1)将VMXXX模块的UART_TTL、RS232(或RS485)接口与计算机的COM端口连接;(2)连接振弦传感器及温度传感器到VMXXX......
  • 两大js调试工具的安装
    首先要确保已经安装nodejs,具体安装步骤可以百度。node-inspect工具的安装和使用对于node-inspect工具我们可以全局安装:npminstallnode-inspect-g由于安装过cnpm,所以几乎......