由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的。
下面对不同级别的代码进行分析。
一:LOW
1、服务器端核心代码
Your image was not uploaded.
';
}
else {
// Yes!
echo "{$target_path} succesfully uploaded!"; } } ?>
可以看到,服务器对上传文件的类型、内容没有做任何的检查、过滤,存在明显的文件上传漏洞,生成上传路径后,服务器会检查是否上传成功并返回相应提示信息。
文件上传漏洞的利用是有限制条件的,首先当然是要能够成功上传木马文件,其次上传文件必须能够被执行,最后就是上传文件的路径必须可知。
2、漏洞利用
(1)首先先上传一个一句话木马hack.php,参数名(一句话木马口令)为hack。
上传成功,并且返回了上传路径
3、这时我们就可以使用中国菜刀这个工具了,右键添加
4、然后中国菜刀就会通过向服务器发送包含hack参数的post请求,在服务器上执行任意命令,获取webshell权限。可以下载、修改服务器的所有文件。
5、获取权限后,把cmd上传,此时是没有权限的(whoami查看权限),需要提权
补充:以下这几种命令有admin权限才能执行
1、net user 查看用户
2、net user 123 123 /add添加用户
3、net localgroup Administrators 123 /add 把新建的123账号添加到管理员组
4、net start telnet 开启靶机的telnet服务(利用telnet登录,使用ftp把nc下载到靶机并运行,这样就建立了后门)
3、Systeminfo 查看计算机的信息(操作系统,位数,补丁情况等)
4、Tasklist /svc 查看计算机的进程
5、Netstat -ano 查看计算机的网络端口连接
4、在网站提权中我们经常会使用到这些工具Churrasco.exe (巴西烤肉) cmd.exe nc.exe pr.exe 360.exe 等等。
如果说webshell不能执行cmd那么我们就需要上传一个cmd,如果说上传cmd后不能添加用户那么我我们就需要上传以上软件
如:上传成功后C:\WINDOWS\system32\pr.exe “net user 123 123 /add”。
二:Medium
1、服务器端核心代码
Your image was not uploaded.
';
}
else {
// Yes!
echo "{$target_path} succesfully uploaded!"; } } else { // Invalid file echo '
Your image was not uploaded. We can only accept JPEG or PNG images.'; } } ?>
可以看到,Medium级别的代码对上传文件的类型、大小做了限制,要求文件类型必须是jpeg或者png,大小不能超过100000B(约为97.6KB)。
2、漏洞利用
(1)组合拳(文件包含+文件上传)
因为采用的是一句话木马,所以文件大小不会有问题,至于文件类型的检查,尝试修改文件名为hack.png。
上传成功
(2)这时打开中国菜刀
虽然成功上传了文件,但是并不能成功获取webshell权限。
(3)中国菜刀的原理是向上传文件发送包含hack参数的post请求,通过控制ack参数来执行不同的命令,而这里服务器将木马文件解析成了图片文件,因此向其发送post请求时,服务器只会返回这个“图片”文件,并不会执行相应命令。
(4)让服务器将其解析为php文件,抓包修改文件类型,上传hack.png文件,抓包。
尝试修改filename为hack.php。
上传成功。上菜刀,获取webshell权限。
方法二:截断绕过规则。
在php版本小于5.3.4的服务器中,当Magic_quote_gpc选项为off时,可以在文件名中使用%00截断,所以可以把上传文件命名为hack.php%00.png。可以看到,包中的文件类型为image/png,可以通过文件类型检查。
服务器会认为其文件名为hack.php,顺势解析为php文件
参考文章:http://www.freebuf.com/articles/web/119467.html