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

推荐订阅源

T
Tenable Blog
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
H
Help Net Security
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
量子位
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
AI
AI
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
U
Unit 42
V2EX - 技术
V2EX - 技术
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
博客园 - Franky
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
B
Blog RSS Feed
N
News | PayPal Newsroom
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网

龙辉's Blog

对学某通的登录逆向分析 - 龙辉's Blog 天方云签程序开源 - 龙辉's Blog 蓝桥杯省赛Web题解及知识点复习 - 龙辉's Blog CTFSHOW-菜狗杯(部分WP) - 龙辉's Blog 记录一次入侵某钓鱼盗号网站的过程 - 龙辉's Blog 贵州师范大学抢课脚本-正方教务系统V8.0.0 - 龙辉's Blog 简单实现每日健康自动打卡 - 龙辉's Blog 弱类型与强类型语言“=”号的不同以及引发的安全问题 - 龙辉's Blog XSS经典漏洞复现-手撕某非法获取个人信息网站 - 龙辉's Blog php7.2中each()函数被弃用的替换办法 - 龙辉'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

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

赞赏作者

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