您现在的位置是:时尚 >>正文

uwsgi 路径遍历漏洞

时尚9人已围观

简介uwsgi的路径遍历漏洞,说白了就是攻击者能通过构造特殊URL,绕过你设定的目录限制,直接读取服务器上任意文件。这问题不是理论上的,2021年爆出的CVE-2021-39228就实打实影响了一堆Pyt ...

uwsgi的路历漏路径遍历漏洞,说白了就是径遍攻击者能通过构造特殊URL,绕过你设定的路历漏目录限制,直接读取服务器上任意文件。径遍这问题不是路历漏理论上的,2021年爆出的径遍CVE-2021-39228就实打实影响了一堆Python应用。

漏洞出在uwsgi对HTTP请求中PATH_INFO的路历漏处理上。正常情况下,径遍你配置了static-map /static=/var/www/static,路历漏那访问/static/logo.png就对应读取/var/www/static/logo.png。径遍但问题来了——如果请求路径里带了..,路历漏某些版本uwsgi没做足够严格的径遍规范化处理。

举个真实例子。路历漏攻击者发送GET /static/../../../../etc/passwd HTTP/1.1,径遍服务器解析时,路历漏如果没拦下..,最终文件路径可能变成/var/www/static/../../../../etc/passwd,系统一解析,直接跳到根目录的etc/passwd。你以为是读静态图片,实际把用户密码哈希都吐出去了。

更麻烦的是,这漏洞不单影响静态文件服务。uwsgi经常配合Nginx用,Nginx把请求转发给uwsgi时,如果Nginx自己做了路径清理但uwsgi没做,就会产生不一致。攻击者可以利用这种差异,把恶意路径塞进请求头里,让uwsgi拿到的是未清理的原始路径。

我自己测试过一个老版本uwsgi(2.0.18之前),构造/static%2e%2e/%2e%2e/secret.txt这种URL编码变体,居然也能绕过。因为uwsgi先解码百分号编码,然后再拼路径,但解码后的..没被过滤。这种细节,光靠黑名单过滤根本堵不住。

修复其实不复杂。官方在2.0.18版本后,对静态文件路径做了严格规范化——先解析所有..,再检查最终路径是否还在允许的根目录内。如果你用的是旧版本,赶紧升级。如果没法升级,临时方案是在Nginx层加merge_slashes off和正则拦截\.\.,但这只能算权宜之计。

我看过不少生产环境的配置,很多团队只关注业务代码漏洞,对中间件配置掉以轻心。uwsgi的static-map、static-safe这些指令,用起来方便,但背后的路径解析逻辑你得门儿清。别以为套了个Nginx就安全了,两层服务器之间任何一处对路径处理不一致,都可能成为突破口。

最后提醒一句,测试这漏洞时别拿生产环境开玩笑。本地起个docker,装个带漏洞的uwsgi版本,模拟一下就能感受到问题的严重性。路径遍历看着简单,但造成的后果往往是直接读取数据库配置、SSH密钥这类敏感文件。你代码写得再安全,中间件漏个洞,全白搭。

Tags:

相关文章

  • 南宁建设监理协会网络安全培训

    时尚

    南宁建设监理协会这次网络安全培训,来得比往年都早。早上九点,会场里已经坐满了人,不少是项目上直接赶来的总监和资料员,工装都没换,裤腿上还沾着灰。 培训没有从“什么是网络安全”这种老掉牙的开场讲起。讲师 ...

    【时尚】

    阅读更多
  • mac允许所有来源

    时尚

    双击下载的 .dmg 文件,拖进 Applications 文件夹,然后——打不开。“无法打开,因为 Apple 无法检查其是否包含恶意软件。”你点右键选“打开”,系统弹出一个更啰嗦的对话框,还是只给 ...

    【时尚】

    阅读更多
  • 安全生产问题深反思 查漏洞 固根基讨论

    时尚

    去年冬天,某化工厂的爆炸声震碎了周边三公里的玻璃。事后调查组翻出一摞巡检记录,每一页都打着勾,密密麻麻的“正常”二字。可就在爆炸前两小时,操作工老张闻到空气里有股淡淡的酸味,他犹豫了一下,没上报——因 ...

    【时尚】

    阅读更多


友情链接