php常见后缀绕过,文件包含漏洞(绕过姿势)

文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接。但是想真正把这个漏洞利用好却不那么容易,其中有很多技巧,也有很多需要掌握的知识。俗话说,知己知彼方能百战不殆,因此想要研究怎么防护漏洞,就要了解怎么去利用。此篇文章主要分三部分:总结一些常见的上传文件校验方式,以及绕过校验的各种姿势,最后对此漏洞提几点防护建议。(根据个人经验总结,欢迎补充纠错~~)

文件上传校验姿势

客户端javascript校验(一般只校验后缀名)

服务端校验文件头content-type字段校验(image/gif)

文件内容头校验(GIF89a)

后缀名黑名单校验

后缀名白名单校验

自定义正则校验

WAF设备校验(根据不同的WAF产品而定)

1.客户端校验

一般都是在网页上写一段javascript脚本,校验上传文件的后缀名,有白名单形式也有黑名单形式。

判断方式:在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包。

2.服务端校验

2.1 content-type字段校验

这里以PHP代码为例,模拟web服务器端的校验代码

if($_FILES['userfile']['type'] != "image/gif") #这里对上传的文件类型进行判断,如果不是image/gif类型便返回错误。

{

echo "Sorry, we only allow uploading GIF images";

exit;

}

$uploaddir = 'uploads/';

$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))

{

echo "File is valid, and was successfully uploaded.\n";

} else {

echo "File uploading failed.\n";

}

?>

可以看到代码对上传文件的文件类型进行了判断,如果不是图片类型,返回错误。

2.2 文件头校验

可以通过自己写正则匹配,判断文件头内容是否符合要求,这里举几个常见的文件头对应关系:

(1) .JPEG;.JPE;.JPG,”JPGGraphic File”

(2) .gif,”GIF 89A”

(3) .zip,”Zip Compressed”

(4) .doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfile”

文件上传绕过校验姿势

客户端绕过(抓包改包)

服务端绕过文件类型

文件头

文件

你可能感兴趣的:(php常见后缀绕过)