渗透测试-----数据包分析

Get和post的区别

基本概念

http定义了于服务器进行交互的不同方法,常见的有四种:get、post、put、delete,而get和post是最常用的

get

安全性:只是用来获取资源,获取和查询数据,并不会修改服务器的数据

不安全性:因为它是用来读取数据的,所以可以对get请求的数据进行缓存

post

可以向服务器发送修改请求,进行数据的修改,并且它所请求或修改的数据不会在本地有所缓存

区别

我们常说的一些区别都是一些表面上的,比如:GET没有POST安全、GET请求时URL的长度是有限制的、GET没有body而POST有body等等。这些都是针对浏览器中的要求,在使用HTTP作为接口进行传输时,就没有这么多条条框框了,此时GET和POST只是HTTP协议中的两种请求方式,而HTTP协议是基于TCP/IP的应用层协议,无论GET还是POST,用的都是同一个传输层协议,所以在传输上没有区别。

因此,在用作为接口进行传输时,最大的不同就在于报文格式上的不同了

POST /url HTTP/1.1 \r\n

GET /url HTTP/1.1 \r\n

上面所示的分别为POST方法请求的报文第一行和GET请求的报文第一行,显而易见的区别就是方法名不同。除此以外,就没有那么多要求了,GET也可以有body,POST也不一定非要使用body,只要客户端和服务器端确定好规范即可,至于形式则你们随意。只不过现在已经习惯了现有的规则,再去改变有些麻烦,毕竟客户端和服务器端要花时间去探讨具体的对接形式。

由于平时大部分见到的都是基于浏览器的请求,下面我们再看几个常见的问题

  1. 我们前面说,无论是GET请求还是POST请求,其本质都是不安全的,为什么这样说呢?如果仅仅从GET请求的参数在地址栏是可见的,POST是不可见的,那就太肤浅了。 由于HTTP自己本身是一个明文协议,每个HTTP请求和返回的数据在网络上都是明文传播,无论是url、header还是body。 只要在网络节点捉包,就能获取完整的数据报文,要防止泄密的唯一手段就是使用HTTPS(用SSL协议协商出的密钥加密明文HTTP数据)。

  1. 为什么在浏览器中GET请求方式的url长度有限制呢?这是因为浏览器要对url进行解析,而解析的时候就要分配内存。对于一个字节流的解析,必须分配buffer来保存所有要存储的数据。而url这种东西必须当作一个整体看待,无法一块一块处理,于是就处理一个请求时必须分配一整块足够大的内存。如果url太长,而并发又很高,就容易挤爆服务器的内存。

  1. POST是发送两个请求吗? 上面提到POST请求可以被分为“请求头”和“请求体”两个部分,那这两部分是一起发送出去呢?还是先发“请求头”,再发“请求体”呢? 在HTTP协议中并没有明确说明POST会产生两个数据包。之所以会发两个数据包,则是出于以下考虑:如果服务器先收到“请求头”,则会对其进行校验,如果校验通过,则回复客户端“100 - Continue”,客户端再把”请求体“发给服务器。如果请求被拒了,服务器就回复个400之类的错误,这个交互就终止了。这样做的优点是可以避免浪费带宽传输请求体,但是代价就是会多一次Round Trip。如果刚好请求体的数据也不多,那么一次性全部发给服务器可能反而更好。所以说,这和POST完全没有关系,只是基于两端的一种优化手段罢了。

浏览器常见的状态码

2XX——表明请求被正常处理了

'200': '服务器已成功处理了请求',

'201': '请求成功且服务器已创建了新的资源',

'202': '服务器已接受了请求,但尚未对其进行处理',

'203': '服务器已成功处理了请求,但返回了可能来自另一来源的信息',

'204': '服务器成功处理了请求,但未返回任何内容',

'205': '服务器成功处理了请求,但未返回任何内容(与204响应不同,此响应要求请求者重置文档视图)',

'206': '服务器成功处理了部分 GET 请求',

3XX——表明浏览器需要执行某些特殊的处理以正确处理请求

'300': '服务器根据请求可执行多种操作',

'301': '请求的网页已被永久移动到新位置',

'302': '服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求',

'303': '当请求者应对不同的位置进行单独的 GET 请求以检索响应时,服务器会返回此代码',

'304': '自从上次请求后,请求的网页未被修改过',

'305': '请求者只能使用代理访问请求的网页',

'307': '服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求',

4XX——表明客户端是发生错误的原因所在。

'400': '服务器不理解请求的语法',

'401': '此页要求授权。您可能不希望将此网页纳入索引',

'403': '服务器拒绝请求',

'404': '服务器找不到请求的网页',

'405': '禁用请求中指定的方法',

'406': '无法使用请求的内容特性响应请求的网页',

'407': '此状态码与 401 类似,但指定请求者必须授权使用代理',

'408': '服务器等候请求时发生超时',

'409': '服务器在完成请求时发生冲突',

'410': '请求的资源永久删除后,服务器返回此响应',

'411': '服务器不接受不含有效内容长度标头字段的请求',

'412': '服务器未满足请求者在请求中设置的其中一个前提条件',

'413': '服务器无法处理请求,因为请求实体过大,超出服务器的处理能力',

'414': '请求的 URI(通常为网址)过长,服务器无法处理',

'415': '请求的格式不受请求页面的支持',

'416': '如果页面无法提供请求的范围,则服务器会返回此状态码',

'417': '服务器未满足”期望”请求标头字段的要求',

5XX——服务器本身发生错误

'500': '服务器遇到错误,无法完成请求',

'501': '服务器不具备完成请求的功能',

'502': '服务器作为网关或代理,从上游服务器收到了无效的响应',

'503': '目前无法使用服务器(由于超载或进行停机维护)',

'504': '服务器作为网关或代理,未及时从上游服务器接收请求',

'505': '服务器不支持请求中所使用的 HTTP 协议版本'

查找黑客的ip地址,一般都是先对主机有一个扫描,然后就是开始对目标进行攻击,可以使用http或者其他的语法观察流量包,找出黑客ip

语法:http

过滤ip地址

语法:

Ip.addr ==x.x.x.x

Ip.src==192.168.10.10 过滤源地址

Ip.dst==192.168.10.10 过滤目的地址

小技巧:

标记流量后

可以使用ctr+shift+n直接跳转到下一条

HTTP语法

查看http协议的简单语法

语法:http

只显示请求的数据包

语法:http.request

查看GET请求的语法

语法:http.request.method==”GET”

查看POST请求的语法

语法:http.request.method==”POST”

这里可以和过滤ip的语法一起使用如:

语法:ip.addr == x.x.x.x andhttp.requset.method==”GET”

只显示响应的数据包

http.response

查看http响应状态码

语法:http.response.code==xxx

查看访问的指定域名

语法:http.host==”ww.baidu.com

通过关键字过滤url中请求

语法:http.request.urlmatches “关键字”

使用正则表达式查看关键字

语法:

http matches “关键字” 或者 http matches “关键字”|“关键字”|“关键字”

http contains “关键字”

http contains “关键字”和http.request.urlmatches “关键字”的区别在于

http contains “关键字”是查找数据包和请求url中所有的关键字

http.request.url matches“关键字”是来查找url中的关键字

可以使用这些语法来查找一些关键点如:login、admin、edit等等

(注意:matches 可以同时匹配多个关键字,但contains只能匹配一个)

一个网站通常会有很多个关键字,如admin、login登陆网页名称,或者upload、index.php等

我们可以利用这一特点来查找需要的信息,如登陆页面就可以存在账户名和密码

语法:

http.request.url matches“login|admin|flag|upload”

TCP语法

查看tcp协议的语法

语法:tcp

查看标志位的语法

如,查看syn标准位的语法

语法:tcp.flags.syn==1

以此例推,其他标志位也可以使用同样的方法查看

这里配合ip查询语法,可以查看出黑客扫描端口

语法:tcp and ip.src ==xx.x.x.x and tcp.flags.syn == 1

语法解析:首先查询tcp协议,然后使用ip.src过滤源地址,然后使用tcp协议的tcp.flags标准位信息syn(同步位),来查找tcp协议第一次发送的三次握手协议,来确定端口

扫描黑客所使用的扫描器

扫描器类型(标红的是常见的)

awvs:acunetix

netsparker:netsparker

appscan:Appscan

nessus:nessus

sqlmap:sqlmap

先对协议类型进行排序

http

再观察info那一列的信息,看是否有扫描器类型的痕迹,然后再去猜测于哪种扫描器有关

再过滤

http contains “wvs” 或者 http contains acunetix

过滤成功则表明猜想正确

分析黑客扫描到的登录后台(相对路径即可)

常见的后台地址

admin

manager

login

system

先直接对后台地址去进行过滤(对常见的几种后台地址直接去一个一个试)

http contains “admin”

然后我们再去对登录所用的后台方法(post和get)去判断

因为get的方法不安全,所以可以优先猜想请求方法是post

http.request.method==”POST”

当所猜想的和后台地址是在一条info(信息)中时,则说明猜想正确

如果还不确定的话,就去追踪tcp流,之哟啊看到有302重定向,就表示登录成功

对有rec=login(登录)的流量进行追踪

分析流量,得到黑客使用了说明账号密码登录了web后台(形式:username/password)

我们可以从黑客登录的后台得知,黑客的ip地址

再进行过滤

http.request.method==”post” && http contains “rec=login” &&ip.src==19.168.94.59

根据经验,直接查看最后一个包,如果最后一个包里没有,那只能一个一个包去查看了

分析流量,得到黑客上传的webshell文件名,内容是什么,提交webshell内容的base编码

上传文件,一般用的post源地址还有http协议

可以先用以下这句话进行过滤

http.request.method==”post” && ip.src==192.168.94.59&& http

看过滤出来的内容是否有异常,有异常则说明过滤对了,这里的上传,一般都会上传一句话木马(eval是一句话木马的函数)

再知道是上传了一个一句话木马,则再过滤一下则会得到内容

tcp contains “<?php @eval”

如果一开始就知道上上传了一句话木马,则可以一开始就使用下面这句话去过滤

http contains“eval” andhttp.request.method==”post”

分析流量,查看黑客再robots,txt中找到的flag是什么

这里直接给出了一个文件,那我们则直接去过滤这个文件

http contains “robots,txt”

然后再去对数据包进行分析,看里面是否有flag

分析流量,看黑客找的的数据库密码是多少

这里涉及到数据库密码,而数据库密码涉及到三个关键字(mysql、database、password)

要找密码则说明数据库是已经登录成功的(也就是服务器已经成功处理了请求),所以说http的响应码一定是200,并且一定会包含database (数据库)

而我们要做的则是将有响应码200的数据过滤出来,再逐一查看

http.response.code==200 && http contains “database”

再对tcp流进行跟踪

分析流量,看黑客在数据库中找到的hash_code是什么

在我们已经找到数据库ip的情况下,我们直接过滤关键字hash_code就行

http contains “hash_code” &&ip.src==10.3.3.101

再对tcp流进行跟踪

分析流量,黑客破解了账号ijnu@test.com得到额密码是什么

先直接过滤账号

Tcp contains “ijnu@test.com

对其进行tcp流追踪或者看mysql

分析流量,被黑客可攻击的web服务器,网卡配置是什么,提交网卡内网ip

网卡问题就是eth0、eth1、ens33 lo等

直接对关键字进行过滤

Tcp contains “eth0”

再追踪tcp流

分析流量,看黑客使用了什么账号登陆了mail系统(形式:username/password)

分析流量,看黑客获得的vpn的ip是多少

PPTP原理

❤PPTP客户机使用动态分配的TCP端口号,与PPTP服务器使用的保留TCP端口号123建立控制连接

(PPTP控制连接携带PPTP呼叫控制盒管理信息,用于维护PPTP隧道)。

❤客户端与服务器通过控制连接来创建、维护、终止一条隧道。

❤PPP帧的有效载荷经过加密、压缩或是两者的混合处理。

❤使用通用路由封装GRE对PPP帧进行封装。

❤将PPP帧封装进IP数据报文中。通过IP网络如Internet或其他企业准用INTRANET灯发送给PPTP服务器。

❤服务器接收到PPTP数据包后进行常规处理。

Smb

Smb是一个网络协议名,它能被用于web连接和客户端于服务器之间的信息沟通

vpnone.pcap应该只是在尝试登陆VPN,再来查看下vpntwo.pcap

在统计——>IPV4中发现

10.3.4.96、10.3.4.55、10.3.4.3出现的次数最多

先过滤一下SMB,发现10.3.4.96的协议为DCERPC,所以10.3.4.96是服务器,排除,

再来查10.3.4.55

Ip.addr==10.3.4.55

总的来说

第一个包在尝试登陆vpn,第二个包登陆上了vpn,然后第二个包 从 统计->对话 发现10.3.4.3和10.3.4.96发出的包比较多,而且过滤一下smb发现10.3.4.96是smb服务器,筛选10.3.4.55(另一个流量大点的地址)发现是10.3.4.3先ping它的,基本可以确定10.3.4.3就是黑客的vpn IP。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值