0x01.web请求、web环境、抓包技巧
网站搭建
- DNS解析
- 域名选择
- http/https
- 证书
- 服务器
web应用环境架构
操作系统
- linux
- windows
开发语言
- php
- java
- ASP/ASPX
- python等
程序源码
- CMS
- 开发框架等
中间件容器
- apache
- nginx
- IIS
- weblogic
- JBoss
- tomcat等
数据库类型
- Access
- mysql
- mssql
- oracle
- redis
- MongoDB等
第三方软件
- phpMyadmin,虽然这个插件方便了管理员,但是同时也方便的了攻击者。很多数据库会对ip做限制,关闭外联,但是使用phpmyadmin,可以直接绕过这些
- vnc等
web漏洞分类
- SQL注入
- XSS注入
- 未授权访问
- 越权逻辑
- 文件安全
- CSRF/SSRF/CRLF
- 弱口令
- RCE
- XXE
web请求
POST和GET
- get仅仅会检索url地址,明文传输
- post不仅会检索url地址,还会检索请求体的数据。在请求体中传输,post会向服务器提交表单,name是给服务器看的。
互联网是如何工作的?
客户端是典型的 Web 用户入网设备(比如,你连接了 Wi-Fi 的电脑,或接入移动网络的手机)和设备上可联网的软件(通常使用像 Firefox 和 Chrome 的浏览器)
服务器是存储网页,站点和应用的计算机。当一个客户端设备想要获取一个网页时,一个网页的拷贝将从服务器上下载到客户端的机器上来在用户浏览器上显示
浏览器如何通过互联网获取网页数据?
浏览器请求DNS服务器获取相应的域名的服务器IP
建立TCP连接,三次握手
浏览器发送HTTP请求到服务器拷贝一份网页到客户端
服务器响应,将网页文件以数据包形式传输到浏览器
这里面服务器可能有多台,需要一个负载均衡设备来平均分配
关闭TCP连接,四次挥手
用户浏览器,渲染相应页面
获取数据后,浏览器内部会发生什么?
在地址栏输入内容时,浏览器的UI线程会捕捉输入内容
如果是网址,则UI线程会启动一个网络线程来请求数据(如上)
如果不是网址,会调用默认的搜索引擎搜索
通过safebrowsing(谷歌内部的一套站点安全系统)是否安全
通过之后,会返回UI线程,UI线程会创建一个渲染器进程来渲染页面。浏览器进程通过IPC管道将数据传递给渲染器进程
渲染器开始干活,前端的事情
文章
- 代理
- 完整流程
请求包
- UA头
- Cookie
- X-Sign-Js:说明参数已经处理过了,所以生成了X-Sign-Js,故修改了参数之后,和原来处理后生成的X-Sign-Js匹配不上了,过不了校验。大部分是前端校验,需要找出密钥和加密函数,进行断点调试。后端校验的话,暂时没思路。
返回包
- server
- 状态码
- 文件判断:200存在,404不存在
- 文件夹判断:403存在,404不沉溺在
代理服务器
- 抓包分析
- 实现转发访问
抓包&封包
抓包抓到的是一些零散的,封包则是对一个完整的动作进行抓取,整体测试触发触发时间数据包(精确)
抓包
根据协议来分的话,可以分成两类:
- HTTP/HTTPS:charles、fiddler、burpsuite
- 其他协议(TCP/UDP等):科来、TCPDump、Wireshark
封包
- 封包傻瓜工具
- 远古封包三件套:代理机器人、CCproxy、WPE
抓包对象
app
思路:app抓包,找到web资产,进行测试。很多app不走http/https,最好直接用呆瓜封包软件
基本流程:
- 使用模拟器,强力推荐逍遥模拟器
- 配置工具证书
- 在模拟器设置代理
解决app抓不到包!!!!
如图,将证书只安装在用户证书中,app打开后无法正常使用。我们需要将证书安装在系统证书目录下
为什么会出现抓不到包?
- 安卓从7.0开始应用只会信任系统预装的CA证书,而不会信任用户安装的CA证书
解决方法
- 使用低于7.0的进行抓包
- 将使用的伪证书安装到系统证书目录中,伪装成系统证书
思路:
- 使用openssl将der证书转为pem证书,生成pem证书的hash,生成要使用的证书。
- 使用adb调试功能,将证书放到系统证书目录中。
具体步骤
- 导出证书,访问http://burp/,将burp.der保存到自己的kali中
- 打开kali终端,过程没有错误的话,生成的如下图
openssl x509 -inform der -in burp.der -out burp.pem//将der证书转为pem证书
openssl x509 -inform PEM -subject_hash_old -in burp.pem//生成pem证书的hash
cp burp.pem 9a5ba575.0//得到Hash值后,将证书文件修改名称为Hash值.0
- 将生成好的证书,放到模拟器的目录下,这里使用的是逍遥模拟器
- 依次执行,执行完成之后就可以抓包了
adb root // 提升到root权限
adb remount //重新挂载system分区
adb push 9a5ba575.0 /system/etc/security/cacerts/ //将证书放到系统证书目录
- 注:
主流安卓模拟器连接方式:
夜神模拟器:adb connect 127.0.0.1:62001
逍遥安卓模拟器:adb connect 127.0.0.1:21503
天天模拟器:adb connect 127.0.0.1:6555
海马玩模拟器:adb connect 127.0.0.1:53001
网易MUMU模拟器:adb connect 127.0.0.1:7555 MacOS:adb connect 127.0.0.1:5555
genymotion模拟器:adb connect 127.0.0.1:5555
谷歌原生模拟器:adb connect <设备的IP地址>:5555
charles
help--->register
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
proxy--->proxy setting
,默认端口是8888
proxy--->SSL proxy setting
,SSL代理
help-->SSL proxying-->Install Charles Root Certificate
,安装证书!!!!选择本地计算机、受信任的根证书颁发机构
- 设置代理!!!,注意需要打开charles,代理主机名填写local IP Address,不清楚可以在charles的
help-->local IP Address
查看
- 逍遥模拟器下载证书!!!!,输入
chls.pro/ssl
- 安装证书,
设置-->网络和互联网-->网络偏好设置-->安装证书
命名成charles,成功抓包
fiddler
- 下载链接:
https://pan.baidu.com/s/14C0bOTICZADj03ZGx_eygw
提取码: chdi - 按照图片勾选,并且将证书导出
- 勾选该选项,可进行app抓包
- 设置代理,fiddler默认端口是8888
- 逍遥模拟器下载证书,输入
192.168.1.8:8888
- 自动安装证书,或者手动
设置-->网络和互联网-->网络偏好设置-->安装证书
命名成fiddler
burp
- 在burp中设置ip和port
- 逍遥模拟器下载证书
- 下载好后,
文件管理器-->download
将后缀改成cer
- 这时候会自己弹出安装证书,或者可以去设置那里手动安装证书,成功抓包
httpcanary
下载地址:链接: https://xiao6ming6.lanzouq.com/iQcB902w15pg 密码:4wby
设置----->SSL证书设置----->安装httpcanary根证书,抓包的时候开启右下角的小飞机
参考链接:https://blog.csdn.net/weixin_53891182/article/details/124739048
pc应用
这里的pc应用,指电脑应用程序,比如像有道词典
- 科来
- wireshark
- tcpdump
- 封包工具也可以试试
因为很多都不走http/https协议,大多是tcp/udp等,找到ip后,ip反查,扫端口,扫目录
小程序
proxifier+burp
- 设置本机ip,端口可以自己定,我这里选择8080
- burp中也设置本机ip,端口和proxifier一样
- 通过任务管理器,把这两个添加进来
封包
封包流程:
方法一:直接用呆瓜封包软件
- 这里是雷电模拟器,选LdVBoxHeadless.exe
对应进程:
雷电模拟器:LdBoxHeadless.exe
逍遥模拟器:MEmuHeadless.exe
夜神模拟器:NoxVMHandle.exe
天天模拟器:VBoxHeadless.exe
方法二:古老三件套
- 1. 关闭模拟器代理
- 2. 安装代理机器人
- 3. 点击ccproxy,进行如下两个地方设置,账号这里选择所有都抓
- 4. 设置好端口,端口和第四步的socks那同一个端口,然后开启代理
- 5. 打开WPE,选择CCproxy
Q&A
- 为什么抓包?
抓包应用的资产信息进行安全测试 - 抓包对象?
小程序、app、桌面应用
- 抓包协议区别工具?
有部分不走http/https协议,需要全局协议抓包 - 封包和抓包不同之处?
零散和整体的区别,封包能准确到每个操作的数据包
0x01.web请求、web环境、抓包技巧的更多相关文章
- Fiddler是最强大最好用的Web调试工具之一--网站抓包分析
Fiddler 教程 Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发 ...
- NetAnalyzer笔记 之 五 一些抓包技巧分享(不定期更新)
[创建时间:2016-03-12 10:00:00] [更新时间:2016-05-21 10:00:00] NetAnalyzer下载地址 前一段时间应为工作关系,NetAnalyzer笔记系列已经很 ...
- 【Fiddler学习】Fiddler抓包HTTPS请求和手机抓包
一.安装Fiddler 百度搜索:Fiddler抓包工具,然后安装即可. 然后打开Fiddler工具,打开浏览器随意输入任何网址,就可以在Fiddler看到抓包信息. 但是:默认情况下,Fiddler ...
- Linux环境抓包命令
有时候有些接口调用问题不好定位或者日志不够详细,那么我们往往会选择通过抓包来看详细的通讯过程.抓包有相关软件,这里说如何直接在环境里抓.假如现在我们在 Linux 下部署了 Tomcat 服务器,端口 ...
- 使用被动混合内容的方式来跨越浏览器会阻断HTTPS上的非安全请求(HTTP)请求的安全策略抓包详解
/*通过传入loginId在token中附加loginId参数,方便后续读取指定缓存中的指定用户信息*/ GET /multitalk/takePhone.php?loginId=4edc153568 ...
- Mac 环境 下使用Charles 抓包Http/Https请求
实现目标 在Mac 上 对 iOS 真机 和 模拟器 进行 Http/Https抓包 使用工具 Mac 上 Charles 4.2 安装 参考链接 1. 和 链接 2. 抓包 http 请求 (1 ...
- .net core使用HttpClient发送代理请求_程序内抓包_Fiddler抓包
前言: 通过Fiddler抓取浏览器请求数据,相信大家已经都会用了,我们知道Fiddler是通过在本机计算器添加一个默认的代理服务器来实现的抓包数据的,端口号为:8888. 其实当我们打开Fiddl ...
- HTTP抓包实战
HTTP:超文本传输协议 允许将HTTP文档从Web服务器传送到客户端的浏览器.HTTP请求报文分为3部分.第一部分叫做起始行(Request line).第二部分叫首部(Request Header ...
- IOS抓包工具Stream——让移动端的抓包变得轻而易举
有一天下晚班回家,在地铁上的时候,开发发来信息说,能不能把之前创建的bug再抓包看下数据.顿时心里就想,在地铁上,我上哪抓包去.之后百度了下,发现ios有一款非常实用的抓包工具,大家可以上App St ...
- 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(10)-Fiddler如何设置捕获Firefox浏览器的Https会话
1.简介 经过上一篇对Fiddler的配置后,绝大多数的Https的会话,我们可以成功捕获抓取到,但是有些版本的Firefox浏览器仍然是捕获不到其的Https会话,需要我们更进一步的配置才能捕获到会 ...
随机推荐
- 11、Spring之基于注解的AOP
11.1.环境搭建 创建名为spring_aop_annotation的新module,过程参考9.1节 11.1.1.配置打包方式和依赖 注意:AOP需要在IOC的基础上实现,因此需要导入IOC的依 ...
- .NET周刊【8月第3期 2023-08-20】
国内主题 抓的是周树人,与我鲁迅有什么关系? https://www.cnblogs.com/JulianHuang/p/17642511.html 问题:作者看到了一个关于Dictionary.Cl ...
- Linux下导入MySQL数据库
导入数据库1.首先建空数据库mysql>create database abc; 2.导入数据库方法一:(1)选择数据库mysql>use abc;(2)设置数据库编码mysql>s ...
- [EasyExcel] 导出合并单元格
前言 使用spring boot 对excel 进行操作在平时项目中要经常使用.常见通过jxl和poi 的方式进行操作.但他们都存在一个严重的问题就是非常的耗内存.这里介绍一种 Easy Excel ...
- 每日一题:AJAX进度监控(附可运行源码)
1.什么是AJAX AJAX(Asynchronous JavaScript and XML)是一种用于在网页上进行异步通信的技术.它允许在不刷新整个页面的情况下,通过在后台与服务器进行数据交换来更新 ...
- 20230919 .NET面经
SQL IQuerable 和 IEnumerable 的主要区别? https://stackoverflow.com/questions/252785/what-is-the-difference ...
- pandas(进阶操作)-- 处理非数值型数据 -- 数据分析三剑客(核心)
博客地址:https://www.cnblogs.com/zylyehuo/ 开发环境 anaconda 集成环境:集成好了数据分析和机器学习中所需要的全部环境 安装目录不可以有中文和特殊符号 jup ...
- getchar()和putchar()
#include <stdio.h> #include <stdlib.h> int main() { char ch; /*.putchar() a. putchar函数的格 ...
- Linux系列教程——Linux发展介绍、Linux系统安装、查看Linux内核版本和系统版本、Centos7安装jdk1.8
文章目录 1 Linux发展介绍 零 什么是Linux 一 Linux前身 二 Linux诞生 三 开源文化 四 Linux系统特点 五 Linux分支 2 Linux系统安装 Linux虚拟机安装 ...
- Arduino Uno Rev3
Overview Arduino Uno is a microcontroller board based on the ATmega328P (datasheet). It has 14 digit ...