文件上传就是把自己电脑的文件传到服务器,是个功能。
任意文件上传是漏洞。
想办法在网站根目录产生一个PHP文件带有一句马,就约等于拿下目标。(不传根目录没法访问)
文件上传:1、传的上去
2、能解析(木马能执行)
正常上传木马:*.php的一句话木马文件
靶场讲解:
Pass01前端验证校验:
在前端拦截你上传php文件。等于没校验。直接上传改成jpg后缀的php文件,然后抓包把他改回php。
Pass02后端校验(Content-Type):
抓包找到Content-Type的位置,把类型改为image/png,或者跟前段一样即可。
Pass03黑名单校验:
黑名单屏蔽了php,但是php3,php4,php5,phtml都可以。
Pass04.htaccess绕过:
黑名单把上一关可能的都屏蔽了,.htaccess,针对某个文件夹有单独策略。(黑名单一般不拦截这个)(一般伪静态的站开这个功能)
这种文件在文件夹里会被先读取策略。这个后缀是apache特有,但是nginx也有它对应的。
AddType application/x-httpd-php .jpg,在.htaccess文件里写这个,直接上传.htaccess文件(就是这个名字,点前面没东西),再上传jpg就被解析了。
(渗透难度:非法站-大型互联网-小型互联网-大型实体-小型实体-托管式网站)
Pass05后缀大小写绕过:
黑名单里没有防Php,可以绕过。(解析是不看大小写的,但是校验看)
Pass06文件后缀(空)绕过:
黑名单把所有的都转换小写在拦截了,但是php和“php空格”检测不一样,Window是一样。
抓包在文件后面加个空格就可以绕过了。
Pass07文件后缀(点)绕过:
黑名单首尾去空,但是php和php.都一样,所以抓包加个点就可以了。
Pass08::$DATA绕过:
黑名单去点了。::$DATA是Windows专有,文件流绕过。
意思是:一个文件里面可以寄生文件
(正常保存默认保存的是a.txt::$DATA,与a.txt一样。)
echo 123>a.txt:b.txt,在a的b里面写123,a里啥也没有,而且是0字节,直接找b还找不到。
只能用命令行打开a.txt:b.txt才能看见内容。
靶场的话上传8.php::$DATA(与8.php一样,但是黑名单不识别),注意访问时不写::$DATA
Pass09构造文件后缀绕过:
::$DATA被拦截了,这里逻辑绕过(黑盒测试这个有点难),读源码发现写1.php. .(点空点),源码里把后面的都删除了
就只剩1.php,就可以抓包改成1.php. .然后绕过(检测没有循环检测,导致删不干净。)
Pass10双写文件后缀绕过:
黑名单把所有违规名字改成空了,所以写1.pphphp,这样就可以了。
黑名单想用替换法,建议替换为下划线,并且循环替换,可以防御。
文件上传绝对杀手锏:OSS|图床。上传的文件都在别的地方,不在本地了,而且那个破地方啥也没装,没法解析。就算出事了,与本地也无关。
(但是有很多敏感东西是不能这么干的,有局限性,对于这种的不能OSS或者图床)
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.