upload-lab
序言: 最新需要补充点web安全的知识,找了些靶场来练手,先部署环境
下载
搭建
1 | docker pull c0ny1/upload-labs |
注意需要进docker里创建upload文件夹以及,设置权限为777
1
查看源代码,发觉前端验证,抓包或者禁用js都行,这里直接禁用js绕过,
2
这里不知道怎么绕过,没系统学过,查找wp后说可以改content-type绕过,因为服务端这里可能做了检测,接着便改content-type,过程改错了,改了打包的content-type,实际要改的是底下的WebKit里面的
1 | Content-Type:image/gif |
- mime是多用途互联网邮件扩展类型,用于设定某扩展名文件的打开方式,如.png在数据包的中的content-type为image/png
- $_FILES是一个全局变量数组,各个值的含义为
$_FILES[‘myFile’][‘name’] | 上传文件的原名称 |
---|---|
$_FILES[‘myFile’][‘type’] | 文件的 MIME 类型 |
$_FILES[‘myFile’][‘size’] | 已上传文件的大小,单位为字节 |
$_FILES[‘myFile’][‘tmp_name’] | 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定 |
$_FILES[‘myFile’][‘error’] | 和该文件上传相关的错误代码 |
查看源码
1 | $is_upload = false; |
确实如此
3
我还是学原理吧,这里
1 | $is_upload = false; |
发觉是黑名单,查询wp后得知,可以用.phtml .php3后缀可以绕过
百度一番
利用apache的解析特性:它将.php3,.php5,.phtml等都可以解析为php
配置apache
1 | AddType application/x-httpd-php .php .phtml .php3 |
我感觉谁会这么傻配置这个去?
至于apache版本,可以随意输入报错获得,哈哈一本正经的说胡话,测试完毕,发觉全tmd不行,找了个.htaccess改写配置文件的方法,然后发觉也改不了,因为重命名了,这时候感觉死了,搞不定了,只能找别的方法绕过了。。。目前没有办法绕过,暂时先过
4
黑名单,没有过滤.htaccess,利用.htaccess修改解析
1 | <FilesMatch "03.jpg"> |
再上传一个03.php,抓包改为jpg就行了,然后访问即可
5
还是一样的?黑名单,不过加了个.htaccess
不过这次没有转换小写,意思可以大小写绕过,上传后有球用。。。我没法读取,服务器不解析这个文件。。。哦,应该是linux的锅,linux大小写敏感,win下不敏感,所以应该解析不了
6
什么鬼,网上的wp全都是不能用的,我空格绕过了,连不上的马。。
原理
- 查看源码,没有对文件名的空格去除
- windows中文件扩展名后的空格会做空处理,但是文件名后加空格使得本来的扩展名改变,绕过黑名单
7
windows特性??
1.php. 他会自动去除最后一个.,所以我linux不用测试了
原理
- 查看源码,没有去除文件名后的点
- windows下最后一个.会被自动剔除
8
又是windows特性
1.php::$DATA这个可以绕过
原理
windows下,如果上传的文件名后缀为php::$DATA会在服务器生成后缀为Php的文件,内容和上传内容相同,并被解析
9
构造 1.php. . 点+空格+点
原理
查看源码,首先利用trim去除末尾空格,又l利用deldot去除末尾点,又去除空格,所以组合点空格点,去除点去除空格,最后剩下点自动剔除
10
后面不做了
别人博客,还讲原理
本文作者:NoOne
本文地址: https://noonegroup.xyz/posts/4d95e9f2/
版权声明:转载请注明出处!