【网络安全的神秘世界】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;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机ping不通主机,但是主机可以ping通虚拟机

我在Windows10系统安装了虚拟机&#xff0c;设置的主机与虚拟机的连接方式是桥接&#xff0c;安装好后&#xff0c;发现虚拟机ping不通主机&#xff0c;但是主机可以ping通虚拟机。 我的操作是&#xff1a;关闭防火墙&#xff0c;发现虚拟机可以ping通主机了。说明是Windows10…

python后端结合uniapp与uview组件tabs,实现自定义导航按钮与小标签颜色控制

实现效果&#xff08;红框内&#xff09;&#xff1a; 后端api如下&#xff1a; task_api.route(/user/task/states_list, methods[POST, GET]) visitor_token_required def task_states(user):name_list [待接单, 设计中, 交付中, 已完成, 全部]data []color [#F04864, …

CPP初级:模板的运用!

目录 一.泛型编程 二.函数模板 1.函数模板概念 2.函数模板格式 3.函数模板的原理 三.函数模板的实例化 1.隐式实例化 2.显式实例化 3.模板参数的匹配原则 四.类模板 1.类模板的定义格式 2.类模板的实例化 一.泛型编程 泛型编程&#xff1a;编写与类型无关的通用代码…

express入门01服务器搭建以及get和post请求的监听

微搭提供了后端API的能力&#xff0c;但是不同的版本收费差别巨大&#xff0c;因为使用的门槛限制了中小企业使用低代码平台。那可不可以既要又要呢&#xff1f;答案是肯定的&#xff0c;那其实掌握一定的后端框架&#xff0c;借助我们在低代码中已经熟练掌握的技能其实是比较容…

2024.6.9 七

Python的time库 先导入库 import time相关函数 time.time() 返回当前时间的时间戳(一个记录时间的浮点数),从1970年开始算的 time.localtime(sec) 返回一个指定时间戳(sec)的struct_time对象,是一个元组封装起来的,默认是当地时间 struct_time对象 tm_year 年 tm_mon 月 tm_…

CDR2024软件破解Keygen激活工具2024最新版

CorelDRAW Graphics Suite2024最新版&#xff0c;这是一款让我爱不释手的图形设计神器&#xff01;作为一个软件评测专家&#xff0c;我一直在寻找一款能够提升我的设计效率和创造力的工具。而这款软件&#xff0c;简直就是为我量身定制的&#xff01;&#x1f389; 「CorelDR…

算法金 | AI 基石,无处不在的朴素贝叶斯算法

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 历史上&#xff0c;许多杰出人才在他们有生之年默默无闻&#xff0c; 却在逝世后被人们广泛追忆和崇拜。 18世纪的数学家托马斯贝叶斯…

温度传感器十大品牌

温度传感器品牌排行榜-十大热电偶品牌-热敏电阻品牌排行-Maigoo品牌榜

TikTok Shop账号需要防关联吗?

在TikTokShop作为新兴的电商销售渠道中&#xff0c;保护账号的安全和隐私&#xff0c;防止账号关联成为了重要的任务。为了更好地理解为何需要防关联以及如何进行防范&#xff0c;让我们深入探讨一下这个问题。 为什么要防关联&#xff1f; 1. 账号异常风险&#xff1a;防关联…

电容十大品牌供应商

十大电容器品牌&#xff0c;电解电容-陶瓷电容-超级电容器品牌排行榜-Maigoo品牌榜

Android gradle kts 8.0以上版本配置签名和修改APK输出名字

目录 概述修改签名配置新建签名文件目录配置签名信息使用签名信息打包 修改APK名称 概述 之前写过一篇文章是通过Kotlin的Dsl结合gradle编写的插件来管理项目依赖&#xff0c;我是从一个开源项目叫DanDanPlayAndroid项目上学到的&#xff0c;那时还没有使用toml文件来管理项目…

Linux入门学习(2)

1.相关复习新的指令学习 &#xff08;1&#xff09;我们需要自己创建一个用户&#xff0c;这个用户前期可以是一个root用户&#xff0c;后期使用创建的普通用户 &#xff08;2&#xff09;文件等于文件内容加上文件属性,对于文件的操作就包括对于文件内容的操作和文件属性&…

Apache SeaTunnel社区5月月报更新!

各位热爱 SeaTunnel 的小伙伴们&#xff0c;社区 5 月份月报来啦&#xff01; SeaTunnel 正在迅猛发展&#xff0c;积极投入社区项目建设的小伙伴将促进SeaTunnel不断提升数据同步的高可扩展性、高性能及高可靠性。欢迎关注每月月报更新&#xff0c;期待在下个月的Merge Star月…

Redis持久化说明

Redis的持久化是指将内存中的数据持久化到磁盘中&#xff0c;以保证数据在重启或宕机后不会丢失。 Redis提供了两种主要的持久化方式&#xff1a;RDB(Redis DataBase)和AOF(Append Only File)。 RDB&#xff08;Redis DataBase&#xff09; 1、RDB快照原理 RDB持久化方式会定…

STM32 | 独立看门狗 | RTC(实时时钟)

01、独立看门狗概述 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状…

ffmpeg视频解码原理和实战-(5)硬件加速解码后进行渲染并输出帧率

头文件&#xff1a; xvideoview.h #ifndef XVIDEO_VIEW_H #define XVIDEO_VIEW_H #include <mutex> #include <fstream> struct AVFrame;void MSleep(unsigned int ms);//获取当前时间戳 毫秒 long long NowMs();/// 视频渲染接口类 /// 隐藏SDL实现 /// 渲染方案…

初阶 《函数》 4. 函数的调用

4. 函数的调用 4.1 传值调用 函数的形参和实参分别占有不同内存块&#xff0c;对形参的修改不会影响实参 4.2 传址调用 传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式 这种传参方式可以让函数和函数外边的变量建立起真正的联系&#xff0c;也就是…

电脑上的瑞士军刀

一、简介 1、一款专为 Windows 操作系统设计的桌面管理工具&#xff0c;它具备保存和恢复桌面图标位置的功能&#xff0c;使用户能够在各种情况下&#xff0c;如分辨率变动、系统更新或其他原因导致的图标位置混乱后&#xff0c;快速恢复到熟悉的工作环境。它还拥有诸多实用功能…

大数据数仓的数据回溯

在大数据领域&#xff0c;数据回溯是一项至关重要的任务&#xff0c;它涉及到对历史数据的重新处理以确保数据的准确性和一致性。 数据回溯的定义与重要性 数据回溯&#xff0c;也称为数据补全&#xff0c;是指在数据模型迭代或新模型上线后&#xff0c;对历史数据进行重新处理…

Java 数据类型 -- Java 语言的 8 种基本数据类型、字符串与数组

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 004 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…