常见Web安全漏洞
信息泄露概念
信息泄露是由于Web服务器或应用程序没有正确处理一些特殊请求,泄露Web服务器的一些敏感信息,如用户名、密码、源代码、服务器信息、配置信息等。
造成信息泄露主要的三个原因:
- Web服务器配置存在问题,导致一些系统文件或者配置文件暴露在互联网中
- Web服务器本身存在漏洞,在浏览器中输入一些特殊的字符,可以访问未授权的文件或者动态脚本文件源码
- Web网站的程序编写存在问题,对用户提交请求没有进行适当的过滤,直接使用用户提交上来的数据
信息泄露案例
敏感信息可能会不慎泄露给仅以正常方式浏览网站的用户。但是更常见的是,攻击者需要通过意外或恶意的方式与网站进行交互来引发信息泄露。然后,将仔细研究网站的响应,以尝试找出有趣的行为。
- 通过robots.txt文件或目录列表显示隐藏目录的名称,它们的结构及其内容
- 通过临时备份提供对源代码文件的访问
- 在错误消息中明确提及数据库表或列名不必要地暴露高度敏感的信息,例如信用卡详细信息
- 在源代码中对API密钥,IP地址,数据库凭证等进行硬编码
- 通过应用程序行为的细微差别来提示是否存在资源,用户名等
git源码泄露
git源码泄露,只要有git目录存在,就可以尝试将其源码导出
利用githack工具,在ubuntu中先进入githack-master中,然后输入
代码语言:txt复制python GitHack.py http://ip/.git/
hg源码泄露
利用工具dvcs-ripper可以将源码导出
DS Store文件泄露
利用工具ds_store_exp可恢复文件名,不可恢复文件内容
网站备份文件泄露
管理员备份网站文件后错误的将备份放在Web目录下,常见后缀名有:.rar、.zip、.7z、.tar、.tar.gz、.bak、.txt
svn泄露
重要的文件是/.svn/wc.db和/.svn/entries,同样可利用dvcs-ripper工具
web-inf/web.xml泄露
web-inf是Java Web应用的安全目录,web.xml中有文件的映射关系
CVS泄露
代码语言:txt复制http://url/CVS/Root 返回根信息
http://url/CVS/Entries 返回所有文件的结构
bk clone http://url/name dir 取回源码
目录遍历概念
目录遍历(目录穿越)是一个Web安全漏洞,攻击者可以利用该漏洞读取运行应用程序的服务器上的任意文件。这可能包括应用程序代码和数据,后端系统的登录信息以及敏感的操作系统文件。
目录遍历最大的危害是能够让任意用户访问系统的敏感文件,继而攻陷整个服务器。
直接访问Web应用存在的一些目录,如果返回文件列表信息,证明存在此漏洞。
又比如,使用”../”测试,/var/www/images/../../../etc/passwd等价于/etc/passwd
跨站脚本攻击(XSS)
跨站脚本攻击(XSS),指攻击者通过在Web页面中写入恶意脚本,造成用户在浏览页面时,控制用户浏览器进行操作的攻击方式。
类型
- 反射型
- 存储型
- DOM型
危害
- 盗取cookie
- XSS蠕虫攻击
- 会话劫持
- 钓鱼攻击
SQL注入漏洞
SQL注入漏洞,Web系统对数据库访问语句过滤不严,入侵者在合法参数的位置传入特殊的字符、命令,实现对后台数据库的入侵。
- 数据型
Select * from table where id = xss
- 字符型
Select * from table where username = 'test'
文件上传漏洞
文件上传漏洞,网站WEB应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型时,就可以上传任意文件,甚至可执行文件后门。
根据网站使用及可解析的程序脚本不同,可以上传的恶意脚本可以是PHP、ASP、JSP、ASPX文件等。
恶意文件传递给解释器去执行,之后就可以在服务器上执行恶意代码,可实现数据库执行、服务器文件管理,服务器命令执行等恶意操作。
命令执行
命令执行,应用程序有时需要调用一些执行系统命令的函数,而Web开发语言中部分函数可以执行系统命令,如PHP中的system、exec、shell_exec等函数。
当黑客控制这些函数的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击,若当前用户为root用户,危害程度将更严重。
文件包含漏洞
文件包含,程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。所有脚本语言都会提供文件包含的功能,但文件包含漏洞在PHPWeb Application中居多,而在JSP、ASP、ASP.NET程序中却非常少,甚至没有。
常见包含函数有 :include()、require()
类型分为:本地包含、远程包含。
文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
Web中间件
Web中间件,介于操作系统和应用程序之间的产品,面向信息系统交,集成过程中的通用部分的集合,屏蔽了底层的通讯,交互,连接等复杂又通用化的功能,以产品的形式提供出来,系统在交互时,直接采用中间件进行连接和交互即可,避免了大量的代码开发和人工成本。
类型(常见)
- IIS
- ApacheTomcat
- Nginx
- WebLogic
- Jboss
本文部分图片摘自深信服安全服务认证工程师课程课件中,为方便个人学习使用,勿作商用!!!!文字内容为自己手打,并非直接搬运!如有侵权,请联系删除!!!
本文档所提供的信息仅用于教育目的及在获得明确授权的情况下进行渗透测试。任何未经授权使用本文档中技术信息的行为都是严格禁止的,并可能违反《中华人民共和国网络安全法》及相关法律法规。使用者应当合法合规地运用所学知识,不得用于非法入侵、破坏信息系统等恶意活动。我们强烈建议所有读者遵守当地法律与道德规范,在合法范围内探索信息技术。
我正在参与2024腾讯21天技术创作挑战赛|年中回顾特别季,年中技术沉淀,拯救你的flag,快来和我瓜分大奖!