1、基础知识:
要深入了解文件上传,必须了解上传属性、常见文件的结构、图形处理函数等内容。
1) 报文特点:
观察文件上传报文的特点:
Header中Content-Type特征有二:
1.multipart/form-data(form表单的enctype属性,规定为二进制数据)
2.boundary字符串(作用为分隔符,以区分POST数据)
POST内容特征有五:
1.Content-Disposition:form-data
2. name:input表单名
3.filename:文件名
4.Content-Type:定义文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件;
5.boundary:Content-Type的值前面加了两个---
2) 常见校验规则
现存常用的上传校验规则无非下面几类:
1.客户端javascript校验(后缀名)
2.文件头content-type字段校验(image/gif):附带参数
4.后缀名黑/白名单校验:扩展名
5.文件内容头校验:GIF89a
6.文件内容校验:文件信息,二次渲染
7.自定义正则校验
3)一个澄清
文件上传和文件解析是两个过程,即使我们上传的是php文件,但解析为图片,访问php文件会显示“图片无法显示”;或者我们上传的是jpg文件,但里面混有shell脚本,若被解析为php文件也会执行;又或者上传处没法绕过检测,只能上传jpg文件,但在其他功能处存在文件包含等功能,仍可执行成功。
还是回到安全的本质,上传是“输入”,那文件解析就是“输出”,任何漏洞挖掘都需要结合输入+输出。
2、绕过技巧:
这里汇总一些实战中较常用的绕过技巧:
1)后缀名黑名单
以下替换后缀也可以解析为shell:
php:.phtml,.phpt,.php3,.php3p
asp:.aspx,asmx,ashx,web.config
perl:.pl,.pm,.cgi,.lib
jsp:.jspx,.jsw,.jsv,.jspf
Coldfusion:.cfm,.cfml,.cfc,.dbm
另外可以配合操作系统的文件命名规则:
.php.,.php空格,.php:1.jpg,.php::$DATA等
这些后缀的文件会被windows系统自动去掉不符合规则符号后面的内容,从而只留下.php。
2)后缀名白名单
除了结合各种服务器解析特性,较常用的是Null Byte Injection空字节注入,插入空字节值的原因是某些应用程序服务器脚本语言使用c/c++库来检查文件名和内容。在C/C ++中,一行以/00结尾或称为NullByte。因此,只要解释器在字符串的末尾看到一个空字节,就会停止读取,认为它已经到达字符串的末尾。
如,我们将要上传的Happy.jpg的名称更改为Happy.phpA.jpg,然后上传文件,在Burp中捕获请求,切换到Hex视图。在字符串视图中找到文件名。查看相应的Hex表,并将41('A')替换为00(为空字节)。结果字符串变为Happy.php(空).jpeg。由于php解释器在内部使用C语言库,它将停止读取Happy.php后的文件名,文件将保存为Happy.php。
另一种绕过白名单的方法是使用双后缀:shell.php.jpg。
查找Web服务器漏洞
在Web服务器等非定制产品中查找漏洞时,使用一款自动化扫描工具是一个不错的起点。与Web应用程序这些定制产品不同,几乎所有的Web服务器都使用第三方软件,并且有无数用户已经以相同的方式安装和配置了这些软件。
在这种情况下,使用自动化扫描器发送大量专门设计的请求并监控表示已知漏洞的签名,就可以迅速、高效地确定最明显的漏洞。Nessus 是一款优良的免费漏洞扫描器,还有各种商业扫描器可供使用,如 Typhon 与 ISS。
除使用扫描工具外,渗透测试员还应始终对所攻击的软件进行深入研究。同时,浏览Security Focus、邮件列表Bugtrap和Full Disclosure等资源,在目标软件上查找所有最近发现的、尚未修复的漏洞信息。
还要注意,一些Web应用程序产品中内置了一个开源Web服务器,如Apache或Jetty。因为管理员把服务器看作他们所安装的应用程序,而不是他们负责的基础架构的一部分,所以这些捆绑服务器的安全更新也应用得相对较为缓慢。而且,在这种情况下,标准的服务标题也已被修改。因此,对所针对的软件进行手动测试与研究,可以非常有效地确定自动化扫描工具无法发现的漏洞。
电脑黑客们总是希望知道尽可能多的信息,比如:是否联网、内部网络的架构以及安全防范措施的状态。一旦那些有经验的黑客盯上了你的网络系统,他们首先会对你的系统进行分析。这就是为什么我们说运用黑客的“游戏规则”是对付黑客的最好办法的原因。以黑客的眼光来审视网络安全性,往往可以发现很多潜在的安全漏洞。这样做不仅提供了审视你网络系统的不同视角,而且让你能够从你的敌人,即黑客的角度来指导你采取最有效的网络安全措施。 下面,我们来看一下网络系统分析的过程。这个过程要用到开源工具和相关技术。 用开源工具收集信息 首先,登录Whois.com网站查找你企业的域名,检索结果将会显示出你的网络系统所使用的DNS服务器。然后再使用一些软件工具,如:nslookup,来进一步挖掘DNS服务器的详细信息。 接下来,需要将目标转向于企业的公众Web站点和你能找到的匿名FTP服务器。注意,你现在需要关注的信息主要是:域名、这些域名的IP地址、入侵检测系统的所有信息、用户名、电话号码、电子邮件地址、物理位置、已发布的安全策略、业务合作伙伴的资料、以及新并购企业的信息。 此外,在你的上述搜索操作中,一定要特别注意这些网站上已显示的和没有显示的信息。最好,把这些网页存入你的电脑中,然后用记事本程序打开,查看网页的源代码。一般而言,查看网页的源代码可以大量的信息,这也就是某些站点有意对浏览者屏蔽源代码的原因。在源代码文件中,你也许能够了解到网站开发者建站的方式:他们所使用的软 件类型及软件版本、网站以及网页的架构,有时候甚至能够发现一些网站管理员的个人资料。 业务合作伙伴的站点或一些新的并购企业的站点往往是黑客入侵的关键点。这些站点是间接入侵目标站点的最佳突破口,容易被网站管理员所忽视,给黑客攻击者制造了大量的机会。如果你在这方面没有足够的警惕性,疏忽大意,很草率地新某个新的业务合作者的网站和你自己的站点联接起来,往往会造成很严重的后果,给你的站点带来极大的安全威胁。在这样的情况下,安全问题比经营问题更加重要,一定要确保安全操作。 从外部审视网络 有了上述信息收集,你可以开始审视你的网络了。你可以运用路径追踪命令来查看你的网络拓扑结构图和访问控制的相关设置。你会获得大量交换机的特征信息,用来旁路访问控制设备。 注意,命令的反馈结果会因为所使用操作系统的不同而有所差别。UNIX操作系统使用UDP,也可以选择使用ICMP而Windows操作系统默认用ICMP来响应请求(Ping)。 你也可以用开源工具管理大量ping sweep、执行TCP/UDP协议扫描、操作系统探测。这样做的目的就是要了解,在那些外部访问者的眼中,你的网络系统的运行状况和一些基本的面 貌、特征。因此,你需要检验你的网络系统,哪些端口和服务对外部访问者是开放的或可用的,外部访问者是否可以了解到你所使用的操作系统和一些程序,极其版本信息。简言 之,就是要了解到你的网络系统究竟对那些外部访问者开放了哪些端口或服务,泄露了哪些站点的基本信息。 在你开始上述工作之前,你必须要先获得足够的授权,才能进入整个网络系统并对其进行考察、分析。千万不要将你了解到信息告知那些不怀好意的人。记住:安全防护是一个实 施过程,而不仅仅是一种技术。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)