关于笔者个人博客访问与攻击的一个小统计,最常被利用的居然不是PHP框架?

2023-05-16

目录

前言

测试时间

测试用脚本

测试结果(ip部分)

测试结果(url部分)


前言

我只是闲的没事,但是这一统计下来确实发现了一些有意思的事情。我的个人博客(AugustTheodor的个人博客)由2020年6月21日建立,暂时运营到2022年1月5日为止(暂时还没想好换什么服务器,有点想整一个树莓派所以先不续费了^ ^)。使用的web框架是django,并且禁用了其自带的后台插件,理论上是一个不会被事件型漏洞攻破的网站。

测试时间

2020年七月到2021年十二月,截止此文章发布之日上午。这篇文章首发于我的个人博客,所以截止时间实际上是2021年十二月八日,在log4j漏洞被披露后的一周内我又再次查看了一遍日志,发现已经有毛子用这个洞扫过我的网站了(不得不说毛子这种事情上真的很快^ ^)。

测试用脚本

我简单地写了一下,其实还能够加很多功能,比如调用ip查询的接口将ip的地址也一并记录下来(这个功能自己写写就算了,公布出来就太厚颜无耻了,所以我没有写这部分的源码)。由于日志的时间跨度很长,已经有十几兆了,不方便用绘图表示,所以只简单统计了一下正常访问的ip、异常访问的ip、异常访问的url。

'''

Author: AugustTheodor

Date: 2021-12-08 14:37:53

LastEditors: AugustTheodor

LastEditTime: 2021-12-08 16:34:49

Description: Apache网站日志的扫描脚本,用于统计恶意攻击的

'''

import re

re_ip=r"((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)" 

re_url=r"\".*?\""

def travel(dict,f):

    for i in dict:

        if(i[1]>1): #过滤只访问了一次的ip/url

            f.write(str(i[0])+" => "+str(i[1])+"\n")

    f.write("\n")

class WebsiteLog:

    dict200={}

    dict4XX={}

    dicturl={}

    def __init__(self,string):

        try:

            self.ip=re.search(re_ip,string).group()

        except:

            self.ip="anonymous"

        self.url=re.search(re_url,string).group()

        #=begin

        self=self.url.replace("HTTP/1.1","")

        self=self.url.replace("HTTP/1.0","")

        self=self.url.replace("GET","")

        self=self.url.replace("POST","") #删这几个差不多了,要加直接在下面加(PUT DELETE这种不建议删除)

        #=end

        self.status=int(string.split('"')[-1].split()[0])

        if self.status==200:

            if not self.ip in WebsiteLog.dict200.keys():

                WebsiteLog.dict200[self.ip]=1

            else:

                WebsiteLog.dict200[self.ip]+=1

        if self.status>400 and self.status<499 and self.status!=408: #去掉408,这个是网络错误

            if not self.ip in WebsiteLog.dict4XX.keys():

                WebsiteLog.dict4XX[self.ip]=1

            else:

                WebsiteLog.dict4XX[self.ip]+=1

            if not self.url in WebsiteLog.dicturl.keys():

                WebsiteLog.dicturl[self.url]=1

            else:

                WebsiteLog.dicturl[self.url]+=1

out=open("output.log","w")

outlist=[]

with open("access.log","r") as f:

    line=f.readlines()

    for i in line:

        outlist.append(WebsiteLog(i))

    WebsiteLog.dict200=sorted(WebsiteLog.dict200.items(), key = lambda kv:(kv[1], kv[0]))

    WebsiteLog.dict4XX=sorted(WebsiteLog.dict4XX.items(), key = lambda kv:(kv[1], kv[0]))

    WebsiteLog.dicturl=sorted(WebsiteLog.dicturl.items(), key = lambda kv:(kv[1], kv[0])) 

    #为什么不写个函数重用呢 因为我懒

    out.write("检查结果如下:\n")

    out.write("网站的200访问ip排名如下:\n")

    travel(WebsiteLog.dict200,out)

    out.write("网站的异常访问ip排名如下:\n")

    travel(WebsiteLog.dict4XX,out)

    out.write("网站的异常访问url排名如下:\n")

    travel(WebsiteLog.dicturl,out)

    print("检查完毕!") #可视化是不可能了,只能导出一份报告自己慢慢看的样子

测试结果(ip部分)

一年半的时间下:

网站遭受的最过分的爬虫扫描器(不计408访问失败)访问了3356次。

网站遭受的爬虫扫描器,访问次数在1000次以上的ip有3个,大部分人还是很讲武德的。

网站遭受的最过分的扫描器(异常请求,不是爬虫扫描器)访问了1754次(这个扫描器同时扫描了相当多的织梦CMS链接,还是一个来自上海的ip,恁裸奔就不要这么嚣张好吗^ ^?)。

网站遭受的扫描器,访问次数在1000次以上的ip有3个,在500次以上的ip有33个,在100次以上的ip有179个(没有统计代理ip的,里面应该有数十个是挂了几个代理ip扫的)。属于是脚本小子大开会,平均1.5天我这就要被光顾一次。

测试结果(url部分)

我向来是不惮以最惨的立场去揣测宇宙第一的PHP语言的,这次情况却有所不同:

异常访问中,最多的自然是robots.txt(11271次),这个请求其实也不算异常,但是以搜索引擎光顾我网站的次数来看很异常

除此之外,最常使用的居然是一个网关设备的漏洞url。

异常URL排名前十的如下所示:

  • 1- /.env 1049
  • 2- /boaform/admin/formLogin 916 (网关设备漏洞)
  • 3- /config/getuser?index=0 647
  • 4- /phpmyadmin/ 621 (PHPmyadmin,一个管理数据库的,委实说这扫描器应该开到888端口)
  • 5- /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php 611 (PHPunit是一个测试框架,结合url这里应该是针对Laravel)
  • 6- /wp-login.php 582 (WordPress)
  • 7- /api/jsonws/invoke 544 (JSON Web服务)
  • 8- /wp-content/plugins/wp-file-manager/readme.txt 478 (WordPress)
  • 9- 弹到百度首页的SSRF攻击 459
  • 10- /index.php?s=/Index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=HelloThinkPHP21 438 (ThinkPHP)

其实针对PHP的攻击还是相当多的,但是这次在单个漏洞的次数上被物联网漏洞稍微占了上风~而针对Java的攻击我却只看到了小几个(为什么只有几个,我真的不理解- -!!!),估计PHP还要被黑好几年咯。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于笔者个人博客访问与攻击的一个小统计,最常被利用的居然不是PHP框架? 的相关文章

  • Linux - 阿里云:记录一次低配 ecs 服务器在 cpu、内存打满情况下无法远程连接的解决过程...

    背景 自我学习ing 然后在 1c2g 的云服务器上起了 5 个 mysql 集群节点 xff0c 然后输入命令就开始卡了 xff0c 开始怀疑是不是系统资源爆掉了 来到阿里云后台 因为服务器已经连不上了 xff0c 没办法通过 top 等
  • AirSim无人机仿真(Ubuntu18.04)

    安装过程 xff1a xff11 xff0e 先要安装Unreal Engine 需要在官网 xff08 https www unrealengine com xff09 注册账号 xff0c 并用github拉取代码 xff0c 最后在终
  • 简化代码和Kotlin的特性-Kotlin在Android中的使用(二)

    文章目录 一 使用Kotlin来简化findViewById代码二 Kotlin特性1 不需要 xff1b 结尾2 xff1a 的使用3 没有 new 关键字4 变量 xff0c 常量定义 xff0c 类型推断5 空指针安全6 函数定义7
  • Thunderbird 里面 QQ 企业邮箱 POP3/SMTP 设置

    端口自动检测 接收邮件服务器 xff1a pop exmail qq com 发送邮件服务器 xff1a smtp exmail qq com
  • 图像细节增强(直方图均衡化,对数变换,Gamma变换(校正))

    图像细节增强 xff08 直方图均衡化 xff0c 对数变换 xff0c Gamma变换 xff08 校正 xff09 xff09 文章目录 一 直方图均衡化1 定义2 原理3 方法步骤 二 对数变换1 原理 三 Gamma校正1 原理 前
  • ubuntu20.04搭建arm交叉编译环境

    1 下载arm交叉编译程序 源码下载地址 xff1a Downloads GNU A Downloads Arm Developer 要根据目标系统选择编译器版本 xff0c 我的主板 xff1a aarch64bit体系结构 xff08
  • 【python】《多媒体技术与应用》实验报告「数字视频处理」

    多媒体技术与应用 实验报告 实验名称 数字视频处理 实验时间 2022 4 25 姓名 班级 计非201 学号 成绩 实验目的1 理解并掌握数字视频的相关概念 xff1b 2 掌握并利用 Python 读取和观察视频数据 xff1b 3 掌
  • Python GUI开发之Tkinter:详解安装和使用方法

    Python GUI开发之Tkinter 详解安装和使用方法 Tkinter是Python中最常用的GUI图形库之一 它是Python自带的标准库 所以不需要额外安装 在Python的标准库中 Tkinter模块被用来创建桌面GUI应用程序
  • windows下ssh免密登录ubuntu

    一 先查看要登录的服务器是否安装ssh server服务 dpkg l grep ssh 若没有则需要安装 apt span class token operator span get install openssh span class
  • CentOS 7下安装MPICH3.2过程详解

    最近由于专业需要 xff0c 需要在CentOS 7平台下安装并行计算包MPICH 由于我才接触Linux xff0c 鸟哥的基础入门书也才看了四分之一不到 xff0c 所以安装也一步一步按照官方给的文档安装 官方安装方法 首先附上官网给出
  • 洛谷 P3366 【模板】最小生成树

    洛谷 P3366 模板 最小生成树 题目 给出一个无向图 xff0c 求出最小生成树 xff0c 如果该图不连通 xff0c 则输出orz 题目链接 模板 最小生成树 洛谷 输入 第一行包含两个整数N M xff0c 表示该图共有N个结点和
  • 2019 计蒜之道 复赛 D “星云系统”

    2019 计蒜之道 复赛 D 星云系统 题目 现在给定你一个字符串s以及一个整数k xff0c 请求出s的字典序最小的长度为k的子序列 题目链接https nanti jisuanke com t 39614 输入格式 第一行一个由小写英文
  • Linux mysql 配置

    一 数据库处室化密码 刚刚装好的数据库需要重置密码 alter user user identified by 39 12345678 39 如果是测试环境 或者自己玩的环境 设置密码过于简单 可以通过一下命令修改关于密码的校验 set g
  • 二进制安装Kubernetes(k8s) v1.26.0 IPv4/IPv6双栈

    二进制安装Kubernetes xff08 k8s xff09 v1 26 0 IPv4 IPv6双栈 https github com cby chen Kubernetes 开源不易 xff0c 帮忙点个star xff0c 谢谢了 介
  • ThinkPad E430 蓝牙驱动 BCM43142A0

    最近我意外发现公司的 ThinkPad E430 笔记本竟然是带有蓝牙的 D 查看蓝牙设备标识 ID 利用 lsusb 命令找到蓝牙模块信息 Bus 001 Device 004 ID 105b e065 Foxconn Internati
  • cephadm 安装部署 ceph 集群

    介绍 手册 xff1a https access redhat com documentation zh cn red hat ceph storage 5 html architecture guide index http docs c
  • PVE Cloud-INIT 模板配置

    PVE Cloud INIT 模板配置 Cloud init是什么 Cloud init是开源的云初始化程序 xff0c 能够对新创建弹性云服务器中指定的自定义信息 xff08 主机名 密钥和用户数据等 xff09 进行初始化配置 通过Cl
  • openstack 环境部署

    22 1 了解云计算 人类基于千年的物种衍变基础 xff0c 在这个世纪终于有了爆发式的科技成果 xff0c 尤其这二十年内互联网的发展 xff0c 更像是一种催化剂 xff0c 让原本已经热闹的地球更加的沸腾 xff0c 互联网经济泡沫破
  • C语言,计算圆的面积程序

    C语言 xff0c 计算圆的面积程序 span class token comment 计算圆的面积程序 日期 xff1a 2020 8 29 姓名 xff1a 张倩峰 span span class token macro propert
  • 博图软件搜索不到网卡

随机推荐