upload-lab靶场练习
第一关
这一关基本上没啥好说的,由于是通过javascript去验证用户的输入就是所谓的前端验证所以直接通过抓包或者是修改前端代码就行了。
如上图将后缀名从jpg修改为php从新上传
第二关
这一关是在对文件MIME头进行检测,MIME头就是数据包中的Content-Type: image/png这个可以显示出上传文件的类型但是可以通过抓包修改或者是直接上传png或jpg格式的文件抓包手动改为脚本语言类型。
第三关
这一关是黑名单控制用户上传的文件
可以看到它禁止了常见的脚本语言的后缀上传而且是后端语言去控制的所以无法通过抓包修改后缀上传,但是我们可以上传像 .phtml .php3这样的后缀去绕过,可以这样做的前提条件是在Apach配置文件httpd.conf中将
给打开,我的这边不知道啥原因打开了还是没办法解析,就先留个小坑吧。
第四关
这一关和第三关一样是黑名单检测,而且比上一个检测的后缀更多
几乎把所有能用的后缀名都给过滤了但是没有对 .htaccess文件文件进行过滤我们也就可以先上传一个 .htaccess文件然后就可以绕过掉过滤。
.htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。
.htaccess主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。
简单点说就是它可以将一个文件指定为脚本文件执行不管是否文件类型为脚本文件的后缀
在第三关和第四关中都没有对.htaccess文件进行过滤为啥只有第四关可以使用可以看看他们对上传文件处理的这块
第三关
第四关
可以看到在第三关中会对我们上传的文件进行一个重命名的环节而第四关中没有,.htaccess文件上传时必须要以 .htaccess的样子上传而重命名后会在前面加上其他的东西就会导致 .htaccess文件无法执行
<FilesMatch "te">
SetHandler application/x-httpd-php
</FilesMatch>
//意思为将文件名中带有te的都当做php文件解析
这里还有一点htaccess攻击需要PHP版本在5.6版本以下而且还有必须是ts版本不能是nts版本nts不会解析
看到有403报错就算成功了,然后就是上传webshell文件
简单点来说htaccess上传攻击成功的条件是
- php版本在5.6一下
- php为ts版本
- 为黑名单过滤
- 上传后的文件不会被重命名(名字由自己控制)