通过修改http请求的header请求头来伪造ip

在正常的tcp/ip协议中是很难伪造ip的,因为在tcp/ip正式通信之前是有一个三次握手的过程,通过三次握手建立了tcp/ip连接之后再进行正常的通信,所以我之前想用python的scapy库来伪造其他ip的请求包,但是因为三次握手的时候,我的ip是伪造的,我发出去的请求包就没有办法正确的返回找到我,所以无法三次握手就没有tcp/ip正常通信,就失败了。

只要能够在tcp/ip层伪造ip,就是完全的伪造ip,没有任何办法判断,不过我这次的是在http层伪造ip,所以还是可能被发现的,而且也只有在http协议中有用,无法利用在其他地方。

那么如何在http层伪造协议呢?我们先来了解一些http请求中的请求头header,比如说我们在chrome中登陆百度,打开chrome的开发者工具,查看network,就能够看到这次请求百度的header请求头。

Requests Headers

  1. Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
  2. Accept-Encoding:gzip, deflate, sdch
  3. Accept-Language:zh-CN,zh;q=0.8
  4. Connection:keep-alive
  5. Cookie:BIDUPSID=XXX; PSTM=XXX; BAIDUID=XXX:FG=1; BDUSS=XXX; __cfduid=XXX; ispeed_lsm=2; BD_HOME=1; BDRCVFR[Ups602knC30]=XXX; BD_CK_SAM=1; H_PS_PSSID=XXX; BD_UPN=XXX; H_PS_645EC=XXX; locale=XXX; BDSVRTM=0; BD_LAST_QID=XXX
  6. Host:www.baidu.com
  7. Upgrade-Insecure-Requests:1
  8. User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/49.0.2623.108 Chrome/49.0.2623.108 Safari/537.36

可以看到这里有很多的请求参数,在我们打开百度的时候,我们先要向百度服务器发送一个请求,而这个请求包含很多附加的关于我们自己的信息,比如说浏览器信息,cookie,接受数据格式等等,百度服务器收到我们的请求之后,返回给我们百度的页面。

在我们发送http请求之前,就已经先进行了tcp/ip三次握手,然后再发送http请求,三次握手的过程是非常迅速的,可以用抓包工具 wireshark 查看。

所以 header 请求头主要是一些我们发送请求时附带的我们自己的信息,同时,在看到 header 请求头的时候,也会发现在服务器返回数据的时候也会带有一个 header ,这是返回数据格式的一些信息,包括返回数据的格式,大小,时间等。

阅读剩余部分 -

宝塔面板中WordPress的权限解决方法

有一段时间没有用了wordpress了,今天有空折腾了一下宝塔面板。在安装玩wordpress后,发现无法直接操作文件,比如无法删除/安装插件和主题,提示需要ftp。实际上这个是因为权限没有给到位,导致wordpress无法读写所在目录。
首先,肯定不能使用chmod +777 -R这种简单粗暴的方法,不仅不安全,还有可能直接影响到部分使用apache的人。详情可以点击这里,查看官方的说明。
既然777行不通,那就使用define(“FS_METHOD”, “direct”);,通过使用FS_METHOD配合tmp来完成,但是等写完配置文件后发现还是不可以,还是权限有问题,具体原因也没有去想了。在查看的时候,想到宝塔面板默认的账户是www,那就一步到位,使用以下的命令实现了功能:

chown -R www:www /www/wwwroot/domain.com

通过直接给www用户权限,让它接手所有文写的读写和执行,而root权限则只给到755。

阅读剩余部分 -

Caddy proxy指令详解

简介

Caddy的proxy可以用于配置:

  1. 普通的反向代理
  2. 负载均衡:支持多策略,健康检查,故障转移
  3. WebSocket代理

开启该指令后,Caddy的proxy中间件会添加一个可用于 {upstream} 的占位符,用于记录哪一个代理的处理的请求.

proxy完整语法格式为:

proxy from to... {
policy name [value]
fail_timeout duration
max_fails integer
max_conns integer
try_duration duration
try_interval duration
health_check path
health_check_port port
health_check_interval interval_duration
health_check_timeout timeout_duration
header_upstream name value
header_downstream name value
keepalive number
without prefix
except ignored_paths...
upstream to
insecure_skip_verify
preset
}
  • from 被代理的请求的路径
  • to 代理的断点,可以是多个,支持 http/https/quic/srv/unix/quic, 如果是 srv:// 或者 srv+https:// 则被认为是一个服务定位器,Caddy将通过SRV DNS去解析
  • policy 负载均衡策略,必须有多个后端.如果后端是服务定位器则不可以,可选的有random, least_conn, round_robin, first, ip_hash, uri_hash 和 header, 默认为random
  • fail_timeout 失败了的请求记住多久.如果在这期间达到了max_fails,则被考虑为挂掉了,不会再有请求发送过去,除非失败的请求被忘记了.默认为0,总是可用.
  • max_fails 如果fail_timeout为0则无效,默认为1
  • max_conns 每一个后端的最大请求数,默认0,没有限制,如果达到了返回502错误.
  • try_duration 第一个上游失败了,挂起外面来的请求多久
  • try_interval 某一个上游服务器挂了之后等待多久切换下一个上有服务器,默认250ms. 设置为0并且设置了duration可能占满cpu
  • health_check 设置一个路径,Caddy将定期发出请求,如果返回200和399就认为正常,否则就不正常,然后提前定义的interval间隔里他就是被考虑不正常的.
  • health_check_port 设置一个额外的检查端口,如果是服务定位器就无效
  • health_check_interval 健康检查间隔,默认30s
  • health_check_timeout 检查超时时间,默认60s
  • header_upstream 传递到后方的头,可以多个,也可以用请求占位符
  • header_downstream 修改返回的响应头
  • keepalive 保持多少和后端之间闲置的连接,设置为0关闭keepalive
  • without 去掉的前缀(/api/foo without /api 将访问 /foo. )
  • except设置不代理的路径
  • upstream 基本等同于to配置
  • insecure_skip_verify 重载后端TLS认证,禁用HTTPS的安全功能
  • preset 支持的有websocket和transparent

阅读剩余部分 -

伪造IP 请求网站

在 http 头中有一个字段:X-Forwarded-For,该字段是一个 HTTP 扩展头部。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 缓存代理软件引入,用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。

假设一个场景,你的网站使用了 CDN 加速, CDN 会隐藏掉你源站的真实 IP, 当请求到达时,会先请求到 CDN 边缘节点,而后转发到源站,此时你可以把 CDN 当做是一个代理服务器,事实上,它也确实是一个代理服务器。

字段介绍

X-Forwarded-For 请求头格式非常简单,就这样:

X-Forwarded-For: client, proxy1, proxy2

其内容由英文逗号 + 空格隔开的多个部分组成,最开始的是离服务端最远的设备 IP,然后是每一级代理设备的 IP。

如果一个 HTTP 请求到达服务器之前,经过了三个代理 Proxy1、Proxy2、Proxy3,IP 分别为 IP1、IP2、IP3,用户真实 IP 为 IP0,服务端最终会收到以下信息:

X-Forwarded-For: IP0, IP1, IP2

阅读剩余部分 -

Caddy标准HTTP指令简介

本文将对Caddy的29个标准HTTP指令做一个汇总,并简要的描述每个指令的作用.

所有的指令的详细介绍都可以在 https://caddyserver.com/docs/ 路径下查看,如查看 proxy 的详细介绍可访问 https://caddyserver.com/docs/proxy

指令 说明 默认情况的处理
basicauth HTTP基本认证  
bind 用于给TCP监听套接字绑定IP地址 默认绑定在为通配符地址
browse 目录浏览功能  
errors 配置HTTP错误页面以及错误日志 响应码>=400的返回一个纯文本错误消息,也不记录日志
expvar 将运行时或者当前进程的一些信息(内存统计,启动命令,协程数等)以JSON格式暴露在某个路径下.  
ext 对于不存在的路径,自动追加后缀名后再次尝试  
fastcgi fastcgi配置  
gzip gzip压缩配置 不压缩,但是如果网站目录下存在.gz或者.br压缩文件,Caddy就会使用. 如果客户端支持gzip格式的压缩压缩文件,Caddy确保不压缩图片,视频和已压缩文件
header 设置响应头,可以增加,修改和删除.如果是代理的必须在proxy指令中设置  
import 从其他文件或代码段导入配置,减少重复  
index 索引文件配置 index(default).html(htm/txt)
internal X-Accel-Redirect 静态转发配置, 该路径外部不可访问,caddy配置的代理可以发出X-Accel-Redirect请求  
limit 设置HTTP请求头( one limit applies to all sites on the same listener)和请求体的大小限制 默认无限制.设置了之后,如果超出了限制返回413响应
log 请求日志配置  
markdown 将markdown文件渲染成HTML  
mime 根据响应文件扩展名设置Content-Type字段  
on 在服务器启动/关闭/刷新证书的时候执行的外部命令  
pprof 在某个路径下展示profiling信息  
proxy 反向代理和负载均衡配置  
push 开启和配置HTTP/2服务器推  
redir 根据请求返回重定向响应(可自己设置重定向状态码)  
request_id 生成一个UUID,之后可以通过{request_id}占位符使用  
rewrite 服务器端的重定向  
root 网站根目录配置  
status 访问某些路径时,直接返回一个配置好的状态码  
templates 模板配置  
timeouts 设置超时时间:读请求的时间/读请求头的时间/写响应的时间/闲置时间(使用keep-alive时) Keep-Alive超时时间默认为5分钟
tls HTTPS配置,摘自文档的一句话: Since HTTPS is enabled automatically, this directive should only be used to deliberately override default settings. Use with care, if at all.  
websocket 提供一个简单的Websocket服务器

阅读剩余部分 -

使用 Caddy 替代 Nginx,全站升级 https,配置更加简单

## Caddy 是什么? Caddy 是一个多功能的 HTTP web服务器,并且使用Let’s Encrypt提供的免费证书,自动让网站升级到HTTPS

Every Site on HTTPS Caddy is a general-purpose HTTP/2 web server that serves HTTPS by default. Fork Caddy On Github

为什么要使用 Caddy

  1. 安全 Caddy 是一个默认使用https协议的web服务器
  2. 无依赖 Caddy 使用 Go 语言编写,编译好的二进制文件能够运行在任何支持Go语言的平台,不需要自己安装任何库。
  3. 使用简单 Caddy 的配置简单,不管你是新的web开发者,还是专业人士,都能够快速上手

安装以及运行

  1. 下载 Caddy download 在官网上选择指定的平台,下载指定平台的运行包。 这里以 CentOS 7.0 x64 为例。 选择 Linux 64-bit,然后点 DOWNLOAD。 通过ftp将下载好的包上传到服务器,或者复制出下载地址直接在服务端 wget https://caddyserver.com/download/linux/amd64。 使用 wget 的模式下载下来的文件名是 amd64。 tar -xzvf amd64 解压, 解压后文件如下。 alt 我们可以直接运行 ./caddy,这样就启动了一个静态的web服务器,根目录为当前目录,端口为 2015,可以通过你服务器的ip地址加上:2015 进行访问了。 如果你访问的时候,报404异常,在你当前目录下添加一个 index.html 文件即可。

阅读剩余部分 -

使用 CADDY 代替 NGINX

具,在折腾 Drone 的时候,我最终就是使用的它提供 Web 服务。回到标题,为什么要用 Caddy 替换掉 Nginx 呢?最主要的原因是 Caddy 能让网站自动支持 HTTPS。同样是使用 Let's Encrypt,换成 Nginx 我们就必须手工操作,并且还需要设置三个月更新证书的计划任务。而且默认还支持 http/2,很多事情都不需要我们再配置了。另外它的配置文件也比 Nginx 的要简单很多,几十行的 Nginx 配置文件 Caddy 仅需要几行就可以搞定了。

安装 Caddy

Caddy 提供了一键安装命令生成功能,访问 https://caddyserver.com/download 选择对应的平台,插件可默认为空,最后选择对应的协议后下方即会生成一键安装命令,例如:

  1. $ curl https://getcaddy.com | bash -s personal

安装后执行 which caddy 你会发现 Caddy 已经安装到了 /usr/local/bin/caddy 位置。

caddy命令生成

  1. $ echo 'localhost:8000' >> Caddyfile
  2. $ caddy

执行如上命令在浏览器中访问 http://localhost:8000 发现 Caddy 启动了一个简单的 HTTP 服务器。

阅读剩余部分 -

如何设置网站 301 重定向 | 使用 Cloudflare

前言

301 是 HTTP 协议中的一个状态码,表示该网页已经永久迁移到新位置。

我们经常在更换域名时,使用 301 重定向来把旧域名永久转移到新域名上去,它可以同时把我们旧域名的流量和权重同时转移到新域名上去,对搜索引擎比较友好,避免了更换域名所带来的流量丢失。

适用情况

  • 更换域名,将旧域名指向新域名;
  • 网址规范化,将 a.com、www.a.com、blog.a.com 等访问地址全部指向 a.com 一个地址,集中流量和权重;
  • 将指向过期、无效网页的链接重定向至正确地址;
  • http 重定向到 https。

使用 Cloudflare 进行重定向

下面介绍下如何使用 Cloudflare 的页面规则对网站进行 301 重定向。

Cloudflare 相关教程:

Step 1

登录 Cloudflare 的控制面板,进入 “Page Rules” 页面,创建一条页面规则。

image.png

阅读剩余部分 -

最新文章

归档

其它

链接

meiyoutongji