网络安全实战①

作者分享了一次关于其开源短链接系统的安全性测试,发现SQL注入和XSS漏洞。攻击者未能利用项目内置防护,但通过ID参数漏洞获取了部分数据。漏洞已修复并升级至v2.0.0版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

短链接系统是我很久之前开发的开源项目,十几天前我把项目源码和部署站点交给了Fgaoxing(网络安全专家),让他测试项目安全性。本文的记录来源于日志分析和攻击者叙述。

实验环境

1.php 7.1
2.mysql环境 + phpmyadmin管理
3.短链接项目 v1.0.0
4.nginx
5.关闭waf和一切安全措施,仅保留项目内自带安全防护

攻击实验记录

mysql注入

由于这是一个mysql+php项目,所以sql注入是最有可能潜在的漏洞。

根据网站日志显示:

攻击者先是向 添加短链接api 发动攻击,尝试在链接内容里埋雷,闭合sql语句并获取权限,但由于程序将原链接转义为base64再拼接sql语句,所以攻击失败。

攻击者将目标转向了 获取原链接并跳转的api,此api需要传入一个id参数(纯数字),id在数据库内对应原链接,攻击者在id内尝试闭合sql语句,尝试成功(因为程序并未对参数合法性进行校验),接着他通过各种方法获取储存链接的数据表名,理论上应该成功,但程序对取出的内容都会做一个base64解码,因此表名数据变为乱码,攻击失败。

xss注入

攻击者尝试在链接内容中注入js脚本,注入成功,后台有展示所有链接的功能,因此管理员打开后台时脚本被执行,攻击者成功获得cookie。但是攻击者并不止步于此,他还在js里添加了链接跳转,管理员打开后台时会自动跳转到非法黄色网站(此处插播一则笑话:一开始攻击者得意洋洋地问我“感觉怎么样,好看不”,压根不知道自己攻击脚本写错了,导致无效,后来改过来了),给管理员一个**“惊喜”**。

总结

本项目漏洞有两处:
1.id参数没有校验
2.传入的链接展示时不宜使用innerHTML,需更换为innerText,防止脚本执行

目前已被我修复,并优化了UI,发布v2.0.0版本,欢迎使用

点击此处前往仓库

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值