【网络安全的神秘世界】web应用程序安全与风险

在这里插入图片描述

🌝博客主页:泥菩萨

💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本

第一章:web应用程序安全与风险

web攻击基础知识

1、什么是web应用攻击

web攻击的本质,就是通过http协议篡改应用程序(永远不要相信用户的输入)

可利用点:请求方法、请求头、请求体

利用过程:认证、会话、授权

弱口令强口令账号枚举
认证不满足强口令条件密码长度至少8位
包含大小写字母、数字、特殊字符中的至少3类
密码和用户名无相关性
尝试大量可能的账号名称,以找出系统中存在的有效账号
为了密码爆破做准备,节省攻击时间

判断下面属于什么口令:

admin@123#1 --弱口令,与用户名相关

P@ssW0rd --不建议使用,使用的用户太多已经可以被密码字典爆破出来

1qaz@wSx --不建议使用,键盘排序码可以被密码字典爆破

magedu5689065 --弱口令

session
会话为保持与用户交互状态而创建的一个数据存储机制
保存用户的登录信息cookie
越权未授权访问权限绕过提权
授权能够进行原本账号不具备权限的操作不用输入账号密码,就能进行操作通过某种方法绕过不让做的操作将普通用户提权到管理员用户

利用途径:web、客户端、html、其他网络协议(所有能让用户与系统产生交互的地方)

2、web攻击的特点

广泛性:大家都可以进行攻击

匿名性:顶多看到攻击源IP

利用难度低:不需要具备非常高深的技术能力就能实施一些攻击行为

3、常见的web安全问题
安全漏洞攻击手段
web应用SQL注入、XSS、未授权访问、越权、弱口令、输入验证、程序逻辑漏洞、钓鱼等
web客户端客户端软件漏洞、浏览器、APP、小程序等
中间件针对应用服务器底层软件的攻击,如IIS、Apache、nginx、tomcat
数据库SQL注入
传输中间人攻击、窃听等
可用性DDoS(分布式拒绝服务攻击)、CC攻击

Dos(拒绝服务攻击)

采用一对一的方式进行攻击,攻击者通过制造并发送大量没用的数据,耗尽被攻击方的资源,使其无法为用户提供服务==(也会消耗攻击者的大量资源)==

解决方法:将带宽、网络性能扩大

DDos(分布式拒绝服务攻击)

操纵大量的傀儡机去发起攻击,耗尽被攻击方的资源,使其无法为用户提供服务

解决方法:增加带宽、抗D设备(流量清洗)、IP过滤、CDN(分流)

CC攻击

模拟大量正常用户对目标网站频繁地进行特定的请求,耗尽目标服务器资源,使网站或服务瘫痪

4、web应用程序安全要点

输入验证:永远不要相信来自用户的输入

访问控制:网络层面、账号权限、白名单

安全配置:网络访问策略(子网划分)、账号密码策略、日志策略

强化代码安全性:DevSecOps(开发、安全和运营)、安全左移(shift-left)//让安全贯穿整个生命周期

web渗透测试测试学习框架

1、渗透测试流程

信息收集是基础(很重要)

在这里插入图片描述

2、渗透测试技术要点

一定要拿到授权才可以进行漏洞挖掘,否则这个行为是违法

安全应急响应中心SRC

(1)信息收集

挖淘宝的漏洞:http://www.taobao.com
登陆网站,挖漏洞:
(1)端口
(2)子站 abc.taobao.com  a.b.taobao.com
(3)新业务
(4)手机业务
(5)微信小程序
(6)友情链接
(7)旁站

(2)漏洞扫描

扫码攻击:AWVS、AppScan、Xray、Nessus、Metasploit...
扫描对象:应用层(url)、主机层(ip)
扫描方式:主动、被动

(3)漏洞利用——相当于渗透测试,点到为止,广度

(4)内网渗透——深度

(5)进阶学习

编程语言:JavaScript、PHP、python、Java
代码审计:白盒测试
应急响应:不是只有被攻击时才需要应急,一些核弹级漏洞爆出时也需要应急

渗透测试:黑盒测试(看不见具体代码)

灰盒测试:交互式分析工具,植入一个监控

第二章:web应用程序技术

1、HTTP协议

超文本传输协议,是一种规定了浏览器和万维网服务器之间互相通信的详细规则

渲染引擎:处理HTML和CSS代码

解析引擎:处理JavaScript代码

如何发起一个HTTP请求?

(1)在浏览器地址栏中输入一个URL,按下回车后就发起了HTTP请求

URL(统一资源定位符)的标准格式如下:

协议://服务器IP[:端口]/路径/[?查询]
● http:默认80端口
● https:默认443端口

(2)在windows中,也可以用curl.exe工具来发起请求

Get请求
curl.exe https://www.baidu.com
Post请求
curl -d "user=admin&password=admin" https:www.baidu.com

win+r打开cmd

在这里插入图片描述

(3)HackBar插件

点击Execute发起请求

在这里插入图片描述

2、HTTP协议详解

HTTP是一种无状态的协议,无状态是指浏览器与服务器之间不需要建立持久的连接(访问页面后断网,网页不会消失,除非有新的请求)

HTTP请求只能由客户端发起,而服务端不能主动向客户端发送数据

在这里插入图片描述

(1)HTTP请求

HTTP请求包括三部分,分别是请求行、请求头、请求体

<!-- 请求行 -->
POST /login.php HTTP/1.1	
<!-- 请求头 -->
Host: www.baidu.com		  
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0<!-- 请求正文 -->
Username=admin&password=admin

格式分析:

请求行由3部分组成:

  • 说明请求方法是POST
  • /login.php表示请求路径
  • http协议版本

第二行至空白行:这部分称为HTTP中的请求头(也被称为消息头)

  • Host:表示请求的主机地址

  • User-Agent:代表浏览器的标识(简称UA)

请求头可以自行修改

请求正文

  • 请求正文是可选的,最常出现在POST请求方法中
  • GET请求的请求正文在请求路径里

(2)HTTP响应

HTTP响应包括三部分,分别是响应行、响应头、响应正文(消息主体)

<!-- 响应行 -->
HTTP/1.1 200 OK
<!-- 响应头 -->
Date:Thu,28 Feb 2013 07:36:47 GMT 
Server:BWS/1.0 //服务器信息
Content-Length:4199  //指响应数据包的长度
Content-Type:text/HTML;carset=utf-8  //返回的内容是文本格式的html代码
Cache-Control:private  
Expires:Thu,28 Feb 2013 07:36:47 GMT  //响应到期时间
Content-Encoding:gzip  //响应包的格式
Set-Cookie:H_PS_PSSID=2022_1438_1944_1788;path=/;domain=.baidu.com  //设置cookie值,但是有没有Set-Cookie参数取决于网站开发人员
Connection:Keep-Alive  //保持连接<!-- 响应正文/消息主体 -->
<html>
<head><title>Index.html</title>
</head>
.....

格式解析:

响应行

http协议版本 响应状态码(200) 消息(ok)

第二行至空白行:响应头

由服务器向客户端发送

响应正文

是服务器向客户端发送的HTML数据,也有可能是json数据

3、HTTP请求方法

HTTP请求方法有很多,最常见的是POST和GET

(1)GET

用于从服务器获取资源

请求参数通常附加在URL后面,以“?”分割,明文显示不安全

(2)HEAD

除了不能在响应里返回响应正文外,其它都和GET方法一样

(3)POST

用于向服务器提交数据,以创建或更新资源,常用于:表单提交、上传文件等

POST方法与GET方法相似,但最大的区别在于,GET方法没有请求正文,而POST方法有请求正文

当像浏览器发送大量的数据的时候,不能用GET要用POST,因为GET请求会将发送的数据显示在浏览器端(URL是有限制的),而POST请求则不会,所以POST安全性更高

在URL中的请求参数,POST密文显示,GET明文显示

(4)PUT

用于更新指定资源的全部内容

通常情况下,服务器会关闭PUT方法,因为它会为服务器建立文件,属于危险方法之一

(5)DELETE

用于请求删除指定的资源

服务器一般都会关闭此方法,因为客户端可以进行删除文件操作,属于危险方法之一

(6)TRACE

用于追踪请求—响应的传输路径

响应头的via字段会显示请求经过的中间服务器的地址,可能会引发XST(跨站追踪)攻击,不建议使用

(7)OPTIONS

帮助查看服务器开启了哪些功能,可用来做信息收集不建议使用

通常包含以下重要字段:

Access-Control-Request-Method:告知服务器,接下来的请求将使用的方法。比如:POST、GET等

Origin:请求的来源,即发送请求的域名

4、HTTP状态码

当客户端发出HTTP请求,服务端接收后,会向客户端发送响应信息。其中,HTTP响应中的第一行,最重要的就是HTTP的状态码

HTTP/1.1 200 OK 

在HTTP协议中表示请求结果的状态码由三位数字组成,第一位数字定义了响应的类别,有以下5种:

1XX:信息提示,表示请求已被成功接受,继续处理。其范围为100~102
2XX:成功。其范围为200~206
3XX:重定向,用于告诉客户端,它们访问的资源已被移动,并告诉客户端新的资源地址位置。其范围300~307
4XX:客户端错误。其范围为400~415
5XX:服务端错误。其范围为500~505

常见的状态码描述如下:

100:客户端继续发送请求,这是临时响应
200:客户端请求成功
302:重定向
400:客户端有语法错误
401:请求未经授权
403:服务器收到请求,但是拒绝提供服务
404:请求资源不存在
500:服务器内部错误
503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

5、HTTP消息

(1)请求头

Host:指定被请求资源的主机和端口号

User-Agent:允许客户端把它的操作系统、浏览器和其它属性告诉服务器

Referer:代表当前访问URL的上一个URL

Cookie:表示请求者身份

Range:表示请求实体的部分内容

X-forward-for:即XFF头,它代表请求端的IP,可以有多个,中间以逗号隔开

Accept:用于指定客户端接受哪些MIME类型的信息

Accept-Charset:用于指定客户端接收的字符集

(2)响应头

Server:服务器所使用的web服务器名称,如:

Server:Apache/1.3.6(unix)

攻击者通过查看此头,可以探测web服务器名称。所以,建议在服务端修改此头的信息以达到隐藏的目的

Set-Cookie:服务端向客户端发送的Cookie信息

Last-Modified:告诉浏览器资源的最后修改时间

Location:新访问页面的路径,配合302状态码使用

Refresh:告诉浏览器定时刷新

(3)普通头

Date:消息产生的日期和时间

Connection:连接的状态

alive:持续连接
close:不需要保持持续连接

Cache-Control:用于指定缓存指令

(4)实体头

Content-Type:传输的文件类型

Content-Encoding:实体正文编码

Content-Length:实体正文的长度

本身没有安全问题,但可以做安全校验,如果正文长度与Content-Length字段的值对不上就会被拦截,但bp会根据内容的修改自动更新Content-Length字段的值

Last-Modified:资源的最后修改时间

6、HTTP协议与HTTPS协议的区别

  • HTTP信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议
  • 默认端口不同,HTTP默认80端口,HTTPS默认443端口
  • HTTPS需要用到CA证书会产生一定的费用,HTTP不需要

7、web应用程序编码

(1)URL编码

处理特殊字符,格式:

<!-- %后加两位16进制数就是URL编码 -->
%HH

(2)HTML编码

处理html代码与JavaScript代码产生冲突的问题

为了规避同样字符带来的安全问题,使用HTML编码格式如下:

<!-- &开头;结尾 -->
&gt;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/25690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#自定义ORM框架-实体类扩展属性

步骤一、建立扩展属性类 实体类扩展属性要继承Attribute基类完成 步骤二、创建实体类并引用扩展实体类属性 Attributes属性定义&#xff0c;主要标明表名和主键名字 /// <summary> /// 表名 /// </summary> [AttributeUsage(AttributeTargets.Class)] [System.S…

蓝牙安全入门——两道CTF题目复现

文章目录 蓝牙安全入门题目 low_energy_crypto获取私钥解密 题目 蓝牙钥匙的春天配对过程配对方法密钥分发数据加密安全漏洞和保护实际应用实际应用 蓝牙安全入门 &#x1f680;&#x1f680;最近一直对车联网比较感兴趣&#xff0c;但是面试官说我有些技术栈缺失&#xff0c;所…

html5实现个人网站源码

文章目录 1.设计来源1.1 网站首页页面1.2 个人工具页面1.3 个人日志页面1.4 个人相册页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/139564407 ht…

Golang | Leetcode Golang题解之第141题环形链表

题目&#xff1a; 题解&#xff1a; func hasCycle(head *ListNode) bool {if head nil || head.Next nil {return false}slow, fast : head, head.Nextfor fast ! slow {if fast nil || fast.Next nil {return false}slow slow.Nextfast fast.Next.Next}return true }

unity到小游戏instantGame(流程演示,非内容制作 亲测可用)

unity到小游戏instantGame&#xff08;开发流程演示&#xff0c;非内容制作 亲测可用&#xff09; 写在前面直接 写在前面 instantGame 后妈级教学&#xff0c;主打一个填自己的坑&#xff0c;有问题下方评论交流 根据此教程使用后的一点心得记录和可能出现的问题补充&#xf…

设计随笔 ---- ADR4525 篇

ADR4525一颗超低噪声、高精度2.5V基准电压源&#xff1b; Fluke 17B准确度指标&#xff1a; ADR4525指标&#xff1a; Fluke 17B测试结果&#xff1a; 2.5V的基准&#xff0c;输出只有2.477V&#xff0c;其实这么高精度的电压基准用3位半的万用表来测试本身就是一个错误&#…

如何获取MySQL中表的大小?(官方校正版)

与大多数关系数据库一样&#xff0c;MySQL 提供了有关数据库本身的有用元数据。虽然大多数其他数据库将此信息称为 catalog&#xff0c; 但MySQL 官方文档INFORMATION_SCHEMA 将元数据 称为 tables。 目录 1 列出单个数据库中的单表大小 2 列出所有数据库中的所有表大小 以下…

【C语言】宏详解(下卷)

前言 紧接上卷&#xff0c;我们继续来了解宏。 宏替换的规则 1.在调用宏时&#xff0c;首先对参数进行检查&#xff0c;看看是否包含任何由#define定义的符号。如果是&#xff0c;它们首先被替换。 2.替换文本随后被插入到程序中原来文本的位置。对于宏&#xff0c;参数名被他…

Matlab 2024a 建模基础知识全面指南

一、Matlab简介 1. Matlab是什么&#xff1f; Matlab&#xff08;Matrix Laboratory&#xff09;是由MathWorks公司开发的一个高性能的数值计算环境和编程语言。它以其强大的矩阵运算能力、丰富的工具箱和便捷的数据可视化功能而闻名&#xff0c;广泛应用于科学研究、工程模拟…

23.汽水兑奖

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动&#xff0c;旨在激发青少年对学习人工智能与算法设计的热情与兴趣&#xff0c;提升青少年科学素养&#xff0c;引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/106 题目描…

Elasticsearch:Open Crawler 发布技术预览版

作者&#xff1a;来自 Elastic Navarone Feekery 多年来&#xff0c;Elastic 已经经历了几次 Crawler 迭代。最初是 Swiftype 的 Site Search&#xff0c;后来发展成为 App Search Crawler&#xff0c;最近又发展成为 Elastic Crawler。这些 Crawler 功能丰富&#xff0c;允许以…

鞠小云张霖浩闪耀北京广播电视台春晚发布会,豪门姐弟感爆棚

昨日&#xff0c;2025年北京广播电视台“追梦春晚”全国海选发布会在杭州举行&#xff0c;中国内地青年女演员鞠小云同人气幕后张霖浩&#xff0c;受主办方盛情邀请出席本次活动。从现场流露出的照片中可以看出&#xff0c;鞠小云一袭白色长裙灵动温婉素雅&#xff0c;而张霖浩…

27.机会成本

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/677 题目描述 明天有 𝑛n 门考试,今晚只…

C++——计算不同的非空子串个数

计算不同的非空子串 计算方法 这道题是我在BCSP-X小高组的题目中发现的一道 没事闲的就写了代码和思路&#xff1a; 代码 #include <iostream> #include <vector> #include <string> #include <algorithm>using namespace std;// 用于存储后缀数…

[职场] 缺点范文 #知识分享#经验分享#媒体

缺点范文 回答示范1&#xff1a; 我的公开演讲能力比较差&#xff0c;在公共场合讲话的时候我会感到紧张&#xff0c;不过谈论我熟悉的领域我会比较放松。所以当我需要做公开发言的时候&#xff0c;我必须要准备得很充分。我确实羡慕那些无论什么话题都能够高谈阔论的人。 回…

Docker与Docker-Compose详解

1、Docker是什么&#xff1f; 在计算机中&#xff0c;虚拟化(英语: Virtualization) 是一种资源管理技术&#xff0c;是将计算机的各种实体资源&#xff0c;如服务器、网络、内存及存储等&#xff0c;予以抽象、转换后呈现出来&#xff0c;打破实体结构间的不可切割的障碍&…

【SpringBoot + Vue 尚庭公寓实战】基本属性接口实现(七)

【SpringBoot Vue 尚庭公寓实战】基本属性接口实现&#xff08;七&#xff09; 文章目录 【SpringBoot Vue 尚庭公寓实战】基本属性接口实现&#xff08;七&#xff09;1、保存或更新属性名称2、保存或更新属性值3、查询全部属性名称和属性值列表4、根据ID删除属性名称5、根据…

QSS 自定义QCheckBox

Qt Style Sheets are a powerful mechanism that allows you to customize the appearance of widgets . 简述 QCheckBox支持盒子模型。子控件::indicator可以定义指示器样式。默认情况下指示器在内容矩形框的左上角。属性spacing指定指示器和文本之间的间距。 效果 样式表 …

内网穿透的方式有哪些——快解析的优势

外网穿透内网技术&#xff0c;即内网映射&#xff0c;是把目标本地内网地址和端口发布到互联网&#xff0c;是一种由内网开放到外网的权限操作。那么&#xff0c;内网穿透的方法有哪些呢&#xff1f;做映射外网的方法。需要结合自己本地网络环境和应用场景来实施。这里分享三种…

OpenGauss数据库-5.数据更新

第1关&#xff1a;插入数据 gsql -d postgres -U gaussdb -W "passwd123123" create table student (id integer primary key,name char(20),age integer ); insert into student values(1,"lily",20),(2,lily,21),(3,marry,19); 第2关&#xff1a;删除数…