600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【渗透测试】文件上传漏洞:upload-labs通关简记

【渗透测试】文件上传漏洞:upload-labs通关简记

时间:2023-02-10 04:19:56

相关推荐

【渗透测试】文件上传漏洞:upload-labs通关简记

目录

🏀一、文件上传漏洞

⚽1.1 漏洞成因

⚽1.2 漏洞危害

⚽1.3 漏洞利用

⚽1.4 修复建议

🏀二、upload-labs通关简记

⚽Pass-01:前端验证,js校验后缀格式

⚽Pass-02:MIME验证,只对content-type进行了检查

⚽Pass-03:黑名单验证,限制了php、jsp等文件的上传

⚽Pass-04:黑名单验证,添加限制了php3、php5等文件的上传

⚽Pass-05:黑名单验证,添加限制了.htaccess文件的上传

⚽Pass-06:黑名单验证,添加限制了.ini文件的上传

⚽Pass-07:黑名单验证,添加使用了strtolower()函数

⚽Pass-08:黑名单验证,添加使用了trim()函数

⚽Pass-09:黑名单验证,添加使用了deldot()函数

⚽Pass-10:黑名单验证

⚽Pass-11:黑名单验证

⚽Pass-12:白名单验证

⚽Pass-13:白名单验证

⚽Pass-14:图片马上传,文件包含

⚽Pass-15:图片马上传,文件包含,添加了getimagesize函数

⚽Pass-16:图片马上传,文件包含,添加了exif_imagetype()函数

🏀三、补充资料

⚽3.1 .user.ini绕过

⚽3.2 %00截断绕过前提条件

🏀一、文件上传漏洞

⚽1.1 漏洞成因

文件上传漏洞的成因(复杂),一方面,Web应用开放了文件上传功能,并且对上传的文件没有进行足够的限制;另一方面,程序开发部署时候,没有考虑到系统特性和过滤不严格;再者就是,攻击者通过Web服务器解析漏洞绕过限制,导致可以上传任意文件。

⚽1.2 漏洞危害

(1)文件上传漏洞最直接的威胁就是上传任意文件,包括恶意脚本、可执行程序等。

(2)如果web服务器所保存上传文件的可写目录具有执行权限,那么就可以直接上传后门文件,导致网站沦陷。

(3)如果攻击者通过其他漏洞进行提权操纵,拿到系统管理权限,那么直接导致服务器沦陷。

(4)同服务器下的其他网站无一幸免,均会被攻击者控制。

⚽1.3 漏洞利用

文件上传漏洞利用需要一定的条件的:

(1)Web服务器要开启文件上传功能,并且上传api(接口)对外“开放”(Web 用户可以访问);

(2)Web用户对目标目录具有可写权限,甚至具有执行权限,一般情况下,Web目录都有执行权限。

(3)要想完美利用文件上传漏洞,就是上传的文件可以执行,也就是Web容器可以解析我们上传的脚本,无论脚本以什么样的形式存在。

⚽1.4 修复建议

(1)对上传的文件在服务器上存储时进行重命名

(2)检查上传文件的类型和大小

(3)禁止上传危险的文件类型,如jsp jar war等

(4)只接受指定类型的文件

🏀二、upload-labs通关简记

Pass-01:前端验证,js校验后缀格式

绕过方法:

上传时将php文件后缀改为允许的格式,如jpg,再利用burpsuite拦截数据包,修改后缀为php重新上传即可

Pass-02:MIME验证,只对content-type进行了检查

绕过方法:

同Pass-01,或者直接上传php文件然后拦截数据包修改content-type为允许的格式,如image/png

Pass-03:黑名单验证,限制了php、jsp等文件的上传

绕过方法:

(1)可以使用php3php5phtml后缀绕过上传,但是需要配置httpd.conf文件中的#AddType application/x-httpd-php .php .phtml为AddType application/x-httpd-php .php .phtml .php3 .php5,并且注意要去掉#;

(2).htaccess文件绕过,文件内写入语句SetHandler application/x-httpd-php,意为将所有文件均解析为PHP文件

Pass-04:黑名单验证,添加限制了php3、php5等文件的上传

绕过方法:

.htaccess文件绕过

Pass-05:黑名单验证,添加限制了.htaccess文件的上传

绕过方法:

(1).user.ini文件绕过(要求php版本大于等于5.3.0版本且为nts版本),新建一个.user.ini文件并写入内容:auto_append_file=test.txt或者auto_prepend_file=test.txt(其中test.txt文件为木马文件),然后上传该文件和test.txt文件,再访问上传目录下的readme.php,即可将test.txt内的内容脚本正常执行;

(2)修改后缀为php. .”(php点空格点)即可绕过

Pass-06:黑名单验证,添加限制了.ini文件的上传

绕过方法:

大小写绕过,虽然过滤了很多类容,但是没有使用strtolower()函数,因此可使用大小写绕过黑名单

Pass-07:黑名单验证,添加使用了strtolower()函数

绕过方法:

空格绕过,发现其未使用trim()函数(此函数的作用即为去除文件名前后的空格),因此可以使用空格绕过黑名单

Pass-08:黑名单验证,添加使用了trim()函数

绕过方法:

点号绕过,发现其未使用deldot()函数(此函数的作用即为去除文件名末尾的点),因此可以使用点号绕过黑名单

Pass-09:黑名单验证,添加使用了deldot()函数

绕过方法:

特殊字符::$DATA绕过,发现其对::$DATA进行处理,因此可以在文件名末尾添加字符串::$DATA绕过

Pass-10:黑名单验证

绕过方法:

点空格点绕过,使用了deldot()函数去除文件名末尾的点,但是该函数是从后向前检测,遇到空格时会停止,因此可以在文件名末尾添加点空格点绕过

Pass-11:黑名单验证

绕过方法:

双写绕过,使用了str_replace()函数检测黑名单存在的字符串并替换,因此可以使用一双学绕过黑名单

Pass-12:白名单验证

绕过方法:

%00截断绕过(GET),在文件上传路径后添加文件名+%00,并修改filename为允许的文件后缀,上传成功后直接访问在文件上传路径后添加的文件名即可

Pass-13:白名单验证

绕过方法:

%00截断绕过(POST),在文件上传路径后添加文件名+%00,并且对%00进行url解码,并修改filename为允许的文件后缀,上传成功后直接访问在文件上传路径后添加的文件名即可

Pass-14:图片马上传,文件包含

绕过方法:

利用copy命令将图片与木马文件融合为图片马,上传成功后利用文件包含漏洞执行

Pass-15:图片马上传,文件包含,添加了getimagesize函数

绕过方法:

getimagesize()函数会读取目标文件的文件头来判断是否为图片文件,因此任可使用Pass-14的图片马进行绕过

⚽Pass-16:图片马上传,文件包含,添加了exif_imagetype()函数

绕过方法:

exif_imagetype()函数读取图像的第一个字节并检查后缀,速度比getimagesize()函数快得到,但需要开启php_exif模块,任可使用Pass-14的图片马进行绕过

🏀三、补充资料

⚽3.1 .user.ini绕过

配置文件(php.ini)在 PHP 启动时被读取。对于服务器模块版本的 PHP,仅在 web 服务器启动时读取一次。对于 CGI 和 CLI 版本,每次调用都会读取。除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。

自php5.3.0起,PHP支持基于每个目录的.htaccess风格的INI文件。此类文件仅被CGI/Fastcgi sapi处理。两个新的 INI 指令, user_ini.filename 和 user_ini.cache_ttl 控制着用户 INI 文件的使用。

user_ini.filename 设定了 PHP 会在每个目录下搜寻的文件名;如果设定为空字符串则 PHP 不会搜寻。默认值是 .user.ini。

user_ini.cache_ttl 控制着重新读取用户 INI 文件的间隔时间。默认是 300 秒(5 分钟)

.user.ini实际上就是一个可以由用户”自定义“的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR 、 PHP_INI_USER”的设置

有两个配置,可以用来制造后门:

auto_append_file ; 指定一个文件,自动包含在要执行的文件前。

auto_prepend_file ; 指定一个文件,自动包含在要执行的文件后。

使用.user.ini解析漏洞的前提条件

a.服务器脚本语言为php

b.服务器使用cgi/fastcgi模式,即nts版本

c.上传目录下有可被执行的php文件

⚽3.2 %00截断绕过前提条件

a.php版本小于5.3

b.关闭magic_quotes_gpc魔术函数

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。