渗透测试-Web文件上传漏洞

 一、漏洞概述

文件上传漏洞是指用户可以上传可执行脚本文件到服务器,并通过该文件执行服务器端命令。这种漏洞的产生主要是因为开发人员在上传点对文件名和文件内容未做严格过滤,导致攻击者可以上传恶意文件。

 二、漏洞危害

1. 代码执行:上传的文件如果是Web脚本语言(如PHP、ASP、JSP),服务器的Web容器会解释并执行该脚本,导致攻击者可以在服务器上远程执行任意代码。
2. 病毒或木马传播:上传病毒或木马文件,用于诱骗用户或管理员下载执行,或者直接自动运行。
3. 控制策略文件:上传如Flash的策略文件crossdomain.xml等,黑客可借此控制Flash在该域下的行为。
4. 钓鱼欺诈:上传钓鱼图片或包含脚本的图片,在某些浏览器版本中会被作为脚本执行,用于钓鱼和欺诈。
5. 其他利用方式:如将上传文件作为入口,溢出服务器的后台处理程序,或者通过本地文件包含漏洞执行脚本等。

 三、漏洞产生条件

1. 可执行路径:上传的文件能够被Web容器解释执行,且文件上传后所在的目录是Web容器所覆盖到的路径。
2. 可访问性:用户能够从Web上访问这个文件。
3. 内容完整性:上传的文件未被安全检查、格式化、图片压缩等功能改变内容,否则可能导致攻击不成功。

 四、漏洞产生原因

1. 服务器配置不当:如允许上传的文件类型限制不严格,或者文件上传目录权限设置错误。
2. 开源编辑器漏洞:一些常用的Web编辑器可能存在未修复的上传漏洞。
3. 本地文件上传限制绕过:攻击者通过技术手段绕过本地文件上传的限制。
4. 过滤机制不完善:对上传文件的后缀、类型等过滤不严或被绕过。
5. 文件解析漏洞:利用服务器的文件解析漏洞使上传的文件被执行。
6. 文件路径截断:通过特定技术截断文件路径,使上传的文件位于可执行目录。

 五、漏洞原理

大部分网站和应用系统都有上传功能,若实现代码没有严格限制用户上传的文件后缀及类型,攻击者可上传任意PHP等脚本文件到可通过Web访问的目录,并让这些文件被PHP解释器执行,从而在远程服务器上执行任意PHP脚本。攻击者还可上传病毒、木马、WebShell等恶意文件,为后续攻击提供便利。

 六、上传文件检测流程

文件以HTTP协议上传时,通常会经过以下检测步骤:

1. 客户端JavaScript校验:一般只校验文件扩展名,判断方式是在浏览加载文件但还未点击上传按钮时弹出对话框提示允许的后缀名。
2. 服务端校验:对文件进行更全面的验证,包括文件头content-type字段校验(如image/gif)、文件内容头校验(如GIF89a)、目录路径检测、文件扩展名检测、后缀名黑名单或白名单校验、自定义正则校验等。
3. WAF设备校验:根据不同的WAF产品规则对上传文件进行检测。

 七、漏洞绕过方法

 (一)客户端绕过

1. 禁用JavaScript:通过火狐插件NOscript或禁用IE中JS脚本。
2. 修改代码:利用firbug插件元素审核修改代码,如删除校验事件或在javascript脚本中添加上传文件类型。

### (二)服务端绕过

1. 黑名单扩展名绕过
    - 找漏网之鱼:如IIS6.0中的asa和cer。
    - 大小写绕过:如在IIS6.0中上传aSp,在小于PHP5.3.29的Linux中上传pHp。
    - 其他可解析扩展名:利用Web容器可解析的其他扩展名,如jsp、jspx、asp、cer等。
2. 黑名单特殊后缀名绕过:将文件名改为如php4等,前提是服务器配置允许。
3. 配合操作系统文件命名规则绕过
    - Windows系统:利用文件名以“.”或空格结尾会被自动删除的特性,如上传test.asp.或test.asp(空格)。
    - Linux系统:利用后缀名大小写敏感性,上传pHp后缀文件(前提是PHP版本小于等于5.3.29)。
4. 单双重后缀名绕过:如将文件名改为backlion.pphphph,使过滤后的字符串重新组合成php。
5. 服务端MIME文件类型(Content-Type)绕过:通过Burp Suite修改文件的Content-Type为允许的类型,如image/gif。
6. 配合文件包含漏洞绕过
    - 运行上传文件包含脚本木马和一句话内容马:先上传txt后缀的木马文件,再上传包含该txt文件路径的php文件。
    - 利用本地文件包含漏洞:上传符合条件格式的文档,内容为一句话木马,再利用文件包含漏洞包含该文件。
7. 修改URL参数绕过:观察URL中的参数,尝试修改数据进行绕过。
8. 双重文件上传绕过:构造特定的HTML表单,同时上传多个文件进行绕过。

 (三)白名单绕过

1. 配合Web容器的解析漏洞:如IIS中的目录解析漏洞和分号解析漏洞,将文件名改为backlion.php.abc等。
2. %00截断上传绕过:将文件名改为bk.asp%00.jpg,使文件系统在读取时截断,达到攻击目的。

 (四)突破文件路径绕过

利用程序对目录的判断和建立机制,修改表单中的目录参数值,将文件写入可执行目录。

 (五).htaccess文件重写绕过

上传自定义的.htaccess和一句话图片木马,通过设置使特定文件名的文件被当作php执行。

(六)文件头内容检测绕过

使用一句话图片木马生成工具,在木马内容基础上添加合法的文件头信息,使文件通过检测。

 (七)条件竞争上传绕过

利用多线程并发访问上传的文件,在上传文件到删除文件的时间段内尝试访问,以成功写入shell。

(八)CMS、编辑器漏洞绕过

针对不同CMS或编辑器存在的上传漏洞进行绕过。

(九)对渲染/加载测试攻击内容检查绕过

向图片中加入代码注入,使用一句话图片木马,使图片正常显示的同时包含恶意代码。

(十)带WAF的文件上传绕过

1. 填充垃圾数据绕过:构造大文件,前面为垃圾内容,后面为木马内容,绕过WAF对文件内容的校验。
2. filename绕过:添加额外的filename参数,调换filename的位置,或在filename后添加空格等。
3. POST/GET的更改方法绕过:将POST请求改为GET请求。
4. 删除实体里面的Content-Type字段绕过:删除Content-Type字段或修改其值。
5. 删除Content-Disposition字段里的空格绕过。
6. 增加一个空格绕过安全狗。
7. 修改Content-Disposition字段值的大小写绕过。
8. Boundary边界不一致绕过。
9. 文件扩展名出回车绕过。
10. 多个Content-Disposition绕过。
11. 利用NTFS ADS特性绕过。
12. 文件重命名绕过。
13. 特殊的长文件名绕过。
14. 反删除绕过。
15. Windows特殊字符绕过。
16. exee扩展名绕过。
17. 去掉引号绕过。
18. 删除Content-Disposition值的form-data绕过。
19. 多个分号绕过。
20. 在boundary前添加任意字符绕过。
21. name和filename添加任意字符串绕过。
22. head头的content-type:tab绕过。
23. head头的content-type: multipart/form-data改成大写绕过。
24. head头的Content-Type: multipart/form-data;\n绕过。
25. content-disposition:\n绕过。
26. 特殊扩展名绕过。
27. ASCII > 127的字符绕过。
28. 程序与服务器之间的差异绕过。
29. 利用协议解析不一致绕过。

八、漏洞修复措施

1. 服务器配置不当:重新配置服务器,修复HTTP请求方法(PUT)等相关配置。
2. 开源编辑器上传漏洞:更新到已修复漏洞的编辑器版本。
3. 本地文件上传限制被绕过:在服务器后端对上传的文件进行严格过滤。
4. 文件解析漏洞导致文件执行:参考文件上传的相关安全配置修复文件解析漏洞。
5. 设置文件上传的目录设置为不可执行:确保上传目录下的文件无法被Web容器解析执行。
6. 判断文件类型:结合使用MIME Type、后缀检查等白名单方式判断文件类型,对图片等文件进行压缩或resize处理,破坏可能包含的恶意代码。
7. 使用随机数改写文件名和文件路径:增加攻击者访问上传文件的难度,防止特定命名的恶意文件被执行。
8. 单独设置文件服务器的域名:利用浏览器同源策略,防止一系列客户端攻击,如XSS等。

总结

文件上传漏洞是Web应用中常见且危害较大的漏洞之一。开发人员在实现文件上传功能时,必须对文件名、文件类型、文件内容等进行严格的验证和过滤。同时,服务器的配置和安全措施也至关重要。通过综合运用多种安全策略,如严格限制上传文件的类型、大小,对文件内容进行杀毒扫描,设置合理的文件存储路径和权限,监控上传日志等,可以有效降低文件上传漏洞的风险,保障Web应用的安全性。此外,定期对系统进行更新和维护,及时修复已知的安全漏洞,也是防止文件上传攻击的重要手段。

<think>好的,我现在需要处理用户关于东方通TongWeb的selectApp.jsp任意文件上传漏洞的测试方法和背景信息的查询。首先,我应该回顾用户提供的引用内容,看看有哪些相关信息可以利用。 根据引用[1],TongWeb的selectApp.jsp存在任意文件上传漏洞,攻击者可利用此漏洞获取服务器控制权限。这里提到Fofa语法和漏洞编号,可能用户需要具体的漏洞标识,但引用中并未给出编号,可能需要进一步确认或补充。引用[4]详细说明了文件上传漏洞的定义,指出问题在于服务器处理上传文件的方式不够安全,导致恶意文件如WebShell的上传。引用[2]提到Tomcat的PUT方法绕过技巧,比如使用1.jsp%20或1.jsp::$DATA来绕过后缀检查,这可能对TongWeb漏洞利用有参考价值。引用[3]则涉及漏洞验证的步骤,需要构建PoC进行测试。引用[5]更多是职业建议,可能与当前问题关联不大。 接下来,我需要整理测试背景,包括漏洞的基本情况、影响范围和危害。根据引用[1]和[4],可以说明该漏洞允许攻击者上传恶意文件,威胁服务器安全。测试方法部分需要分步骤,可能包括环境搭建、利用PoC上传文件、绕过限制(如果有)、验证上传是否成功以及后续利用。引用[2]中的绕过方法可能需要根据TongWeb的具体情况进行调整,比如是否允许特殊字符绕过后缀检查。此外,引用[3]提到的验证漏洞的方法,需要构造HTTP请求,使用工具如curl或Burp Suite发送恶意请求,并检查响应。 需要注意的是,用户提供的引用中有关于Tomcat的PUT方法绕过,但TongWeb漏洞是否涉及PUT方法还不清楚,可能需确认selectApp.jsp的上传方式是否为PUT或其他方法。此外,漏洞利用是否需要身份验证,默认账户是否存在问题(引用[5]提到TongWeb默认账户漏洞,但未详细说明),可能需要进一步信息,但用户的问题主要针对selectApp.jsp,所以可能不需要深入默认账户的问题。 在生成相关问题部分,应围绕漏洞的修复、其他相关漏洞、测试工具和影响展开。例如,如何修复该漏洞,TongWeb是否有其他漏洞,测试工具推荐,以及漏洞的具体影响。 最后,确保回答符合用户的要求:结构清晰,分步骤说明,引用正确,并且生成相关问题。同时,按照系统级指令,数学公式使用正确格式,但在此问题中可能用不上。需要检查LaTeX语法是否正确,但由于内容主要是文本和代码,可能涉及较少。使用中文回答,避免使用Markdown格式,除了代码块和引用标识。</think>### 东方通TongWeb selectApp.jsp 任意文件上传漏洞测试方法与背景信息 #### 一、测试背景 1. **漏洞定义** 文件上传漏洞是由于对用户上传文件的控制不足,导致攻击者可上传恶意脚本(如WebShell),进而控制服务器[^4]。 TongWeb的`selectApp.jsp`接口存在未严格校验文件类型及路径的缺陷,允许上传任意文件(包括恶意JSP文件),威胁服务器安全[^1]。 2. **影响范围** - 使用存在漏洞版本的东方通TongWeb中间件。 - 未修复`selectApp.jsp`接口安全限制的系统。 3. **漏洞危害** 攻击者可上传木马文件,直接获取服务器控制权限,导致数据泄露、服务中断等风险[^1][^4]。 --- #### 二、测试方法 1. **环境搭建** - 部署存在漏洞的TongWeb版本(需根据漏洞报告确认具体版本)。 - 确保`selectApp.jsp`接口可公开访问。 2. **漏洞利用(PoC示例)** 通过构造HTTP请求上传恶意文件,以下为Python脚本示例: ```python import requests url = "http://target_ip:port/selectApp.jsp" files = { 'file': ('shell.jsp', open('shell.jsp', 'rb'), 'application/octet-stream') } response = requests.post(url, files=files) print(response.status_code) # 若返回200或路径提示,可能上传成功 ``` 3. **绕过限制(可选)** - **后缀绕过**:若TongWeb过滤`.jsp`,可尝试使用`shell.jsp%20`或`shell.jsp::$DATA`(需结合系统特性)[^2]。 - **Content-Type绕过**:修改文件类型为`image/png`等合法类型。 4. **验证上传结果** - 访问上传路径(如`http://target_ip:port/upload/shell.jsp`)。 - 若返回预期结果(如WebShell连接成功),则漏洞存在[^3]。 --- #### 三、修复建议 1. 升级TongWeb至已修复版本。 2. 限制`selectApp.jsp`的文件类型,仅允许可信后缀。 3. 对上传文件进行重命名并存储到非Web目录。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值