(1) .简述
是web开发的必备功能之一,上传头像,上传共享文件,上传网站脚本等
如果服务器配置不当或者没有进行过滤,web用户上传任意文件
包括脚本文件,而exe程序等
.漏洞成因
文件上传漏洞的成因,一方吗服务器配置不当导致任意文件上传
web应用开发了文件上传功能,并且对上传的问件没有进行足够的限制
开发部署时没有考虑到系统特性和验证和过滤不严而导致被绕过,上传任意文件
.漏洞危害
上传漏洞最直接的威胁就是上传任意文件,包括恶意脚本,程序等
如果web服务器保存的上传文件的可写目录具有执行权限
那么就可以直接上传后门文件,导致网站沦陷
如果攻击者通过其他漏洞进行提权操作,拿到系统管理权限那么就直接导致服务器
沦陷,同服务器所有网站都会沦陷
(2) “webshell”
webshell 是一个网站的后门也是一个命令解释器
不过以web方式(http协议)通信继承了web用户的权限
webshell本质上是在服务器端运行可运行的脚本文件
后缀名位.php .asp .aspx .jsp等
webshell接受来自web用户的命令,在服务器端执行
*大马
webshell 也是大马,也是网站木马
代码比较大,是一个完整的.php .asp文件
大马中可以进行文件管理,执行系统命令
*小马
小马就是一句话木马,其代码量比较小
但是功能也很强大,需要配合上中国菜刀或者蚁剑客户端
.列子
<?php
@eval($_POST[777]);
?>
中国菜刀就是一句话木马的命令接口
并且实现三大基本功能
@文件管理
@虚拟终端
@数据库管理
(3) .getshell
‘文件上传漏洞条件’
1-web服务器需开启上传功能,并且上传接口对外开放
2-web用户对目标目录具有可写权限,甚至具有执行权限
一般情况下,web目录都具有执行权限
3-要完美利用文件上传漏洞,就是上传的文件可以执行
也就是web服务器可以解析我们上传的脚本,
无论脚本以什么样的形式存在
4-无视以上条件的情况就是配置不当,开启了put方法
.黑白名单策略
URLBLACKlist
禁止用户访问已阻止的网址,用户可以访问黑名单之外的所有网址
不设置此策略:用户可以自由访问所有的网址
URLWHITElist
将此策略与URLBLACKlist搭配使用
白名单优先级高于黑
不设置此策略:网址黑名单将没有列外网址
*put方法上传文件(.已经过时但仍需要进行检查)
HTTP 请求方法之一,允许服务器直接写入文件
"1.Apache开启put方法"
@测试Apache 是否开启了put方法
telnet IP
OPTIONS / HTTP/1.1 //保证格式正确,并且手写
HOST:IP
@Apache开启put方法操作
httped.conf 文件配置
开启模块
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_fs_dav.so
启用模块
<Directory>
添加
DAV On
</Directory>
添加语句
DavLockDB d:\phpstudy\www\DavLock
www文件下创建文本
DavLock
"上传文件"
telnet IP
PUT /info.php HTTP/1.1
Content-Length:18
<?php phpinfo();?>
【1】前端限制与绕过
有些web应用的文件上传功能仅在前端用js脚本做了检测,如检测文件后缀名
upload-labs 第一关中就是
.前端js脚本检测安全防御是非常弱的
--js脚本运行环境客户端浏览器,可以直接修改JS代码
甚至删除表单事件
--burp代理修改头部相关属性
.服务器段检测类型MIME类型
MIME是描述消息内容的因特网标准
MIME-type
js application/x-javascript
html text/html
jpg image/jepg
png image/png
pdf application/pdf
在http协议中,使用Content-Type
表示类型
'利用burp修改类型'
.服务器端检测内容
'文件内容中头部加入'
GIF89a
info.gif
列如:
GIF89a
<?php phpinfo();?>
'合并图片和代码文本制作'
copy 1.jpg/b+info.php/a smile.jpg
'将代码写入图片具有描述信息的文档中'
'利用十六进制进行编辑'
png 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
JPG FF D8 FF E0 00 10 4A 46 49 46 00 01 01 01 01 2C
GIF 47 49 46 38 39 61 F1 00 2C 01 F7 00 00 64 32 33
文件幻术
将上述二进制写入文件头部
info.php
16(png字符)进制编码
<>
.服务器端检测文件名
不允许上传一些php|asp|aspx|jsp 等可执行脚本文件
@ 黑名单
代码中$deny_ext 数据就是一个黑名单
对于黑名单,我们可以寻找其他可允许上传的类型
来绕过限制
可以执行脚本后缀名
.php php2 php3 php5 phtml
.asp aspx ascx ashx asa
.cer
.jsp .jspx
@ 白名单
对于后缀名白名单策略,我们只能上传在白名单内的文件后缀名