Web渗透测试基础

一、前置

1、HTTP协议介绍

HTTP协议简介

HTTP(Hyper Text Transfer Protocol,超文本传输协议) 是用于分布式、协作性、超媒体信息系统的应用层协议。HTTP自产生以来一直被万维网i使用。

HTTP是基于TCP/IP通信协议来传输数据,默认工作在TCP协议80端口。用户访问网站http://打头的都是标准HTTP服务。

HTTP工作原理

HTTP基于客户端/服务端(c/s)的框架模型。

步骤:-客户端与服务器建立tcp连接

-客户端发送HTTP请求。请求报文由请求行、请求头部、空行和请求数据四部分组成。

-服务器接收请求并返回HTTP响应。响应报文由状态行、响应头部、相应正文并显示。如正文数据为HTML,客户端根据html的语法对其进行格式化,并在浏览器窗口中显示。

image-20240702144251116

HTTP特点描述

特点:

无法连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求就断开连接。

媒体独立:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器通过头部字段制定合适的MIME Type内容类型。

无状态:无状态是指协议对于事务处理没有记忆能力。这样做利于更快的处理大量事务,确保协议的可伸缩性。

image-20240702144822937

2、HTTP协议报文格式

格式:http由请求行、请求头部、空行、请求数据四个部分组成

image-20240702145105239

image-20240702145249898

请求的方法

根据http标准,http请求可以使用多种请求方法。

image-20240702145428910

客户端请求消息:请求头部

请求头部允许客户向服务器传递关于请求的附加信息。这些字段充当请求修饰符,其语义相当于编程语言方法调用中的参数。

image-20240702145754532

请求字段

image-20240702145826177

请求数据

空行:他的作用是通过一个空行,告诉服务器请求头部到此为止。

请求数据:若法昂发字段是GET,则此项为空,没有数据。若方法字段是post,则通常来是说此处放置的是要提交的数据。

image-20240702150400708

二、暴力破解

1、暴力破解的介绍

暴力破解的产生原阳是服务器端没有做限制,导致攻击者可以通过暴力破解的手段破解所以用户所需要的信息,如用户名、密码、验证码等。暴力破解需要有庞大的字典,暴力破解的关键在于字典的大小。

暴力破解的原理

暴力破解的原理就是使用字典中的内容进行一一尝试,如果匹配成功了,提示用户名密码正确,如果匹配失败,那么就会继续进行尝试。

暴力破解的原因

密码复杂度太低:使用密码复杂度太低,包括长度过短,密码构成元素单一,密码具有规律或包含个人信息。

未对登录进行限制:在登陆口或是密码验证处进行限制(例如等律师许易遨输入验证码,限制等率频率,试错次数过多锁定账号等)可以进行无穷多次数的密码尝试。

暴力破解的危害

-未经用户授权就可以登陆上用户的账户进行操作

-未将授权可以访问到某些业务系统(FTP服务,网站管理后台)

-危害数据安全(数据库口令被破解)

-危害服务器安全(SSH口令被破解)

2.基础弱口令暴力破解

使用burp工具抓包然后将抓到的数据包发送到intruder中,点击右侧的 clear $ 按钮将所有的位置标记都清除掉,以便于我们添加我们自己的攻击位置。这里我们通过鼠标拖动选择数据包中要进行替换的密码字段,然后点击 Add $,添加要进行暴力破解的攻击位置。最后在intruder模块中的payloads选项中添加字典然后开始攻击。

分析数据包的大小来判断哪个是正确的密码

3.HTTP Basic认证暴力破解

先随便登录一下然后拿burp抓包 然后在payloads中选择自定义迭代器 Custom iterator

定义 payload 中的第一部分,该部分为用户名。在 Add 输入框手动添加 tomcat 和 admin 作为用户名字典。定义 payload 中的第三部分,该部分为密码。

然后设置payload编码为base64 三个部分都定义完毕之后,需要进行 base64 加密 在 payload processing 中选择添加 encode 加密 base64。

image-20240702170036552

注意:去掉Payload Encoding 的url编码由于在进行 base64 加密过程中会出现== 所以需要取消 url 加密,防止密码中的等于号被编码影响结果。

最后开始爆破

4.基础加密暴力破解

抓包后分析加密的方法 使用f12查看网页源代码,在网页代码里面有一个md5.js,根据密码的加密方式类似md5加密尝试将123456进行md5加密,在网上找一个md5再线加密即可。

image-20240703091705991

image-20240703092002605

在md5中可以发现123456加密后是e10adc3949ba59abbe56e057f20f883e而数据包中的密码为ba95ab9493cba01e,刚好为123456经过md5加密之后的前16位在进行倒叙。

知道加密方法后构造加密之后的payload,首先通过python将密码进行加密在字典里面进行编写

image-20240703092511073

然后运行会生成一份hashed_pass.txt文件 字典选择就选择这个文件 下面就可以开始爆破了

5.CS 架构暴力破解-SSH口令破解

工具:hydra

在kali中 使用ssh root@+ip地址 -p+端口信息发现打不开

在这里面爆破靶机的默认账号是ssh在kali中进入终端 ,需要爆破的ssh服务及端口号是:10.0.0.3:50012,使用hydra 10.0.0.3 -s 50012 ssh -l root -P /root/Password/top1000.txt -vV -t 10 -o ssh.log -e ns

hybra的参数及作用:

  • -s 50012 指定端口为 50012

  • -l root 指定登录的用户名为 root

  • -P /root/Password/top1000.txt 指定密码字典

  • -t 10 设置线程数为 10

  • -vV 显示爆破的详细信息

  • -o ssh.log 指定结果输出到文件 ssh.log

  • -e ns 进行空密码探测和执行用户密码探测

  • ssh 指定服务名为 ssh 服务

三、逻辑漏洞

1.逻辑漏洞概述

逻辑漏洞就是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额用户登录等功能处。

与传统漏洞相比,逻辑漏洞具有不易发现、不易防护的特点,不像 SQL 注入、XSS 漏洞可以上 WAF 等一些防护手段就可以控制;重点应该放在比如:个人信息区域、密码修改区域、密码忘记区域、支付区域、手机号区域等。这几个区域一般都是严重高危漏洞的始发点,任何一个地方出问题,都有可能造成企业、用户损失。而且每个公司的应用系统逻辑也都参差不齐,逻辑漏洞也肯定不尽相同。

步骤一

密码找回逻辑问题

image-20240703103206553

比如第四条,如果验证码没有销毁,或者是验证码没有刷新,我们是不是可以尝试进行暴力破解。再比如第六条,如果没有进行非空判断,那验证也是可以绕过。那么我们就可以实现任意账号密码找回。

步骤二

密码修改过程中的逻辑问题

image-20240703103301721

步骤三

支付中的逻辑漏洞

image-20240703103332051

1、加入购物车时,抓包尝试修改购买数量为负数,试一试商品价格能否修改。

2、确认购物车消息时,尝试修改金额,如果购买多件打折,尝试能不能突破这个逻辑,比如先加入购物车,再把多余的移除,看有没有效果。

3、物流这里尝试能否修改运费,或改为负数,虽然现在大部分都包邮,万一有漏网之鱼了。

4、确认订单跳转支付接口时,看能不能修改金额,尝试能不能跳过支付,直接跳到支付成功的页面。

步骤四

验证码的逻辑漏洞:

验证码回传漏洞主要是发生在前端验证处,并且经常发生的位置在于账号密码找回 、账号注册 、支付订单等。

验证码主要发送途径:邮箱邮件 、手机短信等。

其运行机制如下图所示:

image-20240703103432528

黑客只需要抓取 Response 数据包便知道验证码是多少。

2.逻辑漏洞-水平越位

这个漏洞是在一个登录页面登录上以后想要通过水平越位来查看别人的信息

image-20240703104539701

修改username=后面的的用户名 然后可以水平越位

3.逻辑漏洞-垂直越位

垂直越权:是不同级别之间或不同角色之间的越权。由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的 URL 或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。

打开burp然后抓包,将抓到的账号密码修改然后传送。

4.逻辑漏洞-支付漏洞

抓包传送到重放器然后修改传送

四、信息收集

1.子域名收集

image-20240625213504087

image-20240625213801033

子域名爆破工具:maltrgo 、子域名挖掘机

2.端口信息收集

利用namp工具 如:namp 127.0.0.1 /namp -参数 127.0.0.1

参数:

image-20240703120038428

3.web指纹系统识别

首先先拿nmap -v -n -Pn +ip 先扫一下然后会扫出来端口,然后在kali中拿whatweb+ip+端口依次对扫出来的端口进行指纹识别

识别后利用浏览器的插件Wapplyzer分析这个网站是什么技术

4.目录文件信息收集

常用的web目录扫描工具:御剑、dirsearch、DirBuster、wwwscan、dirb等

dirsearch -u +网址

5.CDN介绍与识别

作用:存储视频或者web内容包括文档、图片和音频的副本

部署的原则:

1.尽可能靠近用户端,就是把CDN部署在距离用户地理位置近的地方

2.在关键位置部署集群,让ISP接入集群

识别方法;

1.通过域名识别CDN

1.1查看HTTP响应头 1.2使用第三方工具

image-20240703141527389

2.通过IP地址识别CDN

5.CDN的绕过方法

1.DNS历史解析记录

2.查找子域名

image-20240703142101511

五、文件上传

文件上传漏洞概述

现代的互联网的Web应用程序中,不可避免地要对网站的某些页面或者内容进行更新,这个时候需要使用到网站的文件上传功能。

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的。“文件上传” 功能本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。

文件上传漏洞原因

如果不对被上传的文件进行限制或者限制被绕过,上传功能便有可能会被利用。恶意用户可以上传可执行文件、脚本到服务器上,进而导致服务器沦陷。

以下为文件上传中常用的绕过后缀: asp、asa、cdx、cer、php、aspx、ashx、jsp、jspx、php3、php.a、shtml、phtml

许多原因导致文件上传漏洞,有以下几类:

  1. 服务器的错误的配置

  2. 开源编辑器漏洞

  3. 本地上传限制不严格被绕过

  4. 服务端过滤不严格被绕过

文件上传漏洞的危害

如果上传文件是web脚本语言,服务器的web容器解释并执行了用户上传的脚本,导致代码执行; 如果上传文件是病毒或者木马,则会诱骗用户或者管理员下载执行或者直接自动运行; 如果上传文件是Flash的策略文件“crossdomain.xml”,可用以控制Flash在该域下的行为(其他通过类似方式控制策略文件的情况类似); 如果上传文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。 除此之外,还有一些不常见的利用方法,比如将上传文件作为一个入口,溢出服务器的后台处理程序,如图片解析模块;或者上传一个合法的文本文件,其内容包含了PHP脚本,再通过“本地文件包含漏洞(Local File Include)”执行此脚本。

上传的条件

  1. 目标网站具有上传功能;

  2. 上传的文件能够被 web 服务器解析执行;

  3. 知道文件上传到服务器后的存放路径和文件名称,否则无法执行;

  4. 目标文件可被用户访问。

示例

image-20240703142750960

如果在代码层次,如果没对文件进行检测,就会导致任意文件上传。 除了在代码层次设置检测机制外,服务器系统本身也需要更新防护。在部分低版本中间件中存在解析漏洞,导致虽然后缀名合法 ,但由于解析漏洞造成对上传文件的解析错误,导致木马可执行。

文件上传防御检测

在以下位置可针对文件上传漏洞做仔细检测:

  • 客户端 JavaScript 检测 (通常为检测文件扩展名)

  • 服务端 MIME 类型检测 (检测 Content-Type 内容)

  • 服务端目录路径检测 (检测跟 Path 参数相关的内容)

  • 服务端文件扩展名检测 (检测跟文件 extension 相关的内容)

  • 服务端文件内容检测 (检测内容是否合法或含有恶意代码)

2.一句话木马原理介绍

示例

image-20240703143601363

这是一个一句话木马接着我们构造一个 post 请求,shell= phpinfo(); 这样木马就会执行phpinfo()函数,效果如下,phpinfo()函数被执行。

image-20240703143700120

3.客户端检测绕过-js绕过

在靶场中是上传一个图片在按f12把

image-20240703150521439

这个删除删除后建一个shell.php文件里面写进<?php @eval($_POST['shell']);?> 这个木马然后上传,上传后复制这个图片的连接去访问,然后进行post传参shell=PHP info();启动木马,这样就绕过js了

4.webshell管理工具操作

上传木马后启动蚁剑工具,右键添加数据可选择“文件管理”或“虚拟终端”操作。

5.服务端检测绕过-MIME绕过

使用burp抓包将参数改为上传包的类型,然后放包

6.服务端检测绕过-特殊扩展名绕过

使用burp在抓取木马上传的流量包然后修改文件后缀

7.服务端检测绕过-htaccess绕过

制作1.htaccess文件然后使用burp抓包改位为htaccess

8.服务端检测绕过-大小写绕过

burp抓包然后修改后缀名大小写

9.服务端检测绕过-空格绕过

查看源码,trim()函数是去除字符串首尾的空格。代码里面如果没有该函数,就可以使用空格绕过黑名单机制。 使用burp抓包修改上传一句话木马文件名,文件名后面加一个空格

10.服务端检测绕过-双写绕过

使用burp上传木马文件抓包将文件后缀改成重复的 比如:6.php改为6.phpphp

11.服务端检测绕过-图片马绕过

首先生成图片马,准备一个1.jpg格式的图片和一个shell.php木马文件然后在cmd在使用copy 1.jpg/b + shell.php/a 2.jpg

12.解析漏洞-Apache HTTPD多后缀解析漏洞

就是将想要上传得木马文件的后缀设为多个 如:shell.php.png

13.解析漏洞-Nginx解析漏洞-CGI漏洞

使用burp抓包,然后在图片的结尾加上php一句话木马,然后使用蚁剑连接,连接时需要在路径后面加上.php

14.解析漏洞-Nginx解析漏洞-CVE-2013-4547

CVE-2013-4547 漏洞,又称 Nginx 文件名逻辑漏洞,漏洞的原理是非法字符空格和截止符(\0)会导致 Nginx 解析 URI 时的有限状态机混乱,危害是允许攻击者通过一个非编码空格绕过后缀名限制。

正常情况下(关闭 pathinfo 的情况下),只有.php 后缀的文件才会被发送给fastcgi 解析。而.gif 等图片格式不会传给 fastcgi 解析执行。

但是存在 CVE-2013-4547 的情况下,我们请求 1.gif0x20.php,这个URI 可以匹配上正则.php$,传给 fastcgi 解析,0x20可绕过文件名检测, 达到解析效果。

影响版本: Nginx 0.8.41~1.4.3, 1.5 <= 1.5.7

六、XSS

1.XSS漏洞介绍

跨站脚本攻击,是一种网站应用程序的安全漏洞攻击

2.类型

反射型XSS

image-20240703165724489

成因:

image-20240703165903102

攻击流程:

image-20240703165957014

存储型XSS

攻击者将已经构造完成的恶意页面发送给用户,用户访问看似正常的页面后收到攻击,这类XSS通常无法直接在URL中看到恶意代码,具有较强的持久性和隐蔽性。

DOM型XSS

DOM型XSS无需和后端交互,而是基于JavaScript上,JS解析URL中恶意参数导致执行JS代码

2.反射型XSS实验(DVWA)

将xss代码注入到url参数中

3.反射型XSS实验(pikachu)

随便输入发现对长度有限制然后f12删掉这个长度限制然后使用xss注入:<script>alert("xss")</script> 点击提交

4存储型XSS实验(DVWA)

随便输入发现对长度有限制然后f12删掉这个长度限制然后使用xss注入:<script>alert("xss")</script> 点击提交

5.存储型XSS实验(pikachu)

在留言板中输入xss注入代码:<script>alert("xss")</script>

存储型是将恶意代码存储到数据库中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值