文件上传绕过在实战中的应用
文件上传
* 前端校验绕过
1
黑名单绕过content-type绕过内容绕过截断绕过windows系统下的文件上传中间件
* apache解析漏洞
1
IIS解析漏洞nginx解析漏洞tomcat 特殊上传编辑器上传漏洞
文件上传
文件上传漏洞是指攻击者通过对被攻击网站的文件上传功能进行利用,上传恶意文件来获得对用户资源和敏感数据的访问权限。攻击者通常会利用弱密码、错误配置等漏洞来上传恶意文件从而执行恶意代码。这些恶意代码可以是木马、病毒、恶意脚本、后门等,这些文件通常被隐藏在网站的文件目录中,从而可以让攻击者在未被发现的情况下长时间控制网站。
文件上传漏洞是一种非常危险的安全漏洞,因为攻击者可以利用该漏洞来直接入侵网站,并以此进行任何非法活动,如窃取用户数据、篡改网站内容等。因此,网站管理员需要定期对其网站进行安全测试和漏洞扫描,以确保系统的安全性。
前端校验绕过
在上传一句话时,前端提示:
类似这种的一般都存在前端校验。
绕过:
抓包
可以看到只能上传png格式:
将一句话后缀改为png上传,进行抓包:
即可上传成功。
jsp、aspx等类型同理即可。
前端f12修改
直接前端双击要修改的内容:
修改后确认,即可直接上传php:
黑名单绕过
黑名单绕过是一种文件上传漏洞的攻击方法,攻击者使用类似于修改文件类型、绕过文件格式限制等技术将恶意文件上传到网站中。黑名单是一种安全措施,可以限制上传文件的类型和大小,从而防止非法用户上传不必要的文件,例如,不允许上传.exe,
.sql等文件格式。
然而,黑名单的限制是不完全的,攻击者可以利用文件重命名或使用网络传输协议的漏洞,绕过黑名单,上传恶意文件,从而控制目标计算机或窃取非法数据。
为了防止黑名单绕过攻击,网站管理员可以使用白名单,仅允许上传经过验证的文件类型,以及通过更新系统安全补丁来修补网络传输协议相关漏洞。此外,网站管理员还应该定期进行安全审计和漏洞扫描,以检测文件上传漏洞和其他可能的安全漏洞。
1. php上传时可解析后缀
PHP文件上传时,黑客可以使用各种文件类型的后缀名来绕过黑名单限制,从而上传PHP一句话木马文件。以下是一些常用的恶意文件扩展名来绕过黑名单的示例:
1.phtml - (PHP Html模板扩展),这种扩展名非常常见,因为PHP环境支持使用.phtml文件扩展名的PHP页面。
2.php5/.php4/.php3/.php2 - 通过使用其他以.php为结尾的数字可执行文件名字母,黑客可以轻松绕过文件上传时允许的特定文件类型。
3.png/.gif/.jpg - 黑客可以将PHP源代码嵌入在图片文件中,然后通过将文件扩展名更改为允许上传的图片类型来上传它们。
4.phpt/.pht/.wphp - PHP甚至允许其他扩展名(.phpt、.pht、.wphp),黑客可以使用这些扩展名来绕过文件上传时特定文件类型的限制。
5.inc/.txt - 黑客可以将PHP代码保存在.inc或.txt文件中,然后使用.htaccess将这些文件的MIME类型设置为application/x-httpd-php,将它们伪装成有效的PHP文件。
123456789
注意,以上是常用的一些示例,但黑客可能会使用其他扩展名和方法来绕过黑名单。因此,建议上传函数增加正确的mime类型验证和其他的安全验证机制,以提高文件上传功能的安全性。
2. jsp上传时可解析后缀
在Java Web应用程序中,通常只有一些特定的文件扩展名可以在服务器端解析并执行,这些文件类型通常与Java相关。以下是一些可能会在Java
Web应用程序中使用的文件扩展名:
1.jsp: Java Server Pages 文件,包含 Java 代码和 HTML 格式标签,在服务器端动态生成 HTML 页面。
2.jspx: 扩展名为 .jsp 的 XML 版本。使用 XML 格式标记而不是 HTML。
3.java: Java 源代码文件,包含 Java 类和方法。Java 编译器将 .java 文件编译成 .class 文件。
4.class: Java 字节代码文件,由 Java 编译器从 .java 源代码文件生成的文件。服务器使用 Java 虚拟机(JVM)执行这些文件。
5.jar: Java Archive 文件,包含预编译的 Java 类和其他文件。
6.war: Web Archive 文件,包含 Web 应用程序的所有内容,例如 HTML 页面,JSP 文件和 Servlet,以及其他相关文件和目录。
1234567891011
注意,这只是一些常见的Java
Web应用程序文件扩展名列表。尽管这些文件类型通常是安全的,但攻击者仍可能通过操纵这些文件类型来实施攻击,因此您仍然需要确保您的Web应用程序可以检测和防止这些攻击。
在 Java Web 应用程序中,.jsp 和 .java 文件通常包含与应用程序的业务逻辑有关的 Java 代码。 .class 和.jar
文件包含的字节代码和类用于执行程序的实际工作。 .war文件则是将不同类型的文件打包到一起,以便可以轻松地部署和分发组成应用程序的不同文件和资源。
3. asp上传时可解析后缀
在 ASP (Active Server Pages) 网站中,以下是常见的可以被解析的后缀名(扩展名):
1.asp - Active Server Pages文件,可以包含VBScript或JScript代码,由IIS解析执行,用于动态生成HTML页面。
2.aspx - ASP.NET Web形式页面,可以包含C#或VB.NET代码,由ASP.NET运行时解析执行。
3.ashx - ASP.NET HTTP处理程序,提供了一种一般化的方式来处理HTTP请求并生成HTTP响应;通常用于动态生成图片、文件下载、Web API部分等。
4.ascx - ASP.NET用户控件文件,用于将多个ASP.NET页面间共用的代码封装成一个“控件”,提高代码重用率.
5.cer - X.509证书文件。
6.cdx - Microsoft Visual FoxPro封锁文件。
7.idc - 包含有关Internet数据查询 (IDQ)的信息。
8.ida - IIS Active Server Pages内容文件。
9.idq - IIS Internet数据查询文件。
10.inc - 包含其他文件的文件(通常把多个文件都组合在一个文件中共用)。
11.shtml - HTML文件,可以嵌入SSSI(服务器端包含)指令,用于动态地添加服务器端信息到页面中。
12.stm - Active Server Pages文件,已不再建议使用,与ASP相似,但比纯HTML页面更加灵活。
123456789101112
以上后缀均可在asp网站执行。。
在 ASP 网站中,.asp 和 .aspx 文件通常包含与应用程序的业务逻辑有关的代码,以及服务器端代码在响应用户在 Web页面上的交互时如何动态处理
HTML 页面。 .ascx文件包含了预定义的自定义控件,在应用程序中完成特定的任务,例如数据检索、数据可视化和动画效果等。
请注意,ASP 和 ASP.NET 现在已经被视为过时的技术,有安全漏洞,有一些不建议使用它们来开发新的Web应用程序。
一般情况下,aspx权限较asp高。
4、大小写绕过
攻击者可能会利用大小写区分不敏感的文件系统来绕过文件名过滤器。例如,攻击者可以使用.php或者.PHP的两种不同扩展名来隐藏脚本文件,绕过服务器对于文件类型的检查。
content-type绕过
content-type绕过,又叫content-type欺骗。Content-type绕过是指利用不同的技巧和方法绕过Web应用程序中的Content-
Type过滤器,从而将特定类型的数据发送到Web应用程序,以获得攻击者所需的响应。以下是一些常见的内容类型绕过技巧:
1、添加特殊字符
攻击者可以在Content-Type值中添加一些特殊字符,如分号、空格等来绕过检测,例如:Content-Type: image/jpeg; php
这种方式利用分号分隔了jpg和php两种文件类型,诱骗服务器将上传的文件认为是jpg类型,但实际上它是一个php脚本文件。
2、修改文件后缀
通过修改文件的后缀名,来欺骗服务器的文件类型检测机制。例如,将上传的PHP文件的扩展名由”.php
“改为”.jpg
“,然后在Content-
Type头部声明文件类型为 image/jpeg。这样可以成功上传并执行的PHP文件,从而执行任意代码。
3、欺骗MIME类型
首先,攻击者需要通过Burp Suite抓取文件上传的请求。假设上传的文件名是”malware.php”。
然后,攻击者可以通过对请求头进行修改,更改Content-Type头的值为”image/jpeg”。可以使用Burp
Suite或其他类似的代理工具来轻松实现这一点。这样做可以欺骗服务器,使它错误地认为上传的是JPEG格式的图片。
最后,攻击者重新发送修改后的请求,以上传恶意文件。由于服务器认为上传的是JPEG图片,所以文件将被放行,即使上传的实际是一个可执行的PHP脚本,也将被视为正常的图片文件。
值得注意的是,对于纯粹基于文件扩展名的文件类型检查,MIME
type欺骗是常用的技巧之一。但是,一些开发人员也会使用MIME类型检查作为一种安全防范措施,这时候攻击者在上传文件时,需要更多的技术手段来绕过类型检查,以上传恶意文件。
4、空字节攻击
在Content-Type头以及文件后缀名后面增加空字节(%00),使服务器在处理文件类型时截断ContentType值,从而识别出不同的文件类型。
Content-Type: image/jpeg%00.php
1
例如,攻击者可以在Content-Type中插入双写的null字符 0 0
,使得服务器只识别到第一个null字符前的字符,从而认为上传的是合法格式的文件。
5、Content-Type 注入
攻击者可以在文件名后面添加”;Content-Type: image/jpeg
“的后缀,使服务器对于这里的Content-
Type进行解析,从而达到绕过限制验证的目的。
6、伪造请求头
攻击者可以通过自定义请求头来绕过content-type的校验,导致服务器无法判断上传文件的类型。比如使用curl工具,通过-H参数来添加自定义请求头,如:
curl -H "Content-Type: image/jpeg" https://www.example.com/upload.php --data-binary "@file.jpg"
1
7、Content-Disposition
攻击者通过伪造Content-Disposition,来欺骗服务器以为上传的是合法类型的文件,绕过黑名单验证。比如攻击者可以在Content-
Disposition中设置文件名为xxx.php,让服务器误认为上传的是图片文件而不是恶意代码文件。
攻击者可以利用Content-Disposition HTTP头来绕过服务器端的文件类型检查。Content-
Disposition是Web标准,用于指定如何呈现文件。攻击者可以使用Content-
Disposition头,告诉服务器要将文件当成另一种类型来处理。例如,Content-Disposition: attachment; filename="malware.PDF"
在这个例子中,服务器应该将上传的文件作为PDF文件处理,但实际上,这是一个恶意的PHP文件。
举例 :假设目标网站允许用户上传图片,并通过以下方式上传了一个名为”avatar.jpg”的文件:
xml Content-Type: image/jpeg
攻击者可以通过修改Content-Type,从而绕过检测上传一个可执行的PHP文件:
xml Content-Type: image/jpeg; php
这样使用上述content-
type,即便上传一个“avatar.jpg”文件,实际上这是一个php脚本文件,攻击者成功绕过了文件类型检测机制,该文件会被服务器识别为php文件并执行其中的恶意代码。
内容绕过
1、伪造文件类型
攻击者可能会通过修改文件头部信息,伪造文件类型并使其符合服务器限制的文件类型。因此,服务器不能仅仅依靠文件扩展名或 MIME 类型来进行限制。
例如上传图片处校验内容可以添加:GIF89a
2、利用隐藏属性
攻击者还可以利用 PNG
和其他图像格式的隐藏属性,例如“zlIT”、“vrIo”和“txtC”等。这些代码会认为可能会绕过文件扩展名过滤器,从而实现上传恶意代码的目的。
3、利用 Exif / IPTC 元数据
攻击者还可以利用 Exif / IPTC 元数据,这些元数据是存在于 JPEG 和其他图像格式中的元数据,可以包含文本和其他字段。攻击者可以将恶意代码翻译成
Exif / IPTC 字段中的文本,并将其保存到图像中以绕过文件字符过滤器。
4、拆分文件
如果限制文件大小的方法不充分,攻击者可以通过在上传之前将大文件拆分成多个小文件并分别上传来绕过限制,在上传时,攻击者可能会将文件重新组合起来。在客户端使用
JavaScript 可以很容易地完成这个任务。
除了图片文件格式转换、利用隐藏属性和利用 Exif / IPTC 元数据之外,攻击者还可以使用其他一些绕过方式对文件上传限制进行绕过,例如:
1、嵌入格式化字符
攻击者可能在文件名中嵌入格式化字符(如 Unicode
字符、十六进制码),以绕过通常用于过滤特殊字符的服务器端脚本。攻击者还可能随意添加多个文件扩展名,从而创建看似安全的文件,并骗过文件类型检查器。
2、使用受信任的网络
攻击者可能会在受信任的网络(如 Dropbox、Google Drive 等)上存储恶意文件,然后通过 Web Shell
或其他手段将该文件传输到目标服务器上。这种方法可用于绕过上传限制和防火墙阻止。
3、压缩文件
攻击者可以将恶意文件压缩成 ZIP、GZ 或其他格式的文件,然后上传到目标服务器。这种方法有助于绕过文件类型和大小限制,因为通常压缩文件会更小并且更难检测。
截断绕过
1、文件名后缀截断
攻击者可能会将文件名截断到一定程度,以使其看起来更像一个允许上传的文件类型。例如,攻击者可以使用类似.php.1234
这样的命名方式,将上传的 PHP
脚本命名为合法的图像文件(.jpg或.png)。这样一来,服务器可能会忽略脚本文件名的.php
后缀。
攻击者可能利用空字节(
)来截断文件名,以获得文件上传权限。空字节在许多编程语言中表示字符串的结束,因此它可以被用来绕过文件名过滤器。例如,攻击者可能会提交类似于”example.jpegphp
“的文件名。
2、双扩展名
攻击者可能会使用双扩展名(如.phtml.jpg
)将一个可执行的脚本文件绕过服务器的文件类型检查器,使它看起来像一个jpg格式的文件。这种方法可以欺骗服务器认为这是一个可信任的文件,并且允许上传。
或者
1.php;jpg或者1.php%00.jpg或者1.php/00.jpg
1
3、目录截断
攻击者可能会在文件名中加入控制字符,如”../
“,对文件名中的目录进行截断。例如,攻击者可以将PHP脚本命名为”../../../../../etc/password
“,并上传到服务器上,以获取/etc/passwd文件的信息,也可以利用../upload/1.php
方式。
或者
GET型:../upload/1.php%00
POST型:../upload/1.php后进行16进制hex修改为00
4、无限制文件长度
攻击者可能会故意创建一个包含大量空字节的文件名,从而绕过服务器对于文件名长度的限制。这样一来,攻击者就可以上传他们想要的任何类型的恶意文件,而不会被服务器的文件名长度限制器所拒绝。
windows系统下的文件上传
上传shell.php,抓包改为
shell.php.
后缀加
.
shell.php::$DATA
shell.php:1.jpg
shell.php::$DATA…….
中间件
apache解析漏洞
利用apache解析文件从右往左解析
1、上传shell.php.xxx.abc
即可解析为php文件
2、上传.htaccess文件
内容:
<FilesMatch "filename">
SetHandler application/x-httpd-php
</FilesMatch>
123
filename为想要上传的文件后缀名,例如:png
然后再上传shell.png,即可解析为php。
IIS解析漏洞
IIS6.x版本:
1、会将*.asp;.jpg解析为asp文件执行
原理:服务器默认不解析
;
后边的字符
2、会将.asp
目录下的文件解析为asp文件
例如上传时可以创建文件夹或者可以利用文件路径../upload/1.asp/shell.png
即可将shell.png解析为asp。
除此之外,还默认会将扩展名为.asa,.cdx,.cer
解析为asp(IIS5.x中也适用)
IIS7.版本
在Fast-CGI运行模式下,在上传图片1.png加/.php会将1.png解析为php
例如:
上传图片🐎1.png
,路径为:http://hack.com/upload/1.png
工具连接时地址为:http://hack.com/upload/1.png/.php
即可。
若为404,则证明关闭了Fast-CGI
nginx解析漏洞
上传图片🐎1.png
,路径为:http://hack.com/upload/1.png
工具连接时地址为:http://hack.com/upload/1.png/xx.php
即可解析。
tomcat
需要进入tomcat管理配置界面(一般弱口令)
shell.jsp压缩,修改后缀,上传成功,访问shell/shell.jsp即可。
shell.jsp-->shell.zip-->shell.war
1
特殊上传
1、利用时间差,执行木🐎文件:
假如上传shell.php会在一定时间内会被查杀,可以利用bp不断发包,然后刷新界面,可以成功执行shell.php。
2、二次渲染图片
上传图片服务器会进行二次渲染,会改变图片内容,可以利用winhex对比前后图片,将恶意代理插入未改变的代码里,在不破坏图片的情况下可以绕过该限制
编辑器上传漏洞
根据编辑器版本型号可以上传。一般f12可以查看到编辑器版本型号等。
常用编辑器:
FCKeditorEWEbeditor
CKFinder
UEDITOR
DotNet TextBox
Cute Editor
1、Fckeditor编辑器
常见上传目录:
FCKeditor/editor/filemanager/browser/default/connectors/test.html
FCKeditor/editor/filemanager/upload/test.html
FCKeditor/editor/filemanager/connectors/test.html
FCKeditor/editor/filemanager/connectors/uploadtest.html
12345678910111213
FCK编辑器漏洞 “.” 变 “_” 绕过方法
在高版本fck中,直接上传或抓包修改文件名“a.asp;.jpg
”,都会将前面的点变成下划线,也就是变成“a_asp;.jpg
”。需要创建1.asp
文件夹,然后在1.asp
文件夹下上传图片🐎即可解析为asp文件。类似于前文的iis解析漏洞。
2、eWebEditor编辑器
1)后台(弱口令或者未授权)
eWeb编辑器需要登录后台,其默认数据库地址是:ewebeditor/db/ewebeditor.mdb
2)eweb遍历漏洞
利用该漏洞遍历文件目录、查看整个网站结构及敏感信息
ewebeditor/admin_uploadfile.asp?id=14&dir=./
3)修改样式
在图片类型中添加.asa
后缀,编辑器会解析为asp文件
打开“工具栏”点击按钮设置,添加插入图片的按钮,保存,上传asa文件即可。
3、Ueditor编辑器
访问http://ip:port/net/controller.ashx 控制器文件。
出现该页面表示漏洞存在。
制作asp图片🐎,放在远程下载服务器上。
制作一个上传文件的表单html文件:
<form action="http://xxxxx/controller.ashx?action=catchimage" enctype="application/x-www-form-urlencoded" method="POST">
<p>shell addr: <input type="text" name="source[]" /></p >
<input type="submit" value="Submit" />
</form>
1234
http://xxxxx/为被攻击网站
打开html,在输入框填入远程服务器木🐎文件地址
提交即可上传成功:
然后工具连接即可。
其他编辑器Google就可以找到相关测试方法,就不一一演示了。
仅供参考,具体方式具体对待
严禁在未授权的网站测试,任何违法操作均与本记录无关。
学习网络安全技术的方法无非三种:
第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。
第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
第三种就是去找培训。
接下来,我会教你零基础入门快速入门上手网络安全。
网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。
第一阶段:基础准备 4周~6周
这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
第二阶段:web渗透
学习基础 时间:1周 ~ 2周:
① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
配置渗透环境 时间:3周 ~ 4周:
① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。
渗透实战操作 时间:约6周:
① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
以上就是入门阶段
第三阶段:进阶
已经入门并且找到工作之后又该怎么进阶?详情看下图
给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
## 最后
从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。
因为入门学习阶段知识点比较杂,所以我讲得比较笼统,大家如果有不懂的地方可以找我咨询,我保证知无不言言无不尽,需要相关资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。
干货主要有:
①1000+CTF历届题库(主流和经典的应该都有了)
②CTF技术文档(最全中文版)
③项目源码(四五十个有趣且经典的练手项目及源码)
④ CTF大赛、web安全、渗透测试方面的视频(适合小白学习)
⑤ 网络安全学习路线图(告别不入流的学习)
⑥ CTF/渗透测试工具镜像文件大全
⑦ 2023密码学/隐身术/PWN技术手册大全
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
扫码领取