
我的博客被攻击了
个人博客被打全过程复盘:所有漏洞,全是我自己偷懒攒出来的
记录一次实打实的个人博客被恶意攻击事件。
事后翻完所有访问日志、操作日志,说实话挺打脸的。这次攻击能完全成功,不存在什么高深渗透,全部是我前期安全偷懒、多处防护缺失,再加上我本人轻敌大意,给对方脚本铺好了完整进攻链路。
在这里完整复盘一遍攻击流程、我存在的漏洞、对方的攻击手法,以及最后为什么没造成实质性数据丢失。
一、先说说我项目原本的致命漏洞(全部人为偷懒导致)
我的博客后台最开始只有我一个管理员账号,所以前期心态特别松懈:个人小站,没人会打。
也正是这个心态,堆了一堆致命隐患:
- 权限校验极其潦草 后期做AI模块,为了省事直接复用了后台用户表,新建了一个空权限的普通用户角色。 更致命的是:后续迭代新增的一大堆接口,我图省事没加按钮权限、接口权限校验,就连大部分查询接口都是裸奔状态,谁能访问、有没有权限完全不校验。
- 基础防护几乎为零 登录接口、博客评论接口,全程无验证码,完全可以被脚本无限刷、无限请求。
- 单一限流完全被绕过 我之前只做了基础的IP限流,但没有做集群对抗。 这次攻击日志统计:9000条恶意请求,接近9000个不同IP,对方明显是肉机/跳板机脚本批量请求,单IP限流直接作废,等于没有防护。
- 最致命的一条:登录日志明文记录参数,且接口无权限 这是这次被拿下管理员权限的核心致命漏洞。 系统会记录登录请求日志,并且明文保存了登录的账号密码参数。 同时,登录日志的查询接口没有任何权限校验,任何人只要访问接口,就能直接拿到所有人的登录记录,包括管理员账号密码。
以上所有点叠加在一起,相当于我给外网敞开了大门。
二、完整攻击链路:从傍晚8点试探,到深夜彻底沦陷
结合日志和当时的情况复盘,这次攻击不是突发的,是我亲眼看见异常、却不当回事,最终放任对方一步步拿下全站权限。
1. 晚间八点:第一次异常爆发,我主动放过了最佳拦截时机
当晚八点多,我就已经收到了海量的站内邮件告警通知。
当时粗略看了一眼,能明显看到站点在被疯狂刷接口、高频请求不断涌入。 但我当时心态特别放松,单纯以为只是简单的脚本刷流量,想着只是刷点接口、造点垃圾请求,不会有什么大问题,打算第二天睡醒再统一处理。
现在回头看,这是最致命的轻敌。
在我不以为意、放任不管的这段时间里,攻击者的脚本已经正式开启整套攻击流程: 持续批量探测全站路由、疯狂扫描我的后台接口,同时不间断爆破我的后台登录接口,一直在尝试破解管理员账号。
等于对方前期的侦察、试探、爆破阶段,全程在我眼皮底下安稳进行,我却直接无视了告警。
2. 脚本批量注册用户、获取合法Token
利用我无验证码、无任何拦截的开放接口,脚本批量注册了大量C端普通用户账号,自动抓取、携带合法用户Token。
3. 遍历裸奔接口,爬取完整后台路由
依靠普通用户Token,配合我大量无权限校验的裸奔接口,脚本直接扫完、爬取了我完整的后台接口列表,彻底摸清了整个系统的架构和所有高危接口地址。
4. 持续爆破管理员登录接口
在接口扫描的同时,脚本持续对后台登录接口做密码爆破。好在我的管理员密码强度足够,这一步对方并没有直接爆破成功。
5. 深夜关键转折点:我的一次管理员登录,直接送了权限
整场攻击彻底失控的关键点,发生在深夜。
我当晚登录过一次管理员后台,这次正常的登录请求参数,被系统日志完整明文记录了账号和密码。
而我之前留下的漏洞——登录日志查询接口无任何权限限制,让对方脚本直接抓取到了明文的管理员账号密码。
到这里,攻击者直接拿到最高权限凭证,顺利登录管理员后台。
6. 拿到最高权限后,无脑恶意删改数据
成功登陆管理员账号后,对方彻底放开手脚,不再只是扫描和试探,开始肆无忌惮、无脑调用后台各类删除、修改接口,对站内数据进行批量恶意操作。
整个攻击流程非常清晰:傍晚试探刷量 → 全天候接口扫描+密码爆破 → 利用我的日志漏洞窃取管理员凭证 → 深夜完全控权恶意破坏。 全程全自动脚本执行,而成全这一切的,除了代码漏洞,还有我本人的懈怠和侥幸。
三、为什么被重度攻击,但最终零数据损失
虽然这次被完全拿下后台权限、遭到大量恶意删除操作,但万幸没有任何数据丢失,核心是我之前的数据兜底习惯救了我:
- 全站业务数据全部逻辑删除 所有删除接口,执行的都是软删除,只是标记删除状态,数据本身还保留在数据库,没有物理删除,可随时回滚恢复。
- 静态资源、文件全部托管对象存储 博客图片、附件、各类文件都存放在对象存储,不依赖服务器本地。
- 对象存储采用定时清理机制,非实时删除 即使后台触发文件删除指令,也不会立刻销毁资源,而是定时统一清理。 这就给我留出了充足的时间排查、回溯、恢复所有资源。
简单说:对方删了个寂寞,能删的只是前端展示状态,真实数据和文件全部完好保留。
四、事后全面加固措施
踩完这次大坑,直接补齐所有短板,杜绝同类问题:
- 彻底重构权限体系 拆分AI模块用户与后台管理用户,不再复用数据表,彻底隔离权限。 全站所有接口,无论新增、旧接口、查询接口、操作接口,全部统一加上权限校验,杜绝裸奔接口。
- 补齐人机验证 登录、评论、提交等所有公网高危接口,全部接入图形验证码,拦截脚本批量刷请求。
- 升级限流防护,对抗肉机集群攻击 放弃单一IP限流,新增接口频次、账号维度、全局请求限流,结合时间窗口风控。 针对规律性批量异常请求做智能拦截,解决多IP肉机攻击绕过限流的问题。
- 修复日志致命漏洞****登录日志不再记录明文账号密码,敏感参数脱敏处理。 日志查询接口增加最高管理员权限校验,禁止普通用户、外网访问。
- 强化操作监控与告警 完善安全审计日志,对管理员登录、批量删除、高危操作做单独监控,异常行为不再轻视,做到发现即处理、不拖延、不侥幸。
五、最后总结反思
这次事件给我的教训特别深。
作为全栈开发,我清楚所有权限校验、参数脱敏、接口风控、验证码防护,都是最基础、最入门的安全规范。 这次被攻击成功,和技术能力无关,纯粹是开发惰性+侥幸心理+运维懈怠导致。
因为是个人博客、自用后台,就习惯性偷懒省略安全步骤;因为看到异常告警没造成立刻故障,就轻视攻击、放任对方持续侦察渗透。
公网环境永远有机器人7x24小时批量扫站、找漏洞、打站点。安全漏洞不会因为是个人项目就被放过,攻击者更不会因为你是小站手下留情。
网站安全真的没有侥幸,也不分项目大小。 任何一处偷懒留下的漏洞、任何一次对异常日志的漠视,都会被脚本和攻击者精准抓住、无限放大。
以后开发任何项目,安全校验、异常监控、及时排查,绝对不再是可选项。 规范落地、不偷懒、不侥幸,及时重视每一次异常告警,才是开发者最基本的底线。