惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
Cloudbric
Cloudbric
P
Palo Alto Networks Blog
T
Threatpost
T
Tor Project blog
T
Tenable Blog
AWS News Blog
AWS News Blog
Project Zero
Project Zero
L
LangChain Blog
Cyberwarzone
Cyberwarzone
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
C
CERT Recently Published Vulnerability Notes
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Security Latest
Security Latest
云风的 BLOG
云风的 BLOG
I
Intezer
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Proofpoint News Feed
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
V
Vulnerabilities – Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
MongoDB | Blog
MongoDB | Blog
aimingoo的专栏
aimingoo的专栏
K
Kaspersky official blog
Jina AI
Jina AI
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
D
DataBreaches.Net
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
Recorded Future
Recorded Future
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Secure Thoughts
TaoSecurity Blog
TaoSecurity Blog
P
Privacy & Cybersecurity Law Blog
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
IT之家
IT之家
Forbes - Security
Forbes - Security
The Hacker News
The Hacker News
Last Week in AI
Last Week in AI
T
Threat Research - Cisco Blogs
Y
Y Combinator Blog

龙辉's Blog - 学习笔记

天方云签程序开源 - 龙辉's Blog CTFSHOW-菜狗杯(部分WP) - 龙辉's Blog 贵州师范大学抢课脚本-正方教务系统V8.0.0 - 龙辉's Blog 简单实现每日健康自动打卡 - 龙辉's Blog 弱类型与强类型语言“=”号的不同以及引发的安全问题 - 龙辉's Blog XSS经典漏洞复现-手撕某非法获取个人信息网站 - 龙辉's Blog php7.2中each()函数被弃用的替换办法 - 龙辉's Blog 云签网站问题反馈贴 - 龙辉's Blog 高三第一次考试总结 - 龙辉's Blog
php获取客户端ip以及ip伪造 - 龙辉's Blog
博主: Tinker-站长 · 2022-08-03 · via 龙辉's Blog - 学习笔记

php获取客户端ip以及伪造ip伪造

获取ip使用场景比较多,如投票、获取发言者的发言所在省份、对用户ip做登记等.本文主要介绍三个php超全局变量获取客户端ip的方法以及存在的问题.

声明:因为使用了cdn之后无法正常的获取客户端ip,则做此次记录,仅供学习交流,请不要用于非法用途,由此教程产生的法律问题均与本人无关!

0x01

直接上代码

<?php
//获取客户端ip,但是如果使用了代理,则获取到的是代理之后的ip
echo '1-'.getenv("REMOTE_ADDR").'</br>';
//获取的是客户端访问时header头部带的ip,可任意伪造
echo '2-'.getenv("HTTP_CLIENT_IP").'</br>';
//客户端真实 IP ,但是如果没有使用代理就不返回真实ip
echo '3-'.getenv("HTTP_X_FORWARDED_FOR").'</br>';

0x02

1、如果客户端使用了透明代理,则getenv("REMOTE_ADDR")返回的是最后一个代理服务器 IP.getenv("HTTP_X_FORWARDED_FOR")返回的是客户端代理之前的ip地址,即客户端真实ip,又浏览器head头部发送.

2、若用户使用普通匿名代理服务器
则getenv("REMOTE_ADDR") = 最后一个代理服务器 IP
getenv("HTTP_X_FORWARDED_FOR")= 代理服务器 IP

3、用户使用欺骗性代理服务器,
getenv("REMOTE_ADDR") = 代理服务器 IP
getenv("HTTP_X_FORWARDED_FOR") = 随机IP

4、用户使用高匿名代理
getenv("REMOTE_ADDR") = 代理服务器 IP
getenv("HTTP_X_FORWARDED_FOR") 返回空或unkown

由于getenv("HTTP_X_FORWARDED_FOR")和getenv("HTTP_CLIENT_IP")获取的IP是由浏览器传过来的,所以可以不使用代理直接进行伪造.代码如下

<?php
//使用curl伪造head信息发送欺骗服务器。随机生成
$ip = mt_rand(1,254).mt_rand(0,254).mt_rand(0,254).mt_rand(0,254);
$header = array(
'CLIENT-IP:'.$ip,
'X-FORWARDED-FOR:'.$ip,
);
//伪造浏览器信息
$info =array('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; InfoPath.2; AskTbPTV/5.17.0.25589; Alexa Toolbar)','Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; Alexa Toolbar)','Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1; SV1)');


 $ch = curl_init();//创建一个curl句柄
 curl_setopt ($ch, CURLOPT_URL, 'http://www.baidu.com/');//列如欺骗百度
 curl_setopt ($ch, CURLOPT_HTTPHEADER, $header);//发送header信息
 curl_setopt ($ch, CURLOPT_REFERER, "http://www.baidu.com/");//可任意伪造来源
 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt ($ch, CURLOPT_USERAGENT, "$info");//伪造浏览器信息
 curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 3); 
 $contents = curl_exec($ch); //执行句柄
 curl_close($ch);//结束
 var_dump($contents);//打印变量结构

只针对getenv("HTTP_X_FORWARDED_FOR")getenv("HTTP_CLIENT_IP")函数有效.getenv("REMOTE_ADDR")获取的是客户端ip,若使用代理则为代理ip。

0x03

若网站使用了cdn,则getenv("REMOTE_ADDR")返回的是提供cdn商的ip地址。则使用cdn商提供的方法进行获取。
使用了cdn之后获取到的ip
cdn

0x04

作用:例如 1、 以前的很多投票是通过ip来判断人数的,所以可以达到刷票,如果通过getenv("REMOTE_ADDR")获取ip地址,则可以http代理欺骗,关于http代理,百度一下就有很多提供的。
2、有的网站是通过getenv("HTTP_X_FORWARDED_FOR")获取ip进行记录用户ip地址并且在后台输出,则可通过将ip地址改为自己构建的js代码,通过xss攻击,可以获取到管理员的cookie,实现无密码登录后台,然后getshell 拿到服务器。当然不是说说这么简单,中间还有很多防火墙.
3、...还有很多场景我就不一一列出,就提供一个大概的思路和方法


版权属于:龙辉博客

本文链接:https://blog.eirds.cn/391.html

如果没有特别声明则为本博原创。转载时须注明出处及本声明!

赞赏作者

如果觉得我的文章对你有用,请随意赞赏