搜索
当前位置:首页 > 焦点 > 渗透伪静态

渗透伪静态

发表于 2026-10-17 07:02:02 来源:力不从心网

伪静态这东西,渗透说白了就是伪静让动态URL看起来像静态页面。比如把 article.php?渗透id=123 变成 /article/123.html。搜索引擎喜欢,伪静用户看着也舒服。渗透但问题来了——如果服务器没配好,伪静这个"看起来像"的渗透壳子反而会变成漏洞入口。

我最早注意到这件事,伪静是渗透帮朋友看一个WordPress站点。他的伪静站用了伪静态插件,URL确实漂亮,渗透但访问 /article/123.html 时,伪静服务器返回的渗透HTTP状态码是200,内容却是伪静一篇不存在的文章。更离谱的渗透是,页面标题显示的是"首页",正文区域却调出了数据库里最近的一条记录。这就是典型的伪静态规则写歪了——把不存在的路径硬生生映射到了某个动态脚本上,脚本又没做好参数校验。

渗透测试里,伪静态经常被当成"信息泄露的放大器"。举个例子,很多CMS的伪静态规则会把 /tag/xxx 重写到 tag.php?name=xxx。如果 tag.php 没有对 name 做过滤,攻击者就能构造 /tag/../../etc/passwd 这样的路径。服务器一看后缀是路径,先按文件系统解析,再交给PHP处理——中间任何一个环节没拦住,文件内容就出来了。我见过一个真实案例,某站伪静态规则里用了 RewriteRule ^(.*)$ index.php?url=$1,结果 /index.php/../../../../etc/passwd 直接读出了系统文件。规则本身没毛病,但PHP的 PATH_INFO 没做白名单,等于把钥匙插在门上。

另一个坑是"伪静态缓存投毒"。有些服务器会为伪静态页面生成静态缓存,比如 /article/123.html 第一次访问时动态生成,之后直接读缓存文件。如果攻击者能控制 123 这个参数,比如传入 123%00 或者超长字符串,缓存文件名就可能被截断或覆盖。我试过一个站,构造 /article/../../shell.php 的伪静态请求,服务器居然把动态内容写进了 shell.php——因为它按URL路径去拼缓存文件名,没做路径规范化。这等于直接拿下了webshell。

怎么防?别指望伪静态规则本身能扛住所有事。规则只负责"重写",校验得交给后端。第一,所有重写参数必须经过白名单过滤,比如ID只能是数字,slug只能是字母数字下划线。第二,服务器配置里把 PATH_INFO 关掉,或者限制它不能包含 ..、%00 这类字符。第三,缓存目录绝对不能放在Web根目录下,而且缓存文件名要哈希处理,别用原始URL去拼。第四,定期检查伪静态规则有没有"贪婪匹配"——(.*) 这种写法少用,能用 ([0-9]+) 就别偷懒。

说句实在的,伪静态就是个URL美化工具,别把它当安全层。我见过太多人以为"URL里没有问号就安全了",结果连最基本的参数过滤都没做。渗透测试里,伪静态站点的突破口往往不在规则本身,而在规则背后那个偷懒的动态脚本。你花十分钟写规则,就得花半小时检查后端有没有把每个入口都堵死。不然,漂亮的URL就是给攻击者指路的路标。

随机为您推荐
友情链接
版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright © 2016 Powered by 渗透伪静态,力不从心网   sitemap

回顶部