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

伪静态渗透

发表于 2026-10-17 06:03:23 来源:烟消火灭网

去年秋天,伪静我帮朋友看一个站。态渗透打开首页,伪静URL长这样:/index.php?态渗透m=index&a=show&id=57。我随手把index.php?伪静m=index&a=show&id=57改成/index/show/57.html,页面照样出来。态渗透他挺得意,伪静说这是态渗透"伪静态",SEO友好。伪静

我当时没吭声。态渗透改天又去,伪静把57换成57'。态渗透页面报错,伪静SQL语句直接甩在屏幕上。态渗透他脸都绿了。伪静

这就是伪静态的常见毛病——你以为换了张皮,其实骨头还是那副骨头。服务器端靠.htaccess或Nginx的rewrite规则,把/index/show/57.html重新映射回index.php?m=index&a=show&id=57。参数照收,注入照吃。只不过浏览器地址栏看起来干净了点,搜索引擎爬虫多看你两眼。

真正危险的地方在于,很多人做伪静态的时候,只改了URL规则,没动过滤逻辑。我见过一个CMS,后台有个"伪静态设置"页面,管理员勾选"开启",系统自动生成一堆rewrite规则。但那个id参数在PHP里还是$_GET['id']直接拼进SQL。更离谱的是,有些伪静态规则写得太宽,比如RewriteRule ^(.*)\.html$ index.php?$1,等于把所有.html请求都吞进index.php,然后$_SERVER['REQUEST_URI']里那串东西可能被二次解析。路径穿越、参数污染,全来了。

有个细节值得说。Nginx的rewrite如果用了last标志,内部重定向后$_GET可能被重置;用break则保留。Apache的mod_rewrite又是另一套脾气。我试过在一个站上,伪静态URL后面加?id=1 union select ...,服务器居然把原始查询串和重写后的参数合并了。相当于你从正门进,保安搜了身,但侧门还开着。

还有一类更隐蔽的:伪静态把参数藏进了路径。比如/user/avatar/../../../../etc/passwd,如果rewrite规则没做路径规范化,后端拿到的id可能就是../../../../etc/passwd。然后这个值被拼进file_get_contents()。你看着URL挺像那么回事,其实已经在读系统文件了。

怎么防?别指望伪静态本身能防住什么。它就是个URL美化工具,跟安全没半毛钱关系。该做的过滤,在PHP层、在ORM层、在数据库权限层,一个都不能少。具体点:id参数强制转整型,intval()或者PDO绑定;路径参数用realpath()校验是否在允许目录内;rewrite规则尽量精确匹配,别用(.*)这种大口袋。另外,把display_errors关掉,别让SQL报错直接回显——我见过太多站,伪静态开着,报错开着,等于给渗透测试人员递刀。

说回那个朋友。后来他把id改成intval($_GET['id']),又把Nginx规则从(.*)改成([0-9]+)。再试57',页面正常显示"文章不存在"。他松了口气。我说别急,你后台登录页还是/admin.php,没做任何限制。他愣了一下,说那个没人知道。我没接话。

伪静态这东西,就像给门刷了层漆。漆好看,但锁还是那把锁。你刷漆的时候要是把锁眼堵了,或者把钥匙孔扩大了,那还不如不刷。

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

Copyright © 2016 Powered by 伪静态渗透,烟消火灭网   sitemap

回顶部