网络渗透上传漏洞闯19关-第11关你们期待的「白名单」绕过

网络渗透上传漏洞闯19关-第11关你们期待的「白名单」绕过

在前面几期的时候,关注头条号的粉丝说,如果上传漏洞,我直接用白名单过滤,不就解决了吗? OK,从这期开始就是白名单的绕过,各位看官得仔细领会了(@^_^@)

采用的防御手法是白名单过滤,只允许上传jpg、png和gif类型,并且将上传的文件给重命名为了白名单中的后缀

$ext_arr = array('jpg','png','gif');

$file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);

if(in_array($file_ext,$ext_arr)){

$temp_file = $_FILES['upload_file']['tmp_name'];

$img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

if(move_uploaded_file($temp_file,$img_path)){

$is_upload = true;

}

else{

$msg = '上传失败!';

}

处理上传文件的方式

$img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

看起来这样防御并没有什么问题,但是这一关上传目录是可控的所以可以先上传一个后缀名为jpg,内容为一句话木马的文件,然后修改上传目录为.php后缀,之后在.php后使用截断后面的拼接内容,注意这里需要关掉magic_quotes_gpc这个php扩展,否则00会被转义

$_GET['save_path']这里使用00截断."/".rand(10, 99).date("YmdHis").".".$file_ext;

注意这里的00字符因为在url的GET参数中,所以需用进行url编码

网络渗透上传漏洞闯19关-第11关你们期待的「白名单」绕过

通过这种方法就可以成功绕过十一关的上传检测

网络渗透上传漏洞闯19关-第11关你们期待的「白名单」绕过

网络渗透上传漏洞闯19关-第11关你们期待的「白名单」绕过

By the way,许多对安全感兴趣但没有这方面经验的小朋友,看到这里总是感觉显示一个phpinfo的页面能代表什么,能够执行phpinfo(),这个函数证明,上传的文件可以执行PHP脚本,这个时候如果上传的是一句话木马,就可以直接配合『菜刀』拿下整个站点,查看源码,甚至修改数据库或者控制操作系统。


分享到:


相關文章: