原文:程序员成长指南作者:senntyou
原文:https/segmentfault.com/a/1190000018004657
如有侵权,请联系我们删除。
大家好。今天我给大家介绍一下Web安全领域的一些常见的安全问题。
1、SQL 注入
SQL注入攻击的核心是攻击者为了获取数据库中感兴趣的数据或对数据库进行读、修改、删除、插入等操作而达到险恶目的而预期的SQL语句被执行。通过网络服务器。
如何强制Web 服务器执行攻击者的SQL 语句? SQL 注入的传统例程是将SQL 语句放在表单或请求参数中并将其发送到后端服务器。后端服务器不进行输入安全验证,直接检索变量进行数据库查询。很容易被愚弄。
一个例子是:
对于根据用户ID检索用户信息的接口,后端SQL语句通常如下所示:
selectname,[.]fromt_userwhereid=$id
这里,$id是前端发送的用户ID,假设前端请求是这样的:
GETxx/userinfo?id=1%20or%201=1
如果转义后的请求参数ID变成1或1=1,并且后端不使用安全过滤器直接发送数据库查询,SQL语句将如下所示:
selectname,[.]fromt_userwhereid=1or1=1
结果,用户表中的数据全部被找到,黑客数据泄露的目的就达到了。
上面只是一个非常简单的例子。真正的SQL注入攻击中,参数构造和SQL语句比这复杂得多,但原理是一样的。
2、XSS 攻击
XSS的正式名称是Cross Site Scripting,另一个缩写改为XSS,以区别于重复的样式表CSS。
XSS攻击的核心是将可执行的前端脚本代码(通常是JavaScript)嵌入到网页中。简单来说,这就是强制浏览器执行攻击者编写的JS代码。你怎么做呢?一般来说,XSS分为两种类型:
反射型
1、攻击者在URL中放置JS代码作为请求参数,诱导用户点击。
例子:
http://localhost:8080/test?name=scriptalert(\’你受到攻击!\’)/script
2.当用户点击时,JS作为请求参数传递给Web服务器后端。
3. 后端服务器不进行任何检查或过滤,只是进行处理,插入到网页正文中,然后返回给浏览器。
4. 浏览器解析并捕获返回的网页。
存储型
上述方法中,攻击脚本直接传输到服务器并返回到浏览器触发执行。与存储类型的区别在于攻击脚本可以存储在数据库中以供以后查询。攻击脚本被渲染成网页并返回到浏览器触发执行。常见例程的示例包括:
1.攻击者网页回复且帖子中包含JS脚本
2. 响应发送到服务器后,将存储在数据库中。
3、其他网友查看帖子,后台查询帖子的回复,构建完整的网页,返回浏览器。
4、网友浏览器渲染了返回的网页,却被骗了。
3、CSRF 攻击
CSRF,跨站请求伪造的中心思想是,当打开A网站时,会打开另一个标签页,该标签页会打开恶意网站B。此时,在B页面的“怂恿”下,浏览器向网站发起HTTP请求。网站A。这个过程有两个危险:
1. 这个HTTP请求并不是用户主动想要的,而是B“怂恿”的。如果这是一个更有害的请求操作(发送电子邮件?删除数据?等),它就会变得混乱。
2、由于之前已经打开过A网站,并且您的浏览器存储了A网站发出的用于验证身份的cookies或其他信息,因此此次“怂恿”的请求是否会自动检索信息以及A网站后台是否会这样做,目前尚不清楚这。用户真正想要的是
4、DDoS 攻击
DDoS 的正式名称是分布式拒绝服务(本文也有介绍:)。这是拒绝服务攻击的升级版本。顾名思义,拒绝服务攻击会导致服务不可用。它通常用于攻击提供外部服务的服务器,例如:
网络服务
电子邮件服务
域名解析服务
即时通讯服务
.
攻击者继续创建服务请求,阻止合法用户的请求得到及时处理。这是DoS 攻击。
攻击者利用多台计算机或计算机集群进行DoS攻击,即DDoS攻击。
在互联网技术的早期,发起DoS 攻击是非常容易的。在功能强大的计算机上,您可以编写一个具有多个线程的程序来不断向服务器发送请求,这将使服务器过载并最终无法处理它。其他普通用户可能无法访问您的网站。这意味着拒绝服务。
那么,随着技术的发展,今天的服务器不再只是服务器,当你访问域名www.baidu.com时,其背后还有无数的CDN节点和Web服务器。
在这种情况下,尝试为一台计算机加载完整的网络服务就像把鸡蛋扔到石头上:如果对方不倒下,你先倒下。
技术永远是一把双刃剑:分布式技术可以用来提供高可用的服务,但也可能被攻击者用来进行大规模的破坏性攻击。攻击者不再局限于单台计算机的攻击能力,而是通过大型网络集群发起拒绝服务攻击。
5、DNS劫持
当今互联网流量的很大一部分是由Web 服务产生的,其中主要是HTTP/HTTPS。 Web 服务开发正在如火如荼地进行,未知的贡献者是其中不可或缺的一部分。那就是域名解析系统。
如果没有DNS,您在浏览Internet 时必须记住每个网站的IP 地址,而不是其域名,但好消息是DNS 在后台自动完成所有这一切,您所需要做的就是记住域名。让DNS 完成剩下的工作。
因为太重要了,不能放过别有用心的人,所以发明了DNS劫持技术。
虽然DNS提供了将域名转换为IP地址的服务,但早期的协议设计并没有考虑查询端的安全性。
这真的是我请求的DNS 服务器吗?是其他人冒充的吗?
查询结果是否被篡改?该IP是否真的属于该网站?
由于DNS协议没有机制保证能够回答这些问题,因此从用户在地址栏中键入域名的那一刻起,DNS劫持就很常见,而且很难防止危险的发生。
本地计算机上的木马修改hosts文件
本地计算机上的特洛伊木马修改DNS 数据包响应
网络中的节点(例如路由器)修改DNS 数据包中的响应
网络中的节点(例如运营商)修改DNS 数据包内的响应
.
后来出现了DNSSEC技术,可以在一定程度上解决上述一些问题,以便在客户端验证收到的DNS响应。但由于多种原因,该技术并未大规模应用,尤其是在中国。
随后,阿里巴巴、腾讯等主要互联网厂商开始推出httpDNS服务。这意味着,尽管该技术的名称中仍然带有三个字母的DNS,但实现方式却与原始DNS 完全不同。该技术将DNS转变为基于http协议的应用服务。
6、JSON 劫持
JSON是一种轻量级的数据交换格式,劫持是指窃取(或者更恰当地说,抢劫或窃听)恶意攻击者期望返回给用户的数据并发送JSON数据。将数据返回给恶意攻击者这就是JSON劫持的一般含义。被劫持的JSON 数据通常包含敏感或有价值的数据。
7、暴力破解
这通常适用于密码。弱密码很容易被其他人(例如您熟悉的人)猜到或被破解工具暴力破解。
解决方案:密码复杂度必须足够高,并且足够隐藏,以限制尝试次数。
8.、HTTP 报头追踪漏洞
HTTP/1.1 (RFC2616) 规范定义了HTTP TRACE 方法。此方法主要由客户端用来运行测试或向Web 服务器发送TRACE 请求以检索诊断信息。
当Web服务器启用TRACE时,发送的请求标头将在服务器响应的内容(主体)中完整返回。 HTTP 标头可能包括会话令牌、cookie 或其他身份验证信息。攻击者可以利用此漏洞欺骗合法用户并获取个人信息。
解决方案:
禁用HTTP TRACE 方法。
9、信息泄露
Web服务器或应用程序没有正确处理一些特殊请求,导致Web服务器的一些敏感信息泄露,例如用户名、密码、源代码、服务器信息和配置信息。
因此,一般情况下应注意以下几点:
当应用程序报告错误时,不会在外部生成用户提交的数据和特殊字符,以确保源代码和服务器配置的安全。
10、目录遍历漏洞
通过将./附加到具有特殊含义的URL 或目录,或者./的变体(例如. 或.//或其编码),攻击者可以向Web 服务器发送请求。攻击者可以访问未经授权的目录并在Web 服务器根目录之外执行命令。
11、命令执行漏洞
命令执行漏洞包括通过URL发起请求、在Web服务器上执行未经授权的命令、检索系统信息、篡改系统配置、控制整个系统以及瘫痪系统。
12、文件上传漏洞
如果文件上传路径变量没有严格过滤,并且用户上传的文件后缀和文件类型没有严格限制,攻击者就可以创建网站后门文件(可以上传包括Web shell在内的任何文件)。远程控制您的网站服务器。
因此,一般来说应注意以下几点:
网站和应用程序开发需要对上传的文件进行严格的限制和验证,禁止上传包含恶意代码的文件,限制相关目录的执行权限,防止Web shell攻击。
13、其他漏洞
SSL 剥离攻击
OpenSSL Heartbleed 安全漏洞
CCS注入漏洞
证书验证漏洞
14、业务漏洞
常见的业务漏洞与特定应用程序相关,例如参数篡改(持久ID/订单、单向支付)、重放攻击(欺骗支付)、授权控制(操纵)等。
15、框架或应用漏洞
WordPress 4.7/4.7.1:REST API 内容注入漏洞
Drupal 模块RESTWS 7.x:远程PHP 代码执行
SugarCRM 6.5.23:REST PHP 对象注入漏洞
Apache Struts:具有动态方法调用远程代码执行的REST 插件
Oracle GlassFish 服务器:REST CSRF
QQ浏览器9.6:API权限控制问题导致隐私模式泄露
Docker 黑客攻击:未经授权访问注册表API
#以上是一篇文章总结的常见网站攻击技术。相关内容来源网络仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93918.html