当前位置:首页 > 知识

基于java web技术的web网站渗透测试技术利用点

Java Web应用里最容易被撕开口子的基于b技,往往不是术的试技术利那些复杂的业务逻辑,而是站渗开发人员顺手写下的一行代码。去年我帮朋友看一个商城系统,透测后台登录处用了经典的用点 Statement 拼接SQL,输入 ' or 基于b技'1'='1 直接进了管理页。这种漏洞在2024年还大量存在,术的试技术利原因很简单:培训班教的站渗是能跑就行,安全从来不是透测KPI。

SQL注入的用点利用点集中在三处:登录验证、搜索过滤、基于b技排序参数。术的试技术利登录框最常见,站渗因为开发习惯用字符串拼接查用户表。透测搜索框危险在于模糊查询,用点%${ keyword}% 这种写法一抓一个准。排序参数容易被忽略,order by ${ column} 能直接注入union查询。修复方案不是转义,是用 PreparedStatement 预编译,把参数和语句彻底分离。有人觉得MyBatis的 ${ } 和 #{ }} 差不多,差远了——前者是直接替换,后者才是参数绑定。

文件上传是另一个重灾区。很多系统只在前端用JS校验后缀,抓包改个 .jsp 就传上去了。更隐蔽的是MIME类型绕过,把 Content-Type 改成 image/png 就能骗过服务端检查。上传后的路径如果可控,配合目录遍历能直接getshell。我见过一个CMS把上传目录设成 /upload/ 且允许jsp执行,攻击者传个冰蝎马,服务器就姓别人的了。防御手段是白名单后缀加随机文件名,再把上传目录的脚本执行权限禁掉,三件事缺一不可。

反序列化漏洞在Java Web里属于核弹级别。WebLogic、JBoss、Shiro这些框架都栽过跟头。Shiro的 rememberMe 字段默认用AES加密,但密钥硬编码在代码里,网上工具一抓一大把。攻击者构造恶意序列化数据,服务端反序列化时触发 Transformer 链,直接执行系统命令。这个利用点的门槛在于需要找到gadget链,但ysoserial工具已经集成了几十条。修复要么升级框架,要么自定义密钥,要么干脆禁用rememberMe功能。

逻辑漏洞最考验渗透者的耐心。比如越权查看订单,把 orderId=1001 改成 1002 就能看到别人的收货地址。支付环节改个价格参数,0.01元买iPhone不是段子。验证码复用、短信轰炸、密码重置token可预测,这些点扫描器扫不出来,得手动测。我习惯用Burp的Repeater反复改参数,观察响应差异,有时候一个 userId 的改动就能打开新世界。

XSS在Java Web里通常不是最致命的,但存储型XSS配合后台管理员能打出组合拳。留言板、昵称、文件名都是注入点。有人觉得 HttpOnly 能防一切,其实只能防cookie窃取,XSS照样能发请求、改页面、钓鱼。输出编码要用 OWASP Java Encoder,别自己写replace,漏掉一个 onerror 就前功尽弃。

渗透测试不是拿着扫描器跑一遍就完事。Java Web的利用点藏在框架版本、中间件配置、业务逻辑的缝隙里。开发觉得“这没人会注意”,攻击者偏偏就盯着这些地方。一个 actuator 端点没关, /env 就能泄露数据库密码。一个 swagger 页面没鉴权,所有接口参数一目了然。安全是改出来的,不是扫出来的。

分享到: