开发者学堂课程【网络安全攻防 - Web渗透测试:文件上传漏洞渗透及防御_2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/630/detail/9898
文件上传漏洞渗透及防御_2
内容简介:
一、大概步骤
二、介绍靶机删除
三、介绍 mime 类型
四、如何解决上传失败的问题
五、总结
一、大概步骤:
文件上传的第一安全级别里面的后台源码并没有对所上传的文件有任何检测。
上传一个木马文件,最后,通过中国菜刀来对这个服务器,进行远程的连接来获得 web shot,把安全级别调整一下,变为中安全级别,然后提交。
提交之后按照之前的套路来准备上传,上传的文件删除。
二、介绍靶机删除:
1、靶机有一些文件上传的位置,对于整个结构网站的一个结构是比较清楚的,如果有人要攻击的基机是一个其他网站,那攻击者对网站结构就不了解,除非要进行一些网站的爬取之类的动作。
2、靶机在 var/www 下面有一个 dvwa 目录。在 dvwa 里面有一个 hackable/uploads/
所上传的文件在这里,最后可以把它删除,就不能连上,无论是图片还是程序都已被删除。
3、准备在中安全级别上传想要的 Life shot 文件,调整为中安全级别提交以后,再一次找到 upload 这个漏洞点(如下图)
4、选择浏览,找到图片点击 upload,然后看到正常的图片路径,选择复制,下一步查看一下这张图片是否能正常显示,然后再次选择 shell1的 php 文件点击 upload。
可以看到显示图像没有上传,这个时候再来看一下这个源码(如下图),这个源码不属于常规的源码,不是前端的代码,而属于后端的代码,这是这个靶机刻意输出的。那这个源码这样就有限制,如果上传文件的类型不是image/jpeg。
三、介绍 mime 类型
1、其中的 image/jpeg 不是扩展名,这是 mime:
mime 是多用途的互联网邮件拓展类型,或者再加 http mime type,会有一个对照表。
在向服务器发起请求的时候,可能请求的对象有很多种,有图片,有代码,还有pip程序等很多种对象的类型。
2、当服务器把这些资源做出响应以后,怎么知道该运用哪个应用程序去进行一个查看或打开?
这个时候就会有一个 mime 的类型。它定义在 Content-Type header中。
例如:
(1)超文本标记语言文本拓展名是.html,.html 它的类型是 text/html,前面的 text 是一个大项,后面是一个子项;
(2)普通文本扩展名是.txt ,它的类型是 text/plain;
(3)JPEG 拓展名是.ipeg,.jpg,它的 image 类型是 jpeg;
3、mime 分为两部分,前面是数据的大类别,后面是定义具体的种类,像上面的举例对应的每一种类型都会有一个mime 类型。
(1) 比如:
找到 qfedu.com 这个网站,然后用 F12打开开发者工具这个位置,点开网络,每一个对象都有一个 Content-type:
text/html;图片的 Conent-type 是 image/jpeg。这个叫响应头,这就告诉了这个资源的类型。
(2)无论是请求端还是响应端都会通过 mime 类型,来协商告知对方这是什么类型文件,然后作为客户端,也会从本地去查询这个类型的文件应该用什么打开?属于什么文件?
4、mime 类型:
(1)Text 表明文件是普通文本,理论上是人类可读。例如:
text/plain,text/html,text/css, text/javascript
(2)image 表明是某种图像。不包括视频,但是动态图(比如动态 gif)也使用 image 类型。
例如:
mage/gif,image/png,image/jpeg,image/bmp,image/webp,image/x
icon,image/vnd.microsoft.icon
(3)audio 表明是某种音频文件。
例如:audio/midi,audio/mpeg,audio/webm,audio/ogg,audio/wav
(4)video 表明是某种视频文件。
例如:
video/webm,video/ogg
(5)application 表明是某种二进制数据。
例如:
application/octet-steam,application/pkcs12
application/vnd.mspowerpoint,application/xhtml+xml
application/xml,application/pdf
总之,之所以上传失败,是因为限制了类型。
四、那这个怎么解决呢?是不是传不上去?
使用一个方法,对这个类型进行修改,然后绕过他,不是改文件的后缀,接下来会使用以下一个软件——BURPSUITE.
1、BURPSUITE 可以说是功能非常强大
它有很多种功能,包括代理,拦截,还有查重,以及漏扫,攻击于一体的一个软件。
2、接下来简单画一个图(如下图)
左侧是 DVWA BWA,上传的一个位置。右侧是 IE 或者 Firefox 等。如果上传一个 image/ipeg 的类型,发现是可以的;上传一个 pap 最后发现失败了,接下来找一个第三方的工具,放到中间,这个工具叫做 burpSuite。
这个软件拥有代理、拦截的功能。(现在想要传的话就不直接传)。例如这个 Firefox,代理的端口一般可以自己设置(例如8080/tcp),然后火狐可以将代理指向它把这个请求给拦截下来,拦截下来以后可以进行一个转发,如果直接转发的话,失败,因为直接转发的话,类型依然是不对的。拦截以后做出修改,把它改成想要的类型。
如果说默认的情况下是不会拦截的,走这里(红色)过,会自动帮转发,但是可以把它拦截下来。
之所以走这边,是因为要改一改再转发。这个代理服务器,是额外的一台机器,也是这个 IE.firefox 机器的同一台机器。
就只要指向 IE 就可以。代理不一样要放在同一台使用机器,它可以是第三方的机器,但由于现在本身在开立当中 firefox、代理也有,那么就可以直接在火狐里启动代理。
现在此时此刻,火狐中的代理没有起来。
1、首先,第一步装好火狐 访问192.168.106.134 现在没有址代理,没有址代理可以自己访问 DVWA。如果没有址代理怎么址?
(1)从这里(如下图)点击属性。
(2)然后在高级当中有一个网络。第一个就是设置配置火狐连接 Internet,如何连到 Internet?有一个 settings,默认情况下,它使用的是系统代理设置(在系统层面设置),而现在需要在浏览器上面手动设置代理程序。可以指向127.0.0.1的8080,可以跟所有的服务协议使用这个代理,点击ok。
(3)现在再点会发现代理服务器拒接了连接。
有两种原因:
一是代理服务器根本就没有,或者连不上,或者不让连。再次打开 burp suite 这个软件,这个版本叫做 COMMUNITY 社区版,企业版跟专业版之间有一个功能没有,就是漏洞扫描。
想使用漏洞扫描的话,得使用专业版。点击打开启动一个项目,使用默认的参数。启动这个项目。
有一个options,默认情况下,是建立在本机的8080,换句话说,这个服务器默认情况下,其他人连不了。如果想要外面的机器链接例如 windows 是可以的。打开 Terminal,而时此刻,机器开启了端口,就有一个8080,这是 java 的一个应用。
我们使 jps 是 java 的一个进程。这是127,但是127的话,别人不能使用,如果现在代理已经开了 而浏览器在转圈,说明现在已经被拦截了。
默认情况下,拦截功能是开启的,注意,此时不能 burp suit,而是点下方的 Burp Startup,此时能看见拦截是开着;也可以把功能 off 掉。表示不拦截。再次打开 DVWA 会发现都能走。
但是把代理服务器一关,肯定连不上。虽然说现在拦截功能是关着的,但是不代表代理功能是正常的。现在每发的一个数据包,请求都会发给代理,让代理去转发。只不过没有给拦下来,有时候不需要拦截。
(4)WINDOWS此时此刻能不能用?
可以设置一下代理,先点 WINDOWS 火狐的选项。在网络设置下面有一个配置代理,是哪个机器呢?
是里面 Kenny 那个机器,它的IP是175,那我们如果指向192.168.106.175的8080端口。此时再打开 DVWA 的 upload 会发现代理服务器拒接连接。
所以说自己建立的代理不一定是在只能是由他们自己机器内部使用,但是默认情况下是工作在本机的127上面的,所以只有本地的火狐能使用。
(5)把这个 settings 的 options 的位置改一下或者编辑一下或者添加。点击 Edit 然后 Binding 的 Bind to address 从 Loopback only 改成 All interfaces,或者写成某一个 IP 然后点击确定。现在可以打开端口,就可以所有使用。
现在所有请求都会交给代理,然后拦截功能是关着的,因为它只是做了一个动作,是代理转发。再看一下代理,此时此刻,拦截功能 on 是开的。然后再次点开浏览 shell1,然后上传,以前是报失败,现在是显示正在请求中。
然后请求134.80,其中这个位置(如橙色区域 application/octeet·steam):直接删除,改成 image/jpeg,然后点转发,回到端口就能发现上传成功。
如果现在暂时不想拦截的话,可以先去把拦截关掉,把 on 改成 off。然后现在开刚才上传的文件,看不到东西,是因为本身这个 PHP 程序就不会显示什么。可以使用菜刀连接。
把这个路径复制给菜刀。在第一个实验里面,就已经加过这一个链接了(如下图):
这个链接依然是可用的,路径是一样,在做这个实验的时候,已经把原来的内容删除了,可以直接在里面新建文件。因为正常的话,它允许的类型就是图片类型。现在我们通过修改文件的 mime 类型,改掉就可以上传了。
五、总结
这是关于一个中安全级别下如何上传的一个问题。上传方法不像直接上传,而是通过代理软件加来,截下来以后做了一个修改,修改完了以后,加工完了以后再进行一个转发。