upload-lab-文件上传漏洞
基本原理
利用文件上传存在的漏洞,向目标网站中上传一句话木马,然后可以在本地通过中国菜刀、蚁剑进行连接,连接后即可获取和控制整个网站目录。
最简单的一句话木马如下:
<?php @eval($_POST['123']);?>
@
表示后面即使执行错误,也不报错。eval()
函数表示括号内的语句字符串什么的全都当做代码执行。$_POST['123']
表示从页面中获得123
这个参数值。
绕过方法:
1.利用htaccess文件漏洞
1 |
|
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过 修改默认的htaccess文件,使上传的文件均能被当作PHP代码执行。
2.分号配合IIS解析漏洞
还有另外一种方式是通过分号来命名,这是一个windows2003上的IIS服务的解析漏洞
将文件改成asp.asp;.jpg,通过后缀绕过检测,asp读取文件为从左向右读取,即可执行webshell文件
3.冒号配合PHP 和 Windows文件命名环境的叠加特性
windows文件中名称不允许添加冒号,上传一个名为123.php:.jpg,Windows服务器中会自动删除掉后面的jpg,就剩下123.php了,但是会导致文件大小为0kb,需要进行补充文件的信息,然后将文件名改为 123.<或 123.<<<或 123.>>>或 123.>><后再次上传,会执行重写 123.php的 文件内容,会讲想要植入的Webshell代码写入上传的 123.php 空文件中。
4.大小写混合绕过
通过更改后缀名的大小写来进行绕过
5.空格和点配合绕过
利用Windows系统的文件名特性。通过在文件名的最后增加空格和点,用burpsuite抓包修改降上传的文件后缀名写成1.php .
,上传后保存在Windows系统上的文件名最后的一个,会被去掉,实际上保存的文件名就是1.php。
upload-lab第一关
1.上传准备好的一句话木马
发现页面弹出警告,需要判断是前端验证还是后端验证
判断是前端验证还是后端验证的三种方式
1.利用burpsuite进行抓包
2.
第一种方式:利用burpsuite进行抓包
通过burpsuite进行抓包,发现未抓到包,说明后缀检查为前端js检查过滤
修改后缀为.jpg,绕过前端过滤,通过burpsuite抓包更改后缀上传
将后缀jpg修改为.php
第4关:
第六关.空格和点配合绕过
利用Windows系统的文件名特性。通过在文件名的最后增加空格和点,用burpsuite抓包修改降上传的文件后缀名写成1.php. .
,上传后保存在Windows系统上的文件名最后的一个,会被去掉,实际上保存的文件名就是1.php。
第七关.空格和点配合绕过
第八关:基于文件流特性::$DATA来绕过
将文件名改为1.php::$DATA
第九关:空格和点配合绕过
后缀加入点空格点改成1.php.
.
第十关:双写绕过
黑名单替换多次匹配,所以不能使用.PHPPHP
,可以通过.pphphp
进行替换