Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >看我如何通过邮箱获取IP定位

看我如何通过邮箱获取IP定位

作者头像
FB客服
发布于 2018-10-25 03:24:10
发布于 2018-10-25 03:24:10
5K00
代码可运行
举报
文章被收录于专栏:FreeBufFreeBuf
运行总次数:0
代码可运行

还记得那些年,邮箱钓鱼盛行,各种广告邮件钓鱼邮件层出不穷,经过邮箱防水墙能拦截一部分以外,你是否注意到了正常邮箱可能被有心人利用的姿势?本文将用一个比较难以察觉的方式获取目标的IP。

0x00 检测邮件是否已读

某天,工作的时候发送了一封邮件给一个比较重要的人,左等右等,心里在想,TA 看了我的邮箱没有?现在通过一个姿势来获取一下自己邮箱的已读状态吧?邮件被打开后很大几率会直接加载邮件中的图片首先,准备一台服务器,服务器的权限最好是自己有,使用一下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
header('Content-Type:image/png');
$im = imagecreatetruecolor (1,1);
$background_color = imagecolorallocatealpha($im, 255, 255, 255, 127);
imagepng($im);
imagedestroy($im);

以上代码创建了一个 1x1 大小的全透明的图片(谁都看不到哦),我们把这个图片放到我们自己的服务器上,访问可以看到一张啥都没有的图片:

光是生成图片还不够,我们记录一下 $SERVER['HTTPREFERER'] 和 $SERVER['HTTPUSER_AGENT'] 这俩个存储了用户从哪里来,使用了什么用户代理(浏览器设备)过来的,最后还有 ip,我们通过如下代码获取:> 参考:https://github.com/DXkite/suda/blob/master/system/src/suda/core/Request.php#L211

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function get_ip()
{
    static $ipFrom = ['HTTP_CLIENT_IP','HTTP_X_FORWARDED_FOR','HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP','HTTP_FORWARDED_FOR','HTTP_FORWARDED','REMOTE_ADDR'];
    foreach ($ipFrom as $key) {
        if (array_key_exists($key, $_SERVER)) {
            foreach (explode(',', $_SERVER[$key]) as $ip) {
                $ip = trim($ip);
                if ((bool) filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
                    return $ip;
                }
            }
        }
    }
    return  '127.0.0.1';
}

获取完以上数据后,写入到数据库中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ip = get_ip();
$from = $_SERVER['HTTP_REFERER'];
$client = $_SERVER['HTTP_USER_AGENT'];
// SQL 插入到数据库中
// ...

写完以后,我们在邮件中插入我们的图片(使用 URL 插入),对方收到后可能是这样的:

可以看到图片现在就是一个小黑点(命名我弄成透明的了),只要对方查看了这一封邮件,我们就可以在后台捕获这个数据。

如果你对消息的时效性有要求,可以加一个短信通知(我这里用的是企鹅 SMS)

在对方访问页面的时候就通知到你的手机。

0x01 附带的技能:IP 定位

上一步我们通过记录了对方的各种信息:

字段

信息内容

解释

HTTP_REFERER

http://netease-default-url-start/

从来源可以看出,用户通过网易客户端打开邮件

IP

117.136..

用户使用的出网 IP

HTTPUSERAGENT

Mozilla/5.0 (Linux; Android 8.0.0; MIX 2S Build/OPR1.170623.032; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/62.0.3202.84 Mobile Safari/537.36

从头部分析,可以看到用户通过小米 Mix 2S 打开的邮件

0x02 缺陷与防范

1. 用客户端打开邮件直接中招 2. 网页端邮件有小部分几率屏蔽图片,但是从目前情况来看,测试了几个,腾讯,163 都没有屏蔽 3. 除非使用代理上网,不然正常情况下定位效果还算可以 4. 适用于检测邮件是否已读,定位 IP 纯属附带效果,但是也不容忽略(昂,定位在 TA 家,也不回复我邮件)

*本文原创作者:dxkite,本文属FreeBuf原创奖励计划,未经许可禁止转载

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
php获取客户端IP和服务器端IP[通俗易懂]
在PHP获取客户端IP时,常使用 _SERVER[“REMOTE_ADDR”] 。但如果客户端是使用代理服务器来访问,那取到的是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用_SERVER[“HTTP_X_FORWARDED_FOR”]来读取。
全栈程序员站长
2022/11/15
4.9K0
ThinkPHP6使用中间件过滤来源网址或IP
使用ThinkPHP6开发接口时会遇到前置过滤或判断,我们可以使用中间件功能。以下是单应用模式示例:
XiaoA
2023/06/23
5210
看我如何定位骗子,找出幕后诈骗的黑手(上)
临近年末,很多诈骗犯已经跃跃欲试了,用各种套路来坑你的血汗钱,所以我们要用所学到的东西来保护自己,其实I春秋社区有一个神秘的讨论组,每天就是抓骗子,帮妖妖灵的蜀黍干点杂货,惩恶扬善,具体找坏蛋咨询 为了写好这篇文章,列了一个大纲,对比来看,会比较容易看 因篇幅较长,所以打算分成两篇来写 第一篇:QQ定位+ip定位+常见钓鱼方法及反击+诈骗模式 第二篇:诈骗心理学+行为习惯+常见木马诈骗及反击+另类工具使用擒获幕后黑手
HACK学习
2019/08/07
11.3K4
看我如何定位骗子,找出幕后诈骗的黑手(上)
PHP获取ip地址
老猫-Leo
2023/12/11
4100
一张小图片轻松获知对方是否查阅你的邮件,像素标签简单用法
素标签这类技术其实已经在很多商业网站中有涉及到,但是很多网站不会明确的指明。也有的叫做“埋点技术”,即用来收集用户的点击事件来分析用户的喜好。就像 apple 声明的那样,一般不会将用户操作情况和用户的身份绑定,仅仅用来分析网站的运行情况。
王图思睿
2021/06/16
8810
哎,我早就料到你获取IP地址的姿势不对啦!
来源:https://blog.csdn.net/takeurhand/article/details/52512200
用户5224393
2019/10/10
3.3K2
Logstash的grok表达式与Filebeat的日志过滤
grok为Logstash 的Filter的一个插件,又因为存在表达式要配置,最开始当成过滤条件的配置了。随着深入了解,发现这个只是一个数据结构化转换工具,主要作用就是把String类型的字符串转为key-value形式。
WindCoder
2018/09/19
5.1K0
PHP函数大全·持续更新
邮箱验证 function is_valid_email($email) { if (preg_match('/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/', $email)) { return true; } else { return false; } } OR function check_email($email) { $result = trim($email); if (filter_var($resu
骤雨重山
2022/01/17
9990
nginx.conf 配置详解(六)
日志级别从低到高分别是:debug、info、notice、warn、error、crit
高大北
2022/06/14
5660
nginx.conf 配置详解(六)
聊聊部署在K8S的项目如何获取客户端真实IP
最近部门有个需求,需要对一些客户端IP做白名单,在白名单范围内,才能做一些业务操作。按我们的部门的一贯做法,我们会封装一个client包,提供给业务方使用。(注: 我们的项目是运行在K8S上)本以为这是一个不是很难的功能,部门的小伙伴不到一天,就把功能实现了,他通过本地调试,可以获取到正确的客户端IP,但是发布到测试环境,发现获取到的客户端IP一直是节点的IP,后面那个小伙伴排查了很久,一直没头绪,就找到我帮忙一直排查一下。今天文章主要就是来复盘这个过程
lyb-geek
2023/09/07
7230
聊聊部署在K8S的项目如何获取客户端真实IP
使用CDN后如何配置Apache使其记录访客真实IP
今天想看看哪些地区的人访问过我的网站,于是打开Apache网站响应日志,把访客IP复制到百度,发现搜到的全部都是我是用的CDN的节点IP,真实的访客IP并没有被记录。
用户6948990
2025/04/03
560
使用CDN后如何配置Apache使其记录访客真实IP
BlueCMS_V1.6:审计过程与漏洞分析
而在ad_js.php文件的开头(第10行)引入了过滤文件require_once dirname(__FILE__) . '/include/common.inc.php';
黑白天安全
2021/03/16
2.7K0
BlueCMS_V1.6:审计过程与漏洞分析
Nginx常见用法总结(面试必备)
Nginx通过proxy_pass和upstream指令实现负载均衡,Nginx原生支持的负载均衡算法有如下几种:
IT大咖说
2019/09/25
7920
红队测试之邮箱打点
随着互联网信息快速发展,办公已经离不开网络的支持。邮箱成为了人们常用的办公方式之一。
谢公子
2022/01/20
1K0
红队测试之邮箱打点
nginx被动检测
随着应用越来越多,tomcat容器也越来越重,随之而来的是tomcat宕机越来越频繁。最终选择jar包部署测试反向代理的效果。虽然jar包部署之后项目肯定会稳定很多。但是nginx宕机检测还是要做的。在本地调试发现并没有出现什么问题。就将nginx部署到了灰度环境。在项目跑起来之后我们直接关闭了其中一个项目。按照nginx反向代理的被动检测机制应该还是可以返回正常的数据。但是我们发现灰度的nginx宕机检测花费了21秒。这个时间有点太大了,用户估计要爆炸。想了好多也没找到问题。下面记录一下自己的狗血经历。
写一点笔记
2020/08/25
6350
nginx被动检测
无需点击,通过qq的xml卡片自动获取对方ip
因为不是很会php,就到网上找了个找,发现需要用到如下几个函数:getenv('HTTP_CLIENT_IP')getenv('HTTP_X_FORWARDED_FOR')getenv('HTTP_X_FORWARDED')getenv('HTTP_FORWARDED_FOR')getenv('HTTP_FORWARDED')以及变量:_SERVER['REMOTE_ADDR']_SERVER['HTTP_REFERER']
Y5neKO
2022/01/13
8K2
无需点击,通过qq的xml卡片自动获取对方ip
nginx转发后后端怎么获取用户真实IP
经常有需求要获取访问用户的IP,在经过nginx转发后真实IP就被隐藏起来了,我们需要在头部信息里拿真实IP,下面是拿IP的代码,考虑了各种情况。 public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-real-ip"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreC
猿天地
2018/04/03
4.5K0
ELK+filebeat+nginx+json 日志分析综合实战
2,将nginx日志改成json格式,这样各个字段就方便最终在kibana进行画图统计了
用户9184480
2024/12/07
1080
ELK+filebeat+nginx+json 日志分析综合实战
微信小程序通过ip获取用户所在城市
在微信小程序中, 获取用户的地理位置是需要权限的, 如果只是获取用户所在的城市信息, 那只需查看用户ip所在的城市就好了, 下面我们就完成获取用户ip的小程序逻辑~ 根据用户ip获取地
zhaoolee
2018/09/30
5.2K0
微信小程序通过ip获取用户所在城市
Kubernetes 泛域名动态 Service 转发解决方案
集群对外暴露了一个公网IP作为流量入口(可以是 Ingress 或 Service),DNS 解析配置了一个泛域名指向该IP(比如 *.test.imroc.io),现希望根据请求中不同 Host 转发到不同的后端 Service。比如 a.test.imroc.io 的请求被转发到 my-svc-a,b.test.imroc.io 的请求转发到 my-svc-b
imroc
2018/12/22
4.9K0
相关推荐
php获取客户端IP和服务器端IP[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档