一.准备知识
1.upload-labs是一个使用php语言编写的,专门收集渗透测试过程中遇到的各种上传漏洞的靶场。目前一共19关,每一关都包含着不同上传方式。
二.解题开始
第一关(js绕过)
1.选择一个php文件,发现无法上传。
方法一:
根据上面发现只可以上传jpgl.pngl.gif类型的文件
直接禁用js就可以上传了,以火狐浏览器为例,按f12,在‘调试器’面板最右边有个设置按钮,禁用js,
禁用js后上传原先的文件就可以直接上传了,右键图片复制图片链接,成功上传、
不过在实战中直接禁用js插件会导致一些页面无法正常显示,还是存在着一些缺陷,所以这种方法打打靶场就OK了。
方法二: 使用抓包
gif改成php,点击发送。就上传成功。
第二关()
1.查看提示看到是在服务端对数据的MIME进行检查,
2.MIME验证就是验证文件的类型。
3.所以我们的思路就是用burp抓包然后修改文件的类型。
抓包后修改红框里的内容,Content-Type就是文件类型,通过关卡查看源码可以看到允许上传的类型有三种:image/jpeg、image/png、image/gif,将红框里的内容改为其中一种就可以成功上传文件。
对红框中内容进行修改。
第三关
1.看下原码,发现黑名单禁用.asp’, ".aspx’, ".php’, ".jsp’
2.这时候我们就要想办法绕过,在网上查了一下,说黑名单规则不严谨,在某些特定环境中某些特殊后缀仍会被当作php文件解析 php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml。直接上传一个名为 的文件,可以发现直接上传成功。
第四关
查看关卡源码,发现黑名单比第三关多了很多。我们用.htaccess
.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
Unix、Linux系统或者是任何版本的Apache Web服务器都是支持.htaccess的,但是有的主机服务商可能不允许你自定义自己的.htaccess文件。
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 。
笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。
首先创建一个.htaccess文件(文件名就为.htaccess)内容如下:
AddType application/x-httpd-php .jpg.txt
第五关
前置知识
方法一:.user.ini
先上传.user.ini文件 再上传含有后门代码的111.jpg文件 根据提示:上传目录存在php文件(readme.php)
所以readme.php会自动包含111.jpg里面的代码
方法二:查看源码,和第四关对比,发现这关没有转换大小写的代码
这样我们就可以上传大小写混合的后缀名来进行绕过。上传一个11.Php7文件,直接上传成功。