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

news2024/11/18 9:48:24

在这里插入图片描述

🌝博客主页:泥菩萨

💖专栏: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.coloradmin.cn/o/1792263.html

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

相关文章

手撸 串口交互命令行 及 AT应用层协议解析框架

在嵌入式系统开发中&#xff0c;命令行接口&#xff08;CLI&#xff09;和AT命令解析是常见的需求。CLI提供了方便的调试接口&#xff0c;而AT命令则常用于模块间的通信控制。本文将介绍如何手动实现一个串口交互的命令行及AT应用层协议解析框架&#xff0c;适用于FreeRTOS系统…

机器学习多场景实战

机器学习已不再局限于理论探讨&#xff0c;而是广泛渗透到我们生活的方方面面&#xff0c;成为解决复杂问题、优化决策过程的强有力工具。从智能推荐系统个性化推送你可能喜爱的电影和商品&#xff0c;到金融风控领域精准识别欺诈交易&#xff1b;每一个应用场景都是机器学习技…

Spring Boot项目中,如何在yml配置文件中读取maven pom.xml文件中的properties标签下的属性值

一、前言 在最近的项目开发过程中&#xff0c;有一个需求&#xff0c;需要在Spring Boot项目的yml配置文件中读取到mave的 pom.xml文件中的properties标签下的属性值&#xff0c;这个要怎么实现呢&#xff1f; 二、技术实践 pom.xml文件中增加测试属性 <properties><…

【数据结构】筛选法建堆

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

Golang | Leetcode Golang题解之第134题加油站

题目&#xff1a; 题解&#xff1a; func canCompleteCircuit(gas []int, cost []int) int {for i, n : 0, len(gas); i < n; {sumOfGas, sumOfCost, cnt : 0, 0, 0for cnt < n {j : (i cnt) % nsumOfGas gas[j]sumOfCost cost[j]if sumOfCost > sumOfGas {break}…

Android 14.0 Settings主页面去掉自定义您的设备等菜单相关功能

1.前言 在14.0的系统rom产品定制化开发中,在系统Settings主页面的主菜单中,在测试某些功能的时候,比如开启护眼模式和改变系统密度会在主菜单第一项的网络菜单头部增加 自定义您的设备和设置护眼模式时间安排 等等相关的设置模块 这对于菜单布局显示相当不美观,所以根据系…

TSR,FSR,DLSS超级分辨率的原理分析

先了解一些时域抗锯齿的方法&#xff1a; TAA&#xff1a; 抖动 TAA 的主要原理是跨帧计算多个子像素样本&#xff0c;然后将它们组合成一个最终像素。最简单的方案是在像素内生成随机样本&#xff0c;但有更好的方法来生成固定序列的样本。选择一个好的序列以避免聚集非常重…

MacOS 安装C语言版TensorFlow

文章目录 安装C语言版TensorFlow解压归档环境变量c_api.hC语言示例 安装C语言版TensorFlow 官方文档&#xff1a;https://tensorflow.google.cn/install/lang_c?hlzh-cnTensorFlow 提供了一个 C API&#xff0c;该 API 可用于为其他语言构建绑定。该 API 在 c_api.h 中定义&a…

我有点想用JDK17了

大家好呀&#xff0c;我是summo&#xff0c;JDK版本升级的非常快&#xff0c;现在已经到JDK20了。JDK版本虽多&#xff0c;但应用最广泛的还得是JDK8&#xff0c;正所谓“他发任他发&#xff0c;我用Java8”。 其实我也不太想升级JDK版本&#xff0c;感觉投入高&#xff0c;收…

【TB作品】 51单片机8x8点阵显示滚动汉字仿真

功能 题目5基于51单片机LED8x8点阵显示 流水灯 直接滚动显示HELLO 直接滚动显示老师好 代码 void main( void ) {/** 移位后&#xff0c;右边的是第一个595&#xff0c;接收0X02&#xff0c;显示出0X02* 移位后&#xff0c;左边的是第2个595&#xff0c;接收0Xfe&#xff0c…

C++结合OpenCV进行图像处理与分类

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…

人工智能任务5-高级算法工程师需要学习哪些课程与掌握哪些能力

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能的任务5-高级算法工程师需要学习哪些课程&#xff0c;需要掌握哪些能力。高级算法工程师需要掌握的算法模型有&#xff1a;人脸检测模型MTCNN&#xff0c;人脸识别方法Siamese network、center loss、softm…

在VSCode中安装python

引言 Python 是一种广泛使用的高级编程语言&#xff0c;因其易学、易用、强大而受到欢迎。它由 Guido van Rossum 于 1991 年首次发布&#xff0c;并以简洁的语法和丰富的库生态系统而著称。 以下是 Python 的一些关键特点和优势&#xff1a; 关键特点 易于学习和使用&#x…

AWS的EC2之间ping不通,服务之间不通,怎么办

AWS启动的两个EC2实例&#xff0c;互相访问不了 修改安全组规则&#xff0c;添加ICMP 流量的入站规则 参考&#xff1a;AWS的EC2之间ping不通,服务之间不通,怎么办_aws ec2同一个区域的服务器-CSDN博客

选择排序-Java版本

选择排序 算法的思想&#xff1a;java模拟 算法的思想&#xff1a; 每遍历一次就找一个最小的数 *外层 一共遍历 length-1次 总遍历次数符合等差数列 时间复杂度为O(n^2)内部查找 并 返回 数值 和 下标 java模拟 public static void selectSort(int[] arr) {for(int i 0;i<…

MyBatis拦截器使用方法

前言 MyBatis拦截器可以做的工作&#xff1a;SQL修改&#xff0c;分页操作&#xff0c;数据过滤&#xff0c;SQL执行时间性能监控等。 1. 基础介绍 1.1. 核心对象 从MyBatis代码实现的角度来看&#xff0c;MyBatis的主要的核心部件有以下几个&#xff1a; Configuration&am…

InfiniGate自研网关实现思路七

25.网关Nginx负载模型配置 通过模拟多个HTTP服务配置到 Nginx 做负载均衡&#xff0c;以学习API网关负载的配置和使用 API 网关是用于支撑分布式 RPC 接口协议转换提供 HTTP 调用的一套服务&#xff0c;那么 API 网关系统就需要可横向扩展来满足系统的吞吐量诉求。所以这里需…

如何根据业务需求,轻松挑选SSL证书?

在当今数字化时代&#xff0c;网站的安全性愈发受到重视。SSL证书作为网站安全的“守门员”&#xff0c;不仅能保护用户数据不被窃取&#xff0c;还能提升网站的信任度。但面对市场上琳琅满目的SSL证书产品&#xff0c;如何根据业务需求挑选合适的证书呢&#xff1f;今天&#…

今日份动态规划学习

主要只搞了一个这道题&#xff0c;有点摸鱼了今天晚上&#xff0c;也是来小看一下这道题吧01背包完全背包 P1941 [NOIP2014 提高组] 飞扬的小鸟 题意&#xff1a; 这题是说&#xff0c;给我们一个游戏界面&#xff0c;界面的长度为n&#xff08;水平距离&#xff09;&#x…

Java | Leetcode Java题解之第134题加油站

题目&#xff1a; 题解&#xff1a; class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {int n gas.length;int i 0;while (i < n) {int sumOfGas 0, sumOfCost 0;int cnt 0;while (cnt < n) {int j (i cnt) % n;sumOfGas gas[j];sumOfCos…