p2第02天:基础入门-数据包扩展
(【小迪安全】web安全|渗透测试|网络安全(6个月线上培训全套)_哔哩哔哩_bilibili)
网站解析对应
#简要网站搭建过程
涉及到的攻击层面?(源码,搭建平台,系统,网络层等)
涉及到的安全问题?(目录,敏感文件,弱口令,IP及域名等)
HTTP/S数据包
#Request请求数据包
#Response返回数据包
#Request请求数据包
#Proxy代理服务器
#Response返回数据包
代理服务器可以修改他们的返回数据或者请求数据。
https加密,更加安全,有加密协议
#HTTP/HTTPS具体区别?
#HTTP简要通信过程
建立连接——>发送请求数据包——>返回响应数据包——>关闭连接
1.浏览器建立与web服务器之间的连接
2.浏览器将请求数据打包(生成请求数据包)并发送到web服务器
3.web服务器将处理结果打包(生成相应数据包)并发送到浏览器
4.web服务器关闭连接
#HTTPS简要通信过程
Request 请求数据包数据格式
#Request请求数据包数据格式
1.请求行:请求类型/请求资源路径、协议的版本和类型
2.请求头:一些键值对,浏览器与web服务器之间都可以发送,特定的某种含义
3.空行:请求头与请求体之间用一个空行隔开
4.请求体:要发送的数据(一般用post提交会使用);例:user=123 & pass=123
#请求行
请求行由三个标记组成:请求方法,请求url和http版本,他们用空格分享
eg.GET /index.html HTTP/1.1
HTTP 规划定义了8种可能的请求方法
GET:检索URL中标识资源的一个简单请求
HEAD:与GET方法相同,服务器只返回状态行和头标,并不返回请求文档
POST:服务器接受被写入客户端输出流中的数据的请求
PUT:服务器保存请求数据作为指定URL新内容的请求
DELETE:服务器删除URL中命令的资源的请求
OPTIONS:关于服务器支持的请求方法信息的请求
TRACE:web服务器反馈HTTP请求和其头标的请求
CONNECT:已文档化,但目前未实现的一个方法,预留做隧道处理。
#请求头
由关键字/值对组成,每行一对,关键字和值用冒号分享。请求头标通知服务器腾于客户端的功能和标识
HOST:主机或域名地址
Accept:指浏览器或其他客户可以接受的MIME文件格式。Servlet可以根据它判断并返回适当的文件格式。
User-Agent:是客户浏览器名称
Host:对应网站URL中的web名称和端口号。
Accept-Langeuage:指出浏览器可以接受的语言种类,如en或en-us,指英语
connection:用来告诉服务器是否可以维持固定的HTTP连接。http是无连接的,HTTP/1.1使用keep-Alive为默认值,这样,当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都建立连接
Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。
Referer:表明产生请求的网页URL。如比从网页/icconcept/index.jsp中点击一个链接到网页/icwork/search,在向服务器发送的GET/icwork/search中的请求中,Referer是http://hostname:8080/icconcept/index.jsp。这个属性可以用来跟踪web请求是从什么网站来的。
Content-Type:用来表名request的内容类型。可以用HttpServletRequest的getContentType()方法取得。
Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是ISO-8859-1。
Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到web响应之后先解码,然后再检查文件格式。
重点:Host、Cookie、Referer
#空行
最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不再有头标。
#请求数据
使用POST传送,最常使用的是Content-Type 和 Content-Length 头标。
Response返回数据包数据格式
#Response返回数据包数据格式
一个响应由四个部分组成:状态行、响应头标、空行、响应数据。
1.状态行:协议版本、数字形式的状态代码和状态描述,个元素之间以空格分隔。
2.响应头标:包含服务器类型、日期、长度、内容类型等
3.空行:响应头与响应体之间用空行隔开
4.响应数据:浏览器会将实体内容中的数据取出来,生成相应的页面
HTTP响应码:
1xx(100-:信息,请求收到,继续处理
2xx:成功,行为被成功地接受、理解和采纳
3xx:重定向,为了完成请求,必须进一步执行的动作
4xx:客户端错误,自己访问的问题
5xx:服务器错误
一些常见的分类链接:大佬写的:https://seo.juziseo.com/doc/http_code/
200 存在文件
403 存在文件夹
3xx 均可能存在
404 不存在文件及文件夹
500 均可能存在
#响应头标
像请求头标一样,它们指出服务器的功能,标识出响应数据的细节。
#空行
最后一个响应头标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标
#响应数据
最好三个都勾选,因为可能会出现误差。
扫描工具:御剑、铸剑
wsexplorer怎么用呀?
浏览器监听是8888
wireshark使用:
先看自己是哪个网卡,抓包就点哪个。一般是第一个有波段的,也可以自己查一下电脑,用ipconfig命令。
点击Ethernet0网段抓包。
可以看到它正在不断捕获数据。
我们先让他暂停,然后在御剑输入要扫描的网址,再用wireshark抓包。
网址用本地环回地址做实验。
还启动了小皮面板:PHP study,我没有用过这个,先下载一个试试。
这个phpstudy有个网站根目录,可以看到了里面的信息。
我们可以看到出现了些扫描信息,把他们停止,御剑停止不了,直接关了,把wireshark停止捕获,然后现在来观察它的扫描信息。
我们用过滤器过滤一下,只找http的数据包。
双击数据包,可以查看它的信息。
小迪抓出来的数据包信息比对。
抓包工具要回使用,数据包信息后面再找资料了解。
burp suite工具使用:
Burpsuite抓包修改测试
打开Firefox——选项——高级——网络——设置——手动配置代理——HTTP代理IP填127.0.0.1,端口号为8888,勾选为所有协议使用相同代理——确定。
然后,打开burpsuite。
从攻防世界找了个靶场。weak auth
把网址复制到Firefox。
打开bp设置。选择刚刚自己在火狐设置的代理。
Proxy——Options——Add or Edit已有的——填写刚刚在火狐设置的代理端口号和HTTP地址,选择specific address。
开启拦截状态。
Proxy——Intercept——Intercept is on——网页执行
出现错误,找了半天才发现刚刚burp suite的代理端口填错了,应该是8888,重新修改一下。
开启监听。
随便输入些数据。
其实应该会是自己跳转到bp抓包的数据页面,但是这里不知道为什么没有跳转,但是历史记录里面有变化,可以看到刚刚的数据包信息。
回到小迪的视频,刚开始bp跳转出来的信息,你需要分辨是否为你想要打开的,需要看数据头部的信息,因为有可能是浏览器自带的,点击forward往后找。
取消代理后,网页的信息又会显示出来。
可以用工具提交来判定是否文件存在。
PS:
浏览器代理有个“不使用代理”,如果本机访问网站,经常这里会有一个默认的localhost,127.0.0.1,所以代理时要把它清空,不然有可能本地访问网站会不抓数据包。设置127.0.0.1.端口号8888就是代表用本地访问地址8888,如果是8080bp也要改成8080,反正一定要对应上。
在监听中,相当于下图中被框起来的时段,现在正在被代理(bp)控制着,所以网页一直处于加载状态。如果bp选择forward,就会一直发送数据出去,网站就会继续加载;但如果选择drop,就会丢弃数据包,会显示打开失败。
涉及资源:
湘潭跃腊商贸有限公司 (bgsafe.cn)
墨者学院_专注于网络安全人才培养 (mozhe.cn)
敏感性文件扫描工具简要实现
第三方检测修改实现XSS攻击
IP/IPv6查询,服务器地址查询 - 站长工具 (chinaz.com)
一进去可以看到自己的IP地址,电脑系统信息,打开的浏览器信息,地理位置等等,而这些检测到的信息是通过我们访问数据包检测到的。tips:我们可以通过伪造数据包来伪造我们的信息,给他们检测。
但你会发现这个IP地址和你在电脑上ipconfig出来的主机IP地址不一样。这是因为 IP可以分为Public IP 和 Private IP。百度上搜索到的是公网IP,而我们自己看的是局域网里的IP,并且只有公网IP是能够连接互联网的,私网IP一般只做局域网。
更详细的解释在这篇博客:(1条消息) 为什么百度查到的ip和ipconfig查到的不一样;详解公网Ip和私网ip;详解网络分类ABC;_粥粥同学的博客-CSDN博客_百度ip和电脑ip有什么不同
利用数据包伪造信息:
对网页进行抓包
User-Agent:客户浏览器名称
现在试着在数据包修改这个部分,然后发送数据包给网页。
网站检测的信息变化了。
事例二:
输入一些开发语句。这个alter()之前碰过,是用于显示带有一条指定消息和一个 OK 按钮的警告框。
就会出现弹窗。
(突然发现我截屏的画质很模糊,原来视频没有开高清,手动狗头)
(评论说现在这个网站不可以这样修改了)
tips:如果你用电脑访问,可以把数据包信息改成和手机数据包类似的信息,然后访问,就可以绕过,被当成手机访问;同理,有些投票机制,会查是否为同一IP,避免统一用户多次投票的事情,如果这个投票机制检测的信息有可以绕过的可能性,我们也可以通过修改数据包来绕过。或者直接用代理,他检测到的是你的代理IP,投一次换一次代理IP。
数据包相关检验对比(APP与直接访问)
自己学习用burp suite配置HTTPS抓包方法
【burp】配置HTTPS抓包方法 - Lauren - 博客园 (cnblogs.com)
burpsuite默认抓取http网站,但是APP是有https网站信息的,所以我们需要配置burp suite,让他抓取https。
刚刚是本地浏览器抓包,所以用127.0.0.1
由于是抓APP的数据包,APP相当于单独一个网络,所以要新增一个,改IP。
他输入的IP地址好像是自己电脑的同一个局域网的,APP是可以设置自己的WiFi网络IP的。
打开截获, 在APP随便打开网站,都会发送信息到burp。
将抓到的数据包其中之一复制出来解读信息。
问:为什么信息不一样?
直接访问的数据包:
像图中的一个是安卓手机,一个是电脑,数据包信息不同,显示的页面也不一样。
将模拟器的数据包信息复制给刚刚本地浏览器抓包的数据包信息中,替换掉原有的,然后重新发数据。
翻车了,说是工具问题。
也可以在这里修改数据包信息,然后发送。
不知道弄了什么,又可以了。代理问题,而且网页管理员有做拦截。
用下图中框框处拼接起来,打开网址。
把数据包信息替换, 浏览器读的内容也是APP的内容。
CTF或实际应用中部分考题解析(mozhe)
网络安全模块都可以做做,完成三个实验就好,其他大同小异。
eg.来源页伪造:(这网站还要充值笑死,也可以自己搭建靶场。)
直接抓数据包。
这个referer表示从这个网站来的,题目要求我们从谷歌网站来,所以就要把referer改变。
发送。
(有人说攻防世界有同样的题目不用花钱)(有人说用火狐hackbar就可以有上面的url,不知道可不可以用)
eg.浏览器信息伪造:
要用iPhone和2g网访问。
发送。
eg.HTTP动作练习:
POST要写到最后面。
翻车了,可能是数据粘贴时有什么空格之类的。
再来一次:
又翻车了。
弹幕有人说:
好像是改了这里。
弹幕也有其他做法:
可以试试。
bugku也有这些题目。
投票系统设计缺陷:
数据包中加入这一行。
对刚刚的ggg投票抓包。
复制刚刚的命令。
现在有两个变量了。
然后start attack。
刚才是-1,不能投票。
又翻车了。
自己做练习:
(1)题目:来源页伪造
题目来源:来源页伪造_网络安全_在线靶场_墨者学院_专注于网络安全人才培养 (mozhe.cn)
分析过程:
打开网址,一个网页,点击中间那个。
发现只能从google进入。
应该是因为我们的进入口不对,我们可以通过抓包将发起端改成google。
将firefox改成Google。
弄错了,他们说是修改referer。
referer才是检测从哪个网页转过来的。
User—Agent是客户浏览器名称。
将referer改成google.com
http://google.com/index.html
mozhe52b67b7390c48ea9664dc0c2c78
(2)题目:浏览器信息伪造
题目来源:浏览器信息伪造_网络安全_在线靶场_墨者学院_专注于网络安全人才培养 (mozhe.cn)
分析过程:
要用iphone手机且必须为2g网络查看。
抓包看一下信息。
这里显示客户机浏览器型号为Linux系统Firefox。
上网搜一下iPhone UA库。
复制了 Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.18(0x17001233) NetType/WIFI Language/zh_CN
他说要2G网络,所以在NeType加个2G。
Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.18(0x17001233) NetType2G/WIFI Language/zh_CN
mozhe8c1da65f061fea214a91ac14f3b
答案应该是没有错的,不知道为什么它靶场环境下架了。
算了,不管他了。
(3)题目:HTTP动作练习
题目来源:HTTP动作练习_网络安全_在线靶场_墨者学院_专注于网络安全人才培养 (mozhe.cn)
分析过程:
抓包。
上网查一下get和post的区别。
get请求和post请求区别 - 简书 (jianshu.com)
1、GET请求一般用去请求获取数据,
POST一般作为发送数据到后台时使用
2、GET请求也可传参到后台,但是其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度也是有限制的
POST请求传递参数放在Request body中,不会在url中显示,比GET要安全,且参数长度无限制
作者:Fairy_妍
链接:https://www.jianshu.com/p/a5cdfd2bda66
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
可以看到我们这个网站的请求信息太长了,get承受不了。
PHP数据接收变量
G
E
T
、
_GET、
GET、_POST 、
R
E
Q
U
E
S
T
区别见下面的链接。
<
b
r
/
>
[
(
9
条消息
)
P
H
P
数据接收变量
_REQUEST区别见下面的链接。<br />[(9条消息) PHP数据接收变量
REQUEST区别见下面的链接。<br/>[(9条消息)PHP数据接收变量_GET、
P
O
S
T
、
_POST 、
POST、_REQUEST区别_木偶跳舞的博客-CSDN博客_php request](https://blog.csdn.net/u013372487/article/details/46009075)
关于不同浏览器不同的get数据信息大小:(9条消息) GET请求的长度限制?_珍惜时间小李的博客-CSDN博客_get请求长度限制
这段content太长了,get要变成post,然后把content放在最后面。
不知道为什么成功不了,他们说要加个content length。
有一个简单的方法就是右键变更请求。
自动变成这样。
mozhe24311984bdcf195948f73c45173
(4)题目:投票系统程序设计缺陷分析
题目来源:投票系统程序设计缺陷分析_网络安全_在线靶场_墨者学院_专注于网络安全人才培养 (mozhe.cn)
分析过程:
给他投票。
每天只能投一次。
抓包。
不知道为什么又打不开了。