sql注入之:(X-Forwarded-For)
HTTP X-Forwarded-For 介绍
X-Forwarded-For 是一个 HTTP 扩展头部。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。
X-Forwarded-For 请求头格式非常简单,就这样:
X-Forwarded-For: client, proxy1, proxy2
XFF 的内容由「英文逗号 + 空格」隔开的多个部分组成,最开始的是离服务端最远的设备 IP,然后是每一级代理设备的 IP。
如果一个 HTTP 请求到达服务器之前,经过了三个代理 Proxy1、Proxy2、Proxy3,IP 分别为 IP1、IP2、IP3,用户真实 IP 为 IP0,那么按照 XFF 标准,服务端最终会收到以下信息:
X-Forwarded-For: IP0, IP1, IP2
Proxy3 直连服务器,它会给 XFF 追加 IP2,表示它是在帮 Proxy2 转发请求。列表中并没有 IP3,IP3 可以在服务端通过 Remote Address 字段获得。我们知道 HTTP 连接基于 TCP 连接,HTTP 协议中没有 IP 的概念,Remote Address 来自 TCP 连接,表示与服务端建立 TCP 连接的设备 IP,在这个例子里就是 IP3。
Remote Address 无法伪造,因为建立 TCP 连接需要三次握手,如果伪造了源 IP,无法建立 TCP 连接,更不会有后面的 HTTP 请求。不同语言获取 Remote Address 的方式不一样,例如 php 是 $_SERVER["REMOTE_ADDR"],Node.js 是 req.connection.remoteAddress,但原理都一样。
本次实验,用到了acunetix,可以先下载再安装
下载地址:https://download.csdn.net/download/lm19770429/12458538
密码是大小写字母数字特殊字符选3种,>8位
注意安装后的提示:
Created symlink /etc/systemd/system/multi-user.target.wants/acunetix.service → /etc/systemd/system/acunetix.service.
Please visit https://kali:3443/ to access Acunetix UI
此时还没有破解,破解过程参考以下:
先备份一下可执行文件wvsc
mv /home/acunetix/.acunetix/v_200217097/scanner/wvsc /home/acunetix/.acunetix/v_200217097/scanner/wvsc.bak
拷贝破解包的wvsc到scanner目录:
cp wvsc /home/acunetix/.acunetix/v_200217097/scanner/
chmod +x /home/acunetix/.acunetix/v_200217097/scanner/wvsc
拷贝授权文件到data/license/
cp license_info.json /home/acunetix/.acunetix/data/license/
systemctl restart acunetix
# 安装前必须卸载之前的版本,如果没有请跳此步
systemctl stop acunetix.service
rm -rf /home/acunetix/
userdel acunetix
# 安装依赖
yum -y install libXrender libXext libXcursor libXfixes libXcomposite libXrandr libXdamage libXtst libXi cups-libs dbus-glib libXrandr libXcursor libXinerama cairo cairo-gobject pango libXScrnSaver libatk-bridge-2.0.so.0 gtk3 bzip2
# 开始安装
chmod +x acunetix_12.0.190902105_x64.sh
./acunetix_12.0.190902105_x64.sh
# 解决`GLIBCXX_3.4.21' not found错误方法
# wget https://linkingvision.com/download/h5stream/centos7/buildgcc.sh
wget https://linkingvision.com/download/h5stream/centos7/libstdc%2B%2B.so.6.0.21
cp libstdc++.so.6.0.21 /usr/lib64/libstdc++.so.6
# 解决libc.so.6: version `GLIBC_2.18' not found问题
https://www.jianshu.com/p/513e01fbd3e0
# 解决破解过段时间过期问题 未验证,仅供参考。
rm /home/acunetix/.acunetix/data/license/wa_data.dat
touch /home/acunetix/.acunetix/data/license/wa_data.dat
chattr +i /home/acunetix/.acunetix/data/license/wa_data.dat
nmap -sV IP地址
发现只有80端口开放,http协议
nikto -host IP:port 进行扫描
发现有一个登录界面:首先猜猜弱口令:123456 admin。本例中失败!!!
利用acunetix进行web安全漏洞扫描:对整个IP地址扫描
发现sql盲注漏洞如下,红字是高危漏洞点击看详情
sqlmap -u http://10.10.10.129/ --headers="X-Forwarded-For:*" --dbs --batch
经过以下一系列破解得到
登录admin/login.php