webshell:以网页文件形式存在的一种命令执行环境(是一种网页后门),即网页木马文件。
题目中出现的UPLOAD_PATH都是我们靶场文件夹下面的upload文件夹,如果没有请手工创建。
Pass-01(js检查)
上传一句话木马,这明显的是一个js的alert提示框。我们就来尝试进行绕过。
第一关是一个针对于前端的验证,也就是使用JavaScript进行验证。
方法1:brup抓包改包绕过前端
尝试上传一个jpg格式的图片,成功。
提示:本pass在客户端使用js对不合法图片进行检查!
判断文件后缀的代码在前端还是后端,尝试上传一句话木马,用burp进行抓包,并没有发包,说明后缀代码在前端。
将文件php后缀改成jpg后上传,可以上传
再进行抓包,在把后缀jpg改成php,forward。
查看图像地址,成功修改。
使用中国蚁剑连
方法2:审查元素,删除判断函数
删除这个函数再上传即可。
方法3:浏览器禁用js
进去后搜索javascript.enabled改成flase即可。
Pass-02(content-type检查)
mime:多用途互联网邮件扩展类型。
是设定某种扩展名的文件用一种应用程序来打开的方式类型(规定了扩展名)
其content-type(mime)是由客户端根据你上传的文件生成的,但限制只能是jpg/image格式,所以抓包改就好了.
尝试上传一句话木马,brup抓包,这次发包了。
查看源码,后端只检查了content-type,改包一下即可。
Pass-03(黑名单不全)
修改php后缀为php6即可,其他修改方式也可以,除了基础后缀可以,其他的可能需要经过特殊解析。
Pass-04(上传.htaccess)
黑名单中很多后缀,但是没有.htaccess,我们可以上传.htaccess文件更改apache配置
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。
通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。<FilesMatch "hack.jpg"> SetHandler application/x-httpd-php </FilesMatch>
用记事本写脚本,把jpg修改成php格式,另存为.htaccess名,格式选择全部。
Pass-05(上传.user.ini)
php.ini是php的配置文件,.user.ini中的字段也会被php视为配置文件来处理,从而导致php的文件解析漏洞。
user_ini.filename 设定了 PHP 会在每个目录下搜寻的文件名;如果设定为空字符串则 PHP 不会搜寻。默认值是.user.ini。
引发.user.ini三个条件:服务器语言为php;
服务器使用CGI或FastCGI模式;
上传目录下要有可执行的php文件。
我们上传一个内容为auto_prepend_file=1.gif的.user.ini文件,然后在上传一个命名为1.gif的一句话木马,
再连接的时候把文件名改成readme.php(这个文件要等待一定时间才能写好。)
**.user.ini文件里的意思是 所有文件都自动包含1.gif文件。.user.ini相当于一个用户自定义的php.ini。*
Pass-06(大小写绕过)
Pass-07(后缀名加空格)
Pass-08(后缀名加.过滤)
原理:Windows系统在存储文件时会自动去掉文件名末尾的点和空格。
这里url末尾的点,对资源的访问没啥影响,我试了一下,多加几个点或者不加点都能访问到,但是换成其他字符不行。
Pass-09(后缀名加::$DATA)
原理:在php+Windows的环境下,如果文件名+::$DATA会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名
查看图片
将后缀::DATA去掉即可。
用中国蚁剑连接成功。
Pass-10(点空格点过滤)
Pass-11(双写php过滤),pphphp跟sql双写注入类似。pphphp被过滤后还剩php。
补充:
在Apache的解析顺序中,是从右到左解析,如果最右侧的扩展名不可识别,就继续往左判断,直到可解析为止
1 | 如果上传文件名为1.php.xxxx |