您现在的位置是:综合 >>正文
注入绕过
综合11856人已围观
简介某次渗透测试,客户网站是个老旧的Java应用,登录框后面连着Oracle数据库。我试了十来分钟,`' or 1=1--` 这种常规货色全被拦了。WAF日志里明晃晃写着“SQL注入拦截”,过滤规则严得跟 ...
某次渗透测试,注入绕过客户网站是注入绕过个老旧的Java应用,登录框后面连着Oracle数据库。注入绕过我试了十来分钟,注入绕过`' or 注入绕过1=1--` 这种常规货色全被拦了。WAF日志里明晃晃写着“SQL注入拦截”,注入绕过过滤规则严得跟筛子似的注入绕过。
转机出现在一个被忽略的注入绕过角落——搜索功能。它把输入拼进LIKE子句,注入绕过参数名是注入绕过`keyword`。我扔了个`%' AND 1=1--`进去,注入绕过页面正常返回。注入绕过再试`%' AND 1=2--`,注入绕过空白。注入绕过成了。注入绕过绕过的关键不是花哨的编码,而是WAF根本没监控这个参数。它只盯着用户名和密码字段,搜索框漏成了筛子。
这类故事在真实攻防里太常见了。注入绕过的本质,从来不是和规则硬碰硬,而是找规则的盲区。规则是人写的,人写的东西就有边界,有边界就能绕。
最常见的绕过思路是改变解析上下文。比如把payload塞进JSON字段,服务端反序列化后再拼SQL,WAF看到的是一堆花括号和冒号,自然放行。还有一招是玩字符集——MySQL的`GBK`编码下,`%bf%27`会被解析成`縗'`,单引号就这么混进去了。老DBA看到这种payload,后背发凉。
另一种思路更阴险:利用数据库自身的特性。PostgreSQL里有个`pg_sleep()`函数,但WAF可能只拦了`sleep`关键字。换成`pg_sleep`就过了。SQL Server的`WAITFOR DELAY`同理。规则库更新永远追不上数据库功能的迭代速度。
我还见过更野的路子——把注入点挪到注释里。MySQL的`/*!50000SELECT*/`这种版本化注释,老版本WAF根本不认识。或者干脆用`/*!*/`把整个查询包起来,规则引擎看到的是注释,数据库执行的是恶意代码。这招在2018年还能打穿不少商业WAF。
别迷信那些公开的绕过payload列表。真正好用的东西,都是针对特定目标现造的。你得先摸清对方用什么数据库、什么中间件、WAF是哪家的、规则更新频率如何。信息收集越透,绕过方案越精准。有一次我光是看响应头的`Server`字段和报错信息的格式,就判断出后面是台跑了IIS的MSSQL,直接用`;exec xp_cmdshell`试了个反向shell,一次成功。
当然,绕过的天花板永远是业务逻辑本身。如果开发者把参数化查询用到了极致,再花哨的技巧也是白搭。但现实是,大量遗留系统、第三方组件、甚至某些偷懒的ORM配置,都在给注入留后门。你不需要攻破最坚固的堡垒,只需要找到那扇没锁的侧门。
写代码的人总以为加上过滤函数就万事大吉,可攻击者眼里,那只是多了一道需要解的谜题。真正安全的系统,靠的是纵深防御——参数化查询、最小权限、输出编码、WAF规则动态更新,哪一层都不能省。但讽刺的是,多数公司连第一步都没做扎实,就急着吹嘘自己的安全能力。
最后说个观察:近两年的攻防演练里,注入绕过的成功率反而比五年前高了。不是因为漏洞变多了,而是云环境里配置错误太普遍。RDS实例暴露公网、默认端口没改、管理后台和业务系统共用数据库账号——这些低级错误,让注入攻击的性价比飙升。技术绕过的天花板在降低,但利用门槛也在降低,这买卖,怎么算都划算。
Tags:
上一篇:渗透率怎么算
下一篇:用户名密码忘记了怎么办
相关文章
喜加一官网入口
综合喜加一官网入口这事,我盯了快三年。每天固定时间刷新,成了比闹钟还准的习惯。入口藏在官网最底部的“活动日历”里,不细看根本发现不了,那个灰色小字链接,点击后跳转的页面设计得极其朴素,白底黑字,连个图片都 ...
【综合】
阅读更多彩票源码搭建一条龙
综合凌晨三点,老周在微信上给我发来一张截图。他刚上线的彩票平台,首页UI精美,赔率实时跳动,充值提现按钮闪着金光。他说:“从买域名到跑通第一笔充值,只用了四天。”我盯着屏幕,想起上个月他才问过我“服务器是 ...
【综合】
阅读更多男子遭遇双重杀猪盘
综合手机屏幕的光映在张强脸上,他盯着那个“客服”发来的截图,手指微微发抖。截图里是他三天前转出去的那笔钱——整整八万,对方说操作失误被冻结了,要再充五万“解冻金”才能连本带利提出来。他咬着牙,把积蓄又划了 ...
【综合】
阅读更多