渗透测试常见漏洞
去年帮一家电商做复测,渗透登录框加了个验证码,测试常前端还做了RSA加密。漏洞我抓包一看,渗透验证码的测试常校验逻辑写在JS里,后端压根没验。漏洞把请求里的渗透验证码参数删掉,直接爆破密码,测试常三千次请求下来,漏洞两个管理员账号到手。渗透开发后来跟我说,测试常以为前端加了就安全了——这种“以为”,漏洞就是渗透渗透测试里最常捡的漏洞。 SQL注入现在没以前那么泛滥了,测试常但没绝迹。漏洞上个月测一个老政务系统,查询接口的 XSS反而更隐蔽了。存储型XSS在后台管理界面特别常见。有个CRM系统的客户备注字段,输入 文件上传的绕过手法越来越花。前端校验 越权是逻辑漏洞里的重灾区。水平越权最常见:改一下URL里的 SSRF在云环境里杀伤力翻倍。有个图片加载功能,参数是URL,填 反序列化漏洞利用门槛高,但一旦打通就是直接RCE。Java的 弱口令和未授权访问永远排在前列。Redis没设密码, 渗透测试做久了会发现,漏洞从来不是单一存在的。一个文件上传能拿shell,一个SSRF能进内网,一个弱口令能控数据库。真正危险的是把多个低危漏洞串起来——比如XSS偷管理员Cookie,再用管理员权限打后台的SQL注入,最后通过SSRF进内网横向。修复的时候别只盯着单个漏洞打补丁,得看整个攻击链。开发写代码时多问一句“这个参数用户能控制吗”,运维配服务时多想一下“这个端口真的需要对外吗”,能省掉后面很多麻烦。id参数加了单引号,直接报数据库错误。用sqlmap跑了一下,--os-shell都能弹出来。数据库是SQL Server,权限配得稀烂,xp_cmdshell默认开着。这种系统通常外网暴露多年,补丁没打全,WAF也没有,属于“一戳就穿”的类型。我的判断是:只要参数进了SQL语句拼接,没走预编译,早晚出事。<img src=x onerror=alert(1)>,保存后每次打开客户详情页都弹窗。管理员每天看那么多备注,中招是迟早的事。有人觉得XSS危害小,那是没遇到配合CSRF打组合拳的——通过XSS偷token,再拿token去调后台接口删数据,一套下来行云流水。accept属性?抓包改Content-Type就行。后端只检查后缀?试试.phtml、.php5、.jspx。黑名单过滤php?大小写混写pHp,或者加个点php.(Windows下会自动去掉)。最离谱的一次,上传接口把文件存到了Web目录,文件名是时间戳_原文件名,但没过滤../,直接路径穿越把shell写到了webapps/ROOT/下面。拿下服务器只用了不到十分钟。user_id,就能看别人的订单、地址、手机号。有个App更直接,/api/v1/user/{ id}/profile,把id从1001改成1002,返回了另一个用户的完整信息,包括身份证号。垂直越权也常见——普通用户能调管理员接口。测试的时候拿低权限账号抓包,把role=user改成role=admin,后端居然信了。这种漏洞靠扫描器扫不出来,得手工看接口和参数。http://169.254.169.254/latest/meta-data/,直接返回了AWS的临时凭证。拿着凭证去调S3接口,把整个桶的数据列了出来。开发当时觉得“只是加载个图片”,没做任何白名单。内网探测更简单,http://127.0.0.1:6379看Redis有没有未授权,http://10.0.0.1:8080扫内网服务,SSRF就是内网渗透的跳板。readObject、PHP的unserialize、Python的pickle.loads,都是老面孔。有个Shiro框架的系统,rememberMe的Cookie用了默认硬编码密钥,用工具跑出commons-collections的利用链,直接弹了计算器。这种漏洞修复起来麻烦,很多团队干脆把Shiro升级或者换掉。redis-cli -h直接连,config set dir /root/.ssh写公钥。MongoDB默认无认证,mongodump把整个库拖下来。Elasticsearch的_search接口裸奔,?pretty一下,几百万条用户数据全出来。这些服务在内网里到处都是,很多运维觉得“内网没人看”,但攻击者一旦突破边界,这些就是提款机。
-
上一篇
-
下一篇