Web漏洞的原理以及修复总结(一)

本文章仅供学习分享使用,不做任何的违法行为!!!

一.漏洞原理:

  1. sql注入漏洞:我在页面表单提交的数据传到后端做处理时,没有做严格的判断,像一些特殊的字符#,’, “ ,)他没有做严格的过滤,传输到后端时将数据拼接到sql语句中执行,因此,我可以构造一些特殊的语句像查询数据库的版本讯息,数据库名表名等,去挖掘数据库的敏感信息。
  2. 文件上传漏洞:我在开发网站的时候,没有考虑到安全的一个问题,比如说没有考虑上传文件的格式的后缀合法性,这时候攻击者可以上传一个恶意的脚本文件到服务器上,这个恶意脚本文件可以是一些病毒,木马,webshell,web脚本文件,如果其他用户访问该恶意脚本文件时,就能够解析出来恶意的代码,这时候就会对其他用户造成危害。
  3. 文件包含漏洞:分为本地文件包含和远程文件包含。

我作为一个程序员,我不想写太多的重复的代码,我想偷懒,这时候我引入一个文件包含的函数,简单来说就是一个文件包含另一个文件或者多个文件,来解决我这问题,但是如果包含的任意后缀文件会被当作代码执行,这时候攻击者还知道我包含文件的路径,那么很有可能就包含一些恶意的文件去执行,从而导致getshell.

  1. xss漏洞(跨站脚本):反射型xss 存储型xss DOM型xss  xss之过滤  xss之盲打  xss之htmlspecialchars   xss之href输出  XSS之Js    

我是一个程序员,我在前端网站写一个表单的代码是时候,我没有考虑到安全性的问题,比如说一些html中的特殊字符数字像<script></script>标签,我没有对这些字符做一个过滤,或者合适的处理,攻击者它发现了这个漏洞,于是它会“精心构造”一些恶意的前端代码,比如说弹出警告的窗口等等,就会造成xss漏洞。

  1. csrf漏洞:(跨站请求伪造)“天时”“地利” “人和”

我刚好访问这个这个网站

我信任攻击者发送的动作

网站没有太多的认证信息

举一个列子:我想在CSDN中写一篇文章,我在谷歌浏览器中登录一个我的账号和密码,这时候信息验证通过,CSDN网站会产生一个cookie的值返回到谷歌浏览器中,我登录CSDN网站成功,我的信任的一个同学,他想登录我在CSDN中的账号,对我的信息进行修改像删除我的文章,这时候能他就发送给我一个邮件,邮件中就包含这删除文章的代码,我在同一个谷歌浏览器中,我打开了这个邮件,谷歌浏览器受到这些攻击代码之后,在我不知道的情况下,携带了cookie的信息向CSDN网站发送这个删除文章的请求,CSDN在验证信息的时候,会以为是我发送的请求,就开始执行。这是我的同学就利用了csrf的漏洞,完成了攻击。

  1. ssrf漏洞:(服务器的请求伪造)

假设我是校外的人员,我想访问学校内部教务系统上传文件,这时候我还没有取得服务器所有权限,那么这时候我利用服务器的漏洞(没有对我的地址进行过滤和限制)以服务器的身份发送一条构造好的请求给服务器所在的内网。这是我的攻击就成功了。

  1. XXE漏洞(外部实体注入漏洞)

是另外一种形式的注入,类似与sql注入或者说xss注入,那么XXE就是可以在解析XML的地方比如说一个输入框除来提交一个恶意的XML代码来执行,这个漏洞的主要的原因就是对用户提交的XML的数据没有做太多的过滤,使得用户提交的数据被当作XML来执行了。

  1. 命令执行漏洞

应用会调用执行系统命令的函数像php中的system,exec,shell_exec等,当我输入系统命令的参数时,应用就会将参数拼接到命令行中,而美哟有对我输入的命令进行过滤,从而导致了命令执行漏洞。

  1. 反序列化漏洞:程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程中可以被恶意控制,进而造成代码执行getshell等一系列的不可控制的后果。反序列化数据本质上时没有危害的,当反序列化数据被用户可控的时候,就会发生一些预期之外的结果存在危害。而我们找反序列化漏洞的着力点就在用户数据是否可控。根源在于反序列化时有没有对生成的对象类型做限制。
  2. 漏洞修复
  3. 反序列化漏洞:主要是以白名单(被立为白名单的ip,邮件对象的类型会优先通过)为主,限制对象的类型,从而减小影响。
  4. 命令执行漏洞
  5. 尽量不要使用命令执行函数像system,exec,shell_exec等;函数
  6. 对于用户提交的变量要在执行函数前提下做好过滤,比如说设置白名单策略。
  7. 在使用函数之前,确保使用的函数是指定的函数之一。
  8. 对于php语言来说,不呢个完全控制的危险函数最好不要使用。
  1. XXE漏洞:
  1. 禁止使用外部实体,例如: libxmldisable_entity_loader(true)
  2. 过滤用户提交的XML数据,防止出现非法的内容。
  1. ssrf漏洞
  1. 限制请求的端口只能是web端口,只支持访问http和https请求
  2. 限制不能访问内网的ip,防止对内网进行攻击比如说设置黑名单。
  3. 屏蔽返回的详细信息。
  1. csrf漏洞:
  1. csrf之所以能够被攻击成功是因为它能够伪造用户的请求,如果我们在请求中放入攻击者不能够伪造的信息例如在http的请求中以惨啊书的形式加入一个随机产生的token并且服务器端验证token.如果请求中没有token或者token的内容不正确,则认为请求可能是csrf攻击从而拒绝请求。
  2. 验证请求的referer值,如果referer是其他网站域名或者空白,就说明存在csrf攻击,那么服务器就会拒绝,凡是这种方式可能会被让绕过。
  1. xss漏洞:
  1. 可以设置白名单对数据比如说script标签,img标签进行过滤限制,来对可执行的脚本进行清理。
  2. 对输入的数据像script标签进行html转义,使其成为输入文字输出,不会被识别称可执行的脚本。
  1. 文件上传漏洞:
  1. 判断文件的类型,使用黑白名单的方式也可以结合MIME TYPE、后缀检查的方式。对于上传图片的处理,可以使用压缩函数或者resize函数,可以破坏图片中包含的html代码
  2. 文件上传的目录设置为不可执行,只要web容器无法解析目录下的文件卖服务器也不会受影响。
  3. 在服务端设置白名单对上传文件名和文件路径等项目进行严格的过滤,防止发消息等方式的绕过。
  1. sql注入漏洞
  1. sql注入的形成的原因就在于将用户输入的数据直接拼接到sql语句中,那我们就可以使用参数化的形式,将用户输入的语句转变成参数化来传递用户的变量不会将用户输入的数据直接嵌入到sql语句中。
  2. 加强对用户输入的内容的检查和验证,可以利用存储过程来对用户输入的变量进行过滤,拒绝一些特殊的字符。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值