弱口令与默认配置
很多系统上线时为了图省事,管理员直接用了 admin/admin123 这类简单密码。攻击方一扫一个准,就像你家门锁是塑料的,小偷拿根铁丝就捅开了。某次演练中,一个后台系统就是因为没改默认账号密码,不到十分钟就被拿下。
更离谱的是有些设备连着内网交换机,默认开启了 telnet 且账户名密码都是厂商预设的。这种配置在真实攻防里就是活靶子,工具一跑,整片网络拓扑都能被扒出来。
SQL 注入依然猖獗
别以为现在都用 ORM 就安全了,不少老系统接口还是拼接 SQL 字符串。比如一个登录语句写成:
SELECT * FROM users WHERE username = \'' + userInput + \'' AND password = \'' + pwdInput + \''攻击者输个 admin\' OR 1=1-- 就能绕过验证。有次看到一个内部管理系统,搜索框输入单引号直接报错,暴露了 MySQL 版本和表结构,后续拖库轻而易举。参数化查询不是摆设,该用就得用。
文件上传不限制类型
某些业务需要用户传头像、附件,但后端只在前端加了个 accept=\"image/*\",以为这样就够了。实际上抓包改个 Content-Type,再把 .php 内容伪装成图片,上传成功后访问路径一执行,服务器就成了对方的肉鸡。
建议服务端做三重校验:扩展名黑名单+MIME 类型检查+文件内容扫描。最好还能把上传目录的脚本执行权限关掉。
越权访问屡见不鲜
用户 A 访问 /api/order/1001 能看订单,改成 1002 居然也能看。这是典型的水平越权。还有些管理接口,普通用户只要把请求里的 role 字段改成 admin,就能进入后台,属于垂直越权。
权限控制不能只靠前端隐藏按钮,每一个敏感接口都得在服务端验证当前身份是否有权操作目标资源。别让“我以为他点不了”变成突破口。
API 接口缺乏防护
现在很多系统前后端分离,API 大量暴露。但有些接口既没频率限制,也不做签名验证。比如短信验证码发送接口,攻击者写个脚本狂刷,一天发几万条,不仅费用爆炸,还可能被用来轰炸别人手机。
另一个问题是接口文档随手可得,swagger 或 postman 集合泄露到公网,等于把家底亮给敌人看。非必要不开放调试页面,生产环境果断关掉。
反序列化风险被忽视
Java 项目里用 ObjectInputStream、PHP 的 unserialize() 这类函数处理不受信数据时,一旦流程失控,就能触发远程代码执行。有团队用 redis 存 session,攻击者构造恶意序列化对象注入,等程序读取时自动反弹 shell。
这类问题不好排查,建议尽量用 JSON 这种数据格式替代原生序列化,或者使用带白名单机制的反序列化库。
","seo_title":"攻防演练中常见的安全漏洞及实例分析","seo_description":"通过真实场景解析攻防演练中频繁出现的安全漏洞,涵盖弱口令、SQL注入、文件上传、越权访问等问题,帮助开发者提升系统安全性。","keywords":"攻防演练,常见漏洞,网络安全,渗透测试,安全防护,软件安全"}