热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网络安全自学篇

网络安全常用工具

Burpsuite

Fiddler

Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

Fiddler是用C#写出来的,它包含一个简单却功能强大的基于JScript .NET 事件脚本子系统,它的灵活性非常棒,可以支持众多的http调试任务,并且能够使用.net框架语言进行扩展。安装前需安装microsoft .net framework可执行文件。

手机渗透:可以尝试抓取微信浏览器中的结构头,接着通过fiddler的方式,在用第三方(360、QQ、谷歌等)打开的时候,所有数据都会经过fiddler,将该结构修改即可。
原文链接:https://blog.csdn.net/Eastmount/article/details/97784774

SQLMAP

SQLMAP是一款非常强大的开源渗透测试工具,用于自动检测和利用SQL注入漏洞控制数据库服务器的过程。它配备了一个强大的检测引擎,由Python语言开发完成,通过外部连接访问数据库底层文件系统和操作系统,并执行命令实现渗透。

OllyDbg

OLLYDBG是一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3级调试器,非常容易上手,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。

常见攻击

1.SQL注入

汤神从漏洞成因,攻击方式以及防御方案三个方面讲解SQL注入。漏洞成因我们可以用这两句话,使用用户参数拼接这个SQL语句,这个参数改变了原有的SQL结构,改变了这个SQL的注入。
下图左边这是一个数据库,白色部分的字体是我们在代码中写到的SQL结构,黑色部分就是攻击者可能会传入的参数(‘1’='1’始终成)。当我们把这个SQL结构拼接出来之后形成了一个新的结构,这个结构被执行之后把整张表所有的数据传输出来,数据库比较大的访问更多请求,整个可能就挂了,还造成一些数据泄漏的情况,这些就是SQL的注入成因,参数改变了原有的SQL结构。

攻击者通常有哪几种攻击方式?
汤神把它分为了三种类型:一种是回显注入,一种是报错注入,一种是盲注。

回显注入
利用注入漏洞可以改变页面返回数据,则称之为回显注入。
第一张图是传入ID是正常的正型数字,返回的结果是用户的一个信息传入ID等于1,上面URL把这个参数修改了一下,等于1,然后加了 or 1=‘1,当它拼接到之后,跟前面一样把整个表的数据传输出来,这边看到整个用户表的数据都被列举出来了。利用漏洞可以改变这个页面的数据我们叫做回显注入,这个黑客可以直接把这个数据下载下来。

报错注入
下图非常清楚看到,URL上面这个部分是正常URL加上攻击者所利用的攻击代码。其实这上面的攻击代码也是执行不了,但放到数据库中,最后会造成数据库返回异常码,并把异常码抛出来,接着这个用户名(act_admin 10.59.107.125)就被展示出来了。这是非常敏感的信息,我们写代码的时候需要把数据库抛出来的错误屏蔽,不让其在前台显示出来,通过报错显示了一些敏感信息,我们称之为报错注入。

盲注
盲注和回显注入以及报错注入不一样,我们没有办法通过页面数据看到它的区别。可以通过两种方式实现盲注——布尔盲注和时间盲注。下图中绿色部分是正常URL,红色部分是布尔注入的表示式,前面加一个and截取一个字符,判断一下id的第一个字符是不是大于字母a。
如果成立则整个条件都成立,这个时候页面是有反馈数据的;如果不成立这个页面就不返回数据,这就是布尔数据。我们可以看到有数据和没有数据的情况,当字母a不断变换的时候,也可以把这个数据库里面的数据猜测出来。

时间盲注是下面蓝色区域部分,我们知道数据库里面可以用一些IF函数,也是截取第一个字符,如果这个不成立就到五秒钟返回,通过这个页面返回的时间可以判断这个地方是不是有注入的,也可以把这个数据都给下载下来。
网络安全自学篇

刚刚说到攻击者碰到的三种攻击方式,下面看一下怎么样检测页面当中有没有注入点?我们通过SQLMAP实现,可以看到这是一个CMD窗口,上面是写到的检测表达式,Splmap.py以及需要检测的UI,需要有这个注册点它会告诉你有哪些注入,比如说这个页面是在本地测试的结果,它就告诉了有回显注入、错误注入以及一些盲注。

SQLMAP用法推荐秀璋的另一篇文章:[渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法

呢么,怎么样防范服务器的安全呢?

第一种方法是拦截带有SQL语法的参数的传入。参数会改变SQL的结构,当我们知道这个参数是整型的时候,就把这个参数转型为整型,整型肯定不包括这个SQL结构,无法改变结构,哪就不存在SQL注入。

第二种方法是通过预编译处理拼接参数的SQL语句。有的时候我们无法预测它传什么参数,比如我们去论坛回复一个帖子,肯定没有办法控制,这个时候我们可以用PDO预处理,这是最常见的方法,也是一个最好的方法。但有时我们会写一些复杂社会语句,会用第一种方法,我们先定义好这个SQL语句结构,再把参数放进去,这个时候是无法达到更改SQL语句处理的目的。

第三个方法是定期分析数据库执行日志,判断是否有异常SQL执行。当业务比较大的时候,日志是非常多的,可以找一些SQL的取模软件进行取模,取模之后并不太多,如果直接看的话是海量日志,是没法看的。

2.XSS跨站
跨网站脚本(Cross-site scripting,通常简称为XSS或跨站脚本或跨站脚本攻击)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是Javascript,但实际上也可以包括Java、Vbscript、ActiveX、 Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和COOKIE等各种内容。

主要从漏洞成因、攻击场景和防御方法三方面讲解。

如上图所示,上面有一个URL,下面是一个页面返回的HTML代码,我们可以看到白色部分HTML是我们事先定义好,黑色部分参数是用户想搜索的关键词。当我们搜索了test+Div最后等于123,对后反馈页面一般搜索会告诉你用户搜索了什么关键词,结果如何等等。

这个地方如果没有做好转移,可能会造成XSS跨站,我们可以看到蓝色部分是我们事先定义好的结构,被攻击者利用之后它先把这个DIV结束了,最后加上一个script标签,它也有可能不跟你谈标签,直接发送到它的服务器上。参数未经过安全过滤,然后恶意角本被放到网页当中执行,用户浏览的时候执行了这个脚本。

漏洞原因即为:

XSS分为三种类型——反射型、存储型以及DOM型。

反射型
下图是专门训练一些WEB漏洞的练习页面,我们可以输入自己的名字,输入之后会把我们的名字显示出来。例如我们输入了一个“张三”,这个时候弹出来了一个“123”,在那边显示了一个张三,但是script标签没有出来,因为这个标签被执行了。

存储型
在存储型XSS中,可以看到这个URL上面并没有代码,但是依然弹出了一个“1”。它是发现个人资料页的时候有一个XSS漏洞,在个性签名的位置填入了一个XSS标签,弹出了一个“1”,把这个地址发给别人,别人看到这个地址并没有什么代码以为这个页面是安全的,结果一打开就插入了这个XSS代码。

存储型XSS的攻击危害比较大,因为它的页面当中是看不到这个Script的代码,别人防不胜防。只要管理员没有发现,下一个用户或者下一个用户一直接发它,而反射型需要用户主动点击的。

DOM型
Dom型的XSS是一些有安全意识的开发者弄出来的。比如说接受参数会做一些过滤,把一些字符转义一下,但是转义之后依然会存在着XSS的情况,比如说下图中,我们上面输入的可以看到这行代码规律,把这个大括号、小括号以及双页号进行转移,按理说转移之后它应该不会再作为它的标签存在,不会存在XSS的代码。

下面Script通过ID获得的这个值,复制到了这个DIV上,经过DOM操作之后,之前转义的字符就变为它的标签,所以经过DOM操作的XSS我们称之为DOMXSS。它有可能通过URL传播,也有可能通过服务器的传播。

最后给出一些编码的防范措施。

第一是标签黑白名单过滤。有时根本就不需要考虑到它是不是HTML标签,我们根本用不到HTML标签。

第二是代码实体转义。只保留文字部分这是一劳永逸的,有时我们还是需要展示这个标签,比如说程序论坛当中要贴一个代码,这个时候我们需要用一些转义,它会把这个大括号、小括号以及双引号做一个转义,做为一个字符,就无法执行这个标签型,后面加一个参数,但有时候单引号也会造成XSS。

第三是httponly防止COOKIE被盗取。一个信号当中有那么多的地方存在着这个输入以及检测的地方,可能就有一些地方漏掉,只要有一个地方漏掉了,用户的COOKIE信息就被盗取了。服务器在发送用户信息的时候,我们需要加上一个httponly,这个代码无法读取到COOKIE的信息,那么攻击者也是得不到这个信息的。对于用户来说也是非常好的保护。比如说张三在我们网站上登陆了一下用户名,李四他特意发了一个攻击请求,他拿不到这个用户ID,就冒充不了这个张三。

如果在COOKIE中设置了HttpOnly属性,那么通过js脚本将无法读取到COOKIE信息,这样能有效的防止XSS攻击

3.越权漏洞
我们再来看看越权漏洞,在一些系统当中如果存在着多种用户角色,每一种角色有不同的权限。操作业务适合如果权限不严格可能会发生越权漏洞。越权分为垂直越权和平行越权,其产生原因包括:
1)业务系统存在用户权限验证
2)对用于的权限验证不严谨
3)用户能操作不属于自己权限的操作

平行越权
在WEB系统中有商城,这个商城中必不可少的就有订单,订单肯定有一个店铺ID,我们通常把它设置为一个自增长的ID,这个ID是一个数字类型。在URL上面如果有一个订单ID就是100,攻击者会尝试100+1,当它ID等于101或者99的时候能否访问到。

如果能访问到并且这个订单信息不是我的,这个地方就存在着一个漏洞。张三可以看到李四的订单信息,这个时候就存在着越权。张三和李四是平级的用户,他们两个权限是一样,互相可以看到平台信息这叫做平行越权。

这个有什么危害呢?
比如说这个网站有漏洞,如果是竞争对手他就可以知道用户在我的平台上下过订单的行为,然后去营销。如果把这个订单ID直接暴露出来,还有一种可能就是竞争对手会根据我们的订单IP的增长量,判断我们的增长量,就知道我们一天到底有多少订单。

平行越权防御方法:我们查询的时候必须加上当前用户的ID,就是orderID加上UID,这样不会出现张三可以看到李四的订单了。

垂直越权
接下来我们再看一下垂直越权,这是一个普通用户进入到后台管理系统中,他的权限就扩大化了。通常这种情况下,后台会集成到更多的控制器来统一管理,但依然有一些邮件会漏掉并没有集成到,就会发生这种情况。

黑客不会一个一个找,会通过一些扫描器发现漏洞进去。建议不要把自增长ID暴露出来,可以做对称加密或者非对称加密,先转换为一个字母类型,让别人看不到你的数字型的ID是多少。别人就没有办法通过这个加一减一的方式越权,也看不到你的一天业务增长量。

汤神建议尽量把前台的方法和后台的方法区分开来。越权,其实不仅仅限于展示,我们刚刚看到了这个订单,张三可以看到李四的订单信息是查看,但是有的时候我们修改订单的时候也会出现这个问题,所以在读写的时候都需要注意一下这个越权的问题。

4.CSRF跨站请求伪造
CSRF通常会配合XSS使用。服务端错把浏览器发起的请求当成用户发起的请求,会造成XSS问题。比如说我打开了张三的网站,登陆了一个用户信息,李四网站上有一个攻击代码,向张三这个网站发起请求,张三的网站会以为你本人发起的请求,实际上是浏览器发出的请求。
产生原因为:
1)服务端错把“浏览器发起的请求”当成“用户发起的请求”
2)已登录的浏览器,打开恶意网址后,被执行了相应操作

下图中有一个表单,左边是它的源码,我们可以看到表单每一项都在,但是从安全的角度上考虑它是少了一样东西,没有一些验证码或者TOKEN等等相关信息。服务端如果没有验证这个问题,就会造成这个CSRF的攻击。

如何检测我们的系统当中是否存在这个CSRF?
1)去掉token参数尝试能够正常请求
2)去掉referer是否可以提交成功
3)是否能用GET提交替代POST提交

如果以上都存在,那么它就存在CSRF。建议一定要验证Reeferer信息、Token验证、图片验证码等。根据业务安全等级越高,最基础的可以用这个refefe验证,再高一级就是token,再高一级就是图片验证。

5.支付漏洞
最后看看支付漏洞。汤神之前看到一个新闻,有一个浙江老板,他想做线上找人做了一个网站,这个网站存在着一些支付漏洞,一周之后他发现这个订单量极速上升,卖了70多万,结果看了一下帐户余额只有几千块钱,报警之后才查到原因,但是货物已经发出去了。

支付漏洞主要产生的原因包括:
1)开发者在数据包中传递支付的金额
2)后端没有对金额做校验或者签名
3)导致攻击者可以随意篡改金额提交

造成这些漏洞原因有很多,比如说支付金额是由前端提交的数据,不是后端计算的,而且没有对这个金额做校验,直接信任前端提交的金额,导致这个攻击者可以随即修改这个金额,比如修改为一分钱,这是非常典型的可以随意更改这个金额。
上面的金额是94元,这个表单里面改为一分钱,最后提交的时候是一分钱,这是非常好的漏洞,也是非常典型的。
还有一个问题是数量的限制,一个价格是26元,一个是27元,把这个数量变为负一之后,一提交变为一块钱了。这是之前数据包的漏洞,他充值了一块钱,他发现有一个数据包向网站发送,他就把这个数据包反复重放,就加了好几次,实际上只充值了一块钱。
如何防范?
可以限制这个低价购买产品,比如说负数的时候肯定不行,等于零的商品根据业务情况也是需要多注意的。限制免费商品获得金钱和积分的情况,有一些商品免费,但是它可以获得一些积分,那就存在着刷积分的情况。

思维导图

网络安全自学篇

链接

https://blog.csdn.net/Eastmount/article/details/105350314?depth_1-utm_source=distribute.pc_category.none-task-blog-hot-6&request_id=&utm_source=distribute.pc_category.none-task-blog-hot-6

数据结构

还没有开始数据结构学习的我还需要在B站上找一个up主跟着学习,并且练习相关实验内容,开始了沉浸在代码中的几个小时


推荐阅读
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了在使用TortoiseSVN的Repo-browser浏览SVN时出现的错误,以及解决方法。文章提到了卸载当前版本、安装较低版本、使用更下一层的路径等解决方案。同时指出该问题可能是客户端与SVN服务端不匹配造成的,且服务端无法升级更高的SVN版本。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了StartingzookeeperFAILEDTOSTART相关的知识,希望对你有一定的参考价值。下载路径:https://ar ... [详细]
author-avatar
wiggin
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有