web应用安全详情(入门篇)

admin 2023年3月1日19:42:54评论10 views字数 6123阅读20分24秒阅读模式
web应用安全详情(入门篇)
点击上方蓝字  关注安全知识

web应用安全详情


Web应用的基本概念
 Web应用是一种基于浏览器/服务器(Browser/Server,B/S)架构、通过HTTP协议提供服务的应用系统。中国移动的官方网站就是一个典型的Web应用。

web应用安全详情(入门篇)

Web应用的主要组件

web应用安全详情(入门篇)

Web应用的主要组件
Web应用分为服务器端和客户端两部分。
服务器端通过Web中间件为客户端提供服务。
客户端通过Web浏览器来访问Web程序。
服务器端和客户端之间通过Web协议进行通信。

web应用安全详情(入门篇)

Web应用安全现状
Web应用的迅速发展也引起黑客们的强烈关注,由于Web应用程序功能性和交互性的不断增强,对应的Web漏洞和恶意攻击层出不穷,导致各种安全事件频繁发生。这些针对Web应用的安全事件轻则篡改网页内容;重则是在网页中植入恶意代码,使得访问者受到侵害;更为严重的则是窃取企业内部重要数据。Web应用安全已成为最广泛、危害性最大的安全问题,如何保证Web应用的安全已成为安全界关注的重点问题。
Web应用面临的安全威胁
由于Web应用的复杂性和多样性,Web应用的安全问题也呈现出多样化的特点,Web应用潜在的威胁很多,本节从Web中间件、Web程序、Web浏览器以及Web协议等四个方面,来分析针对Web应用的安全威胁。
Web中间件面临的安全威胁
常见的Web中间件包括Apache、IIS、Tomcat、WebSphere和WebLogic等,以及Java开发流行框架Struts2、Hibernate、Spring等。
Web中间件的安全隐患主要存在于两个方面:一方面是软件本身存在漏洞;另一方面是软件本身没有漏洞,但存在配置缺陷。这两个方面的安全隐患如果被攻击者利用的话,都能给Web应用带来严重的安全后果。
利用Web中间件的安全漏洞进行攻击一直是最常见的攻击方法之一。其中,以Struts2安全漏洞导致的安全威胁最为引人关注,先后几次大规模影响中国互联网的安全。
Web应用面临的安全威胁
(1)Struts2远程命令执行漏洞
由于Apache Struts2的action:、redirect:和redirectAction:前缀参数在实现其功能的过程中使用了Ognl表达式,并将用户通过URL提交的内容拼接入Ognl表达式中,从而造成攻击者可以通过构造恶意URL来执行任意Java代码,进而可执行任意命令。
利用这个漏洞,用户可以构造http://host/struts2-blank/example/X.action? action:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}链接,command goes here可以换成是破坏脚本的路径和参数,比如fdisk -f等,造成破坏系统无法运行的目的。
(2)Struts2开放重定向漏洞
由于Apache Struts2的action:、redirect:和redirectAction:前缀参数在实现其功能的过程中使用了Ognl表达式,并将用户通过URL提交的内容拼接入Ognl表达式中,从而造成攻击者可以通过构造恶意URL来执行任意Java代码,进而可执行任意命令。
利用这个漏洞,用户可以构造如知名网站淘宝的重定向连接,形如<a href="http://www.淘宝.com/item00001.html?redirect:http://黑客/getyourPassword">打折新款</a>,引导用户点击后进入钓鱼网站,在界面上让其进行登录用以获取用户的密码。
(3)配置缺陷
典型的配置缺陷和使用不当包括:使用默认的帐户和口令、存在不必要的功能模块、明文存储口令和权限配置文件、过于集中的权限分配、用户启动程序的用户身份不合适等。
很多的配置缺陷是由于管理人员缺乏安全意识,忽视了安全选项没有开启,或者危险的设置选项没有关闭,从而导致了一系列的安全问题。例如:开启windows共享时没有设置访问权限,或者IIS配置开启了PUT方法导致恶意文件上传等。

web应用安全详情(入门篇)

SQL注入
由程序员开发的Web应用程序,受开发人员的能力、意愿等方面因素的影响,可能会存在一些安全缺陷。这些缺陷包括程序I/O处理、会话控制、文件系统处理、错误处理及其他安全特性采用不足等。

web应用安全详情(入门篇)

(1)SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作。
(2)Web应用的SQL注入一般是代码层注入,其原因是Web应用未对输入进行细致地过滤,从而执行了非法的数据查询操作。
 (3)在Web应用某些表单中,用户输入的内容直接用来构造动态SQL命令,或者作为存储过程的输入参数,这些表单特别容易受到SQL注入的攻击。
 (4)许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当。这样,用户就可以提交一段经过特殊构造的SQL查询语句,就可以获得一些敏感的信息如账号密码,或者控制整个服务器,于是SQL注入就发生了。

web应用安全详情(入门篇)

XSS攻击
 跨站脚本攻击即XSS攻击,XSS又叫CSS(Cross Site Script)。
 通常是利用网页开发时留下的漏洞或者WEB应用没有对用户的输入进行安全验证,攻击者通过正常的输入手段,往Web页面里夹带进一些恶意的HTML脚本代码(这些恶意脚本代码通常是JavaScript,也有可能是Java、VBScript、ActiveX、Flash或者甚至是普通的HTML)。
 当受害者的浏览器访问WEB应用被夹带了恶意脚本代码的页面后,由于它对WEB应用的信任,这段恶意脚本代码的执行不会受到什么阻碍,此时XSS攻击就完成了。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和Cookie等各种信息。

web应用安全详情(入门篇)

DDoS攻击
 DDoS(Distributed Denial of Service)是分布式拒绝服务攻击的英文缩写,它是一种利用多台计算机向指定Web应用服务器发送攻击数据包,导致目标Web应用服务器系统资源或带宽耗尽,从而对正常业务请求出现拒绝服务的攻击行为。

web应用安全详情(入门篇)

信息泄露
 由于开发人员和系统管理员安全意识淡薄,WEB应用网站代码错误信息显示太过详细,测试代码使用后没有删除,网站文件备份或者数据库备份存放在网站目录,并且文件名可猜测等造成的安全漏洞,如果被攻击者利用,就会导致敏感信息泄露。

web应用安全详情(入门篇)

越权操作
 WEB应用安全认证机制不健全或者没有安全认证机制,导致攻击者可以在未授权的情况下访问网站后台页面,造成后台大量敏感信息泄漏,或者系统配置被修改等安全问题。

web应用安全详情(入门篇)

Cookie
在Web浏览器的安全隐患中,Cookie的安全问题最为严重。
Cookie是存储在客户端上的一小段文本信息。

web应用安全详情(入门篇)

Cookie的工作原理:由于HTTP是一种无状态协议,服务器端只从网络连接上无从知道客户身份。怎么办呢?就向客户端浏览器颁发一个通行证即Cookie,里面包含有用户帐号、密码等信息。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户身份和状态。
Cookie机制实际上严重影响到用户的隐私及安全,攻击者可以监听用户的Cookie,从而获得用户的包括身份、银行卡号等隐私数据。而通过伪造Cookie,攻击者可以欺骗网站以其他用户的身份进行操作。
Session
与Cookie类似,Session是另一种记录客户状态的机制,来协助HTTP协议维持一个持续的会话。不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。
客户端浏览器访问服务器时,服务器把客户端信息以某种形式记录在服务器上,这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

web应用安全详情(入门篇)

如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。
对于已经成功登录过的用户,Session ID就成为了另外的一种验证机制。攻击者如果能获取用户的有效会话Session ID,就能以此用户相同的权限去操作WEB应用,尽管他们并不知道用户的帐户和口令。
Web中间件安全配置
以开源的Apache为例
1.只安装所需要的组件。Apache的最大特点是灵活性好,有大量的可选择安装组件。但涉及安全问题时,这又成为一个弱点。用户应根据所部属WEB应用的要求和安全需求,选择安装必须的组件。
2.隐藏Apache版本。Apache默认会反馈给客户端软件名和版本号,为了提Apache的安全性,增加攻击者的攻击成本,应该把Apache软件名和版本信息隐藏起来。
3.隐藏Apache运行用户。不使用root用户或系统管理员身份运行Apache,而是采用专用的用户账号来运行,如使用Apache账号,应该将该账号设置为不具有Shell权限。
4.禁用目录浏览。在目录浏览被启用时,攻击者可以访问到一个并不包含其所需要文档的目录,会看到此目录中完整的内容列表。应当禁用这个不安全的特性。
5.设置每个连接的最大请求数。Apache参数MaxseRequests默认的值为100,即如果用户同时请求数达到100就不再响应这个链接的新请求,从而保证了系统资源不会被某个链接大量占用。但是在实际配置中,可能会要求把这个数值调高,来获得较高的系统性能,此时需要在系统性能和安全性之间做出适当平衡。
6.使用错误机制保护出错页面。当用户浏览的网页出错时,将转向错误页面,Apache中应当建立专门的错误页面,防止应用出错时反馈给用户过多的信息从而导致信息泄露。
7.勤打补丁。管理员要经常关注Apache的相关漏洞通告,要及时下载最新的补丁文件,来升级Apache系统。使用最新版本对加强Apache的安全至关重要。
Web 客户端安全配置
以IE浏览器为例
1.设置适当的浏览器安全级别。IE浏览器支持安全区域,把不同的站点和网络分为不同的组,并对这些组进行不同的安全配置。在IE中有四个安全区域,即Internet、本地Internet、受信任的站点、受限制的站点。如果能确信某个站点是安全的,可以将该站点放置到受信任站点列表,允许该站点正常工作。否则,应当放置到受限制站点。
2.设置Cookie安全。某些WEB网站或恶意代码会在未经用户许可、甚至在用户不知晓的情况下,窃取Cookie,从而导致敏感信息泄露,甚至能被攻击者假冒合法用户登录WEB网站。IE浏览器在“Internet选项”的“隐私”属性页中,可以允许进行多级别的隐私设置,包括阻止所有Cookie、高、中高、中、低和接受所有Cookie等。
3.启用“内容审查程序”等内容过滤设置。互联网上存在很多不健康信息的网站,因此需要对互联网内容进行过滤。通过使用“Internet选项”下的“分级审查”,可以提供一个允许访问特定WEB网站的列表,同时禁止访问其他网站。它能够帮助用户控制在互联网上访问的网站内容及类型,并通过对某一类型网站的禁止达到过滤的目的。
4.ActiveX控件安全设置。使用ActiveX控件可以方便地在WEB页面中插入多媒体效果、交互式对象以及复杂程序等对象。由于ActiveX控件具有客户端的文件读写、系统命令执行等权限,所以恶意的ActiveX控件对客户端的危害极大。IE中可以针对ActiveX控件的下载、使用进行控制,包括设置只能使用经过签名的、安全的ActiveX控件等功能。
5.禁用自动完成和口令记忆功能。为了方便用户使用,IE提供的自动完成功能,能自动记忆用户输入过的WEB地址和表单,包括表单中的用户名和口令。当用户输入过一次后,下次再打开同一页面时,只要输入第一个字母,IE会自动填写出完整的用户名和口令。因此,该功能存在泄密的风险,需要谨慎设置。
Web应用防火墙
Web应用防火墙(Web Application Firewall,WAF),是指通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一类产品,用以解决Web应用层出现的安全问题,保护Web应用通信流和所有相关的资源免受攻击。

web应用安全详情(入门篇)

WAF常见功能包括如下内容:
访问控制:用来对Web应用的访问进行控制,既包括主动安全模式也包括被动安全模式;
审计功能:用来截获所有HTTP数据或者仅仅允许满足某些规则的会话;
Web应用加固:用来增强被保护Web应用的安全性,它不仅能够屏蔽Web应用固有弱点,还能够避免Web应用程序错误而导致的安全隐患。

web应用安全详情(入门篇)

网页防篡改产品
网页防篡改产品的基本原理是对Web应用的页面文件进行监控,发现有恶意更改就及时恢复原状,以防止来自外部攻击者或内部非授权人员对Web应用的页面和内容进行篡改。
网页防篡改系统的目的是保障网页文件的完整性,通过在每台Web服务器上安装一个Agent程序,来实现对Web应用网页文件的监视。

网页防篡改产品对Web应用页面文件的监控机制有以下几种主要实现方式:
1.定时循环

把Web服务器主目录下的文件做一个备份,用一个定时循环进程,把备份的文件与服务器当前使用的文件逐个进行比较,如果发现不一样,就用备份文件去覆盖。网站更新发布的同时更新主目录的备份。这种实现方式不适合大型网站,因为大型网站页面数量巨大,备份时扫描时间过长,并会占用大量的Web服务器资源。

web应用安全详情(入门篇)

2.摘要循环
采用哈希算法,对Web服务器主目录下的每个文件进行哈希运算,生成该文件的哈希值。摘要循环进程直接计算文件的哈希值,并与原哈希值进行核对。该实现技术便于使用,仅占用较小的附加空间,并且哈希值具有不可逆的特性,不容易被假冒。
3.事件触发
在权衡文件访问量、读取和修改操作的危险程度的基础上,开启一个看守进程,对Web服务器的主目录文件删改操作进行监控,当发现有此操作行为时,判断用户是否具有合法身份并被授权进行维护操作,若无合法身份或未被授权则阻断其执行,文件不被改写,这就起到了网页防篡改的目的。由于只有文件被修改时才作检查,因此该实现技术大大降低了对服务器资源的占用。
4.底层过滤
直接调用操作系统所提供的系统级目录文件修改看护进程,或者利用操作系统自身的文件安全保护功能,对主目录文件进行锁定,只允许网站发布系统修改文件,其他系统进程不允许修改。
网页防篡改产品虽然可以很好地保护静态页面,但无法对动态页面实施保护,因为动态页面是用户访问时生成的,其内容与数据库相关。很多SQL注入攻击就是利用这个漏洞来入侵Web应用。因此,有些网页防篡改产品还提供了IPS功能,用来阻止针对Web应用的SQL注入、XML注入等攻击。




往期精选



围观

PHP代码审计学习

丨更多

热文

浅谈应急响应

丨更多

·end·

—如果喜欢,快分享给你的朋友们吧—

我们一起愉快的玩耍吧




原文始发于微信公众号(Rot5pider安全团队):web应用安全详情(入门篇)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月1日19:42:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   web应用安全详情(入门篇)https://cn-sec.com/archives/1582386.html

发表评论

匿名网友 填写信息