Java基础、中级、高级、架构面试资料

Web安全之常见的攻击手段

业余杂谈 herman 3710浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

软件安全性依然是个热点话题。从小公司到全球500强公司都听说过由互联网上的病毒和攻击者所引起的盗窃身份、丢失数据,及一般性的伤害的事发生。随着互联网的发展,以及美国“棱镜门”事件的曝光,Web安全越来越重要了!因此今天为大家介绍一下常见的Web网站攻击手段。

溢出攻击

溢出攻击主要源于开发人员对最终用户输入的数据不加以验证。常见的有用户名输入框中输入超过40000行的文本,或者密码输入框中输入非键盘输入的模糊字符等。这些输入的数据没有进行验证,导致字符串,整型数字等超过范围,导致了溢出性问题。

举例来说,使用本文编辑器并了解一些 Microsoft PowerPoint 文件格式的知识,人们就可以手工编写 PowerPoint 文件。编辑 PowerPoint 文件,让内部字段中拥有比格式允许的更多的数据会导致 Microsoft PowerPoint XP 崩溃,然后执行任何黑客想要执行的程序。在一个这种脆弱性的熟悉的实例中,内嵌的 Windows 计算器程序被执行,然而,被执行的程序很容易是更恶意的。

溢出类攻击是由于将太多的数据放入原始程序设计人员认为足够的空间中导致的。额外的数据溢出到预期存储区附近的内存中,并且覆盖与该区域的原始用途无关的数据。当执行余下的程序时,它使用新被覆盖的数据。如果黑客能够用伪数据(也就是,NOP)填充足够的空间,然后添加一点恶意代码或值,那么程序将执行恶意代码或使用新值。这可能导致许多不同的后果。黑客可能能够越过登录,获得程序的管理员特权。如果受攻击的程序是由系统管理员启动的,那么恶意代码将作为原始程序的一部分进行执行,给黑客系统中的管理员特权。

溢出攻击在一些情况下,可能很容易被补救,当开发应用程序时利用“安全”库,使用堆栈保护(也就是,StackGuard8)或对输入数据进行检查,从而确保其是适当的大小或类型。

缓冲区溢出攻击

在缓冲区溢出攻击的实例中,程序的内部值溢出,从而改变程序的运行方式。在程序的正常操作过程中,当调用一个函数时,被调用函数的所有参数以及返回位置的指针都放在栈中。当完成该函数之后,使用返回指针回到原来的位置并继续程序。利用缓冲区溢出进行攻击可以改变这个过程,并且允许黑客执行任何他们期望的函数。 这是通过输入足够的数据来用伪数据覆盖参数,及输入到不同函数的新返回指针来实现的,从而就执行新的函数了。

SQL注入

SQL 注入最常见和最简单攻击手法了,SQL注入是依赖于开发人员没测试输入数据的疏漏的攻击。大多数人拥有字母数字式密码,或者有安全意识的人,拥有附带其他键盘符号的字母数字式密码。由于这种想法,开发人员可能允许输入任何字符作为密码。使用 SQL 数据库的密码系统(在许多网站上非常普遍的场景)可能运行这样的查询:

SELECT * FROM users WHERE 'username' = '$USER' AND 'password'='$PASS';

$USER 和 $PASS 会用用户提供的用户名和密码来代替。如果黑客输入 admin 和 <<'hi' 或 1=1>>–,那么查询是:

SELECT * FROM users WHERE 'username' = 'admin' and `password` = 'hi' OR 1=1--'

注意用户输入的引号如何与原始查询中的第三个引号匹配。数据库现在会返回用户名为 admin 的所有元组,并且会取消对密码的检查,因为 'password' = 'hi' OR 1=1 命令数据库寻找密码是 hi 的元组或 1=1 的元组,而由于 1 总是 1,所以每行都是候选。– 是 SQL 注释标志,取消查询中原始的其他引号,并且还将取消任何额外的检查,因此如果有额外的凭证也会被忽略。现在黑客可以以管理员的身份进入系统并且不用给出合法的密码。通过利用越来越复杂的查询,黑客可以变更、添加,或查询数据。
SQL注入的脆弱点被证实是对 Web 应用程序最有效的攻击类型之一,并且随着对 Web 应用程序的信任的增加,这种利用的力量甚至将更令人畏缩。幸运的消息是,像溢出类型的攻击一样,可以通过检验输入数据来防止大部分这种脆弱点攻击。

散列攻击

这类攻击也很常见,数据库中存在的用户名密码或其他的私有数据全部未进行加密。如果数据库暴露了,那么整个系统中的私有数据全部泄露了。想这类我们利用单向加密算法或散列,像MD5等将转换成一段其他数值,使密码的解密成为不可能。当然现在的MD5也不是安全的加密算法了。

散列可以将输入值转化为新的值,而这些新值不能从数学上逆向生成原始值。但是这种算法,现在也可以通过撞库等操作进行尝试破解密码,我们可以使用新的算法替代MD5等算法,或者使用MD5进行多次加密。

现实中,每天都存在大量的散列攻击工具进行网站攻击,可能你不知道而已。对Google来说,一些安全性不高的网站会影响到搜索引擎的排名。

默认值攻击

这类攻击大部分是未进行修改初始化的配置信息,也很常见。中国大部分的人IT知识相对较差,一些路由器,数据库等应用,使用默认的账号和密码。如:admin,root,80,8080,3306等常见的账号和端口。

版权声明:本文为博主原创文章,未经博主允许不得转载。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » Web安全之常见的攻击手段