uWSGI 未授權訪問漏洞
Path uwsgi/unacc
uWSGI是一款Web應用程序服務器,它實現了WSGI、uwsgi和http等協議,并支持通過插件來運行各種語言,通常被用于運行Python WEB應用。uwsgi除了是應用容器的名稱之外,它和Fastcgi之類的一樣,也是前端server與后端應用容器之間的一個交流標準。目前nginx,apache也支持uwsgi協議進行代理轉發請求。
uWSGI支持通過魔術變量(Magic Variables)的方式動態配置后端Web應用。如果其端口暴露在外,攻擊者可以構造uwsgi數據包,并指定魔術變量UWSGI_FILE,運用exec://協議執行任意命令。
參考鏈接:
- https://github.com/wofeiwo/webcgi-exploits/blob/master/python/uwsgi-rce-zh.md
- https://xz.aliyun.com/t/3512
- https://uwsgi-docs.readthedocs.io/en/latest/Vars.html
漏洞環境
執行如下命令啟動nginx+uwsgi環境:
docker-compose up -d
環境啟動后,訪問http://your-ip:8080即可查看一個Web應用,其uwsgi暴露在8000端口。
漏洞復現
使用poc.py,執行命令python poc.py -u your-ip:8000 -c "touch /tmp/success":

執行docker-compose exec web bash進入容器,可見/tmp/success已經成功執行:

Vulhub 文檔
推薦文章: