墨者学院-X-Forwarded-For注入漏洞实战

墨者学院-X-Forwarded-For注入漏洞实战,第1张

继续研究SQL注入相关题型!!!今天的SQL注入题目摆脱了既往的SQL语句,主要考查的是HTTP请求头中XFF的伪造和应用,是一道借用XFF来爆破数据库、表、列以及列值的题目!
附上题目链接:https://www.mozhe.cn/bug/detail/QWxmdFFhVURDay90L0wxdmJXSkl5Zz09bW96aGUmozhe
首先,打开题目,映入眼帘的是一个登录表单,先输入账户为admin,密码为admin进行登录尝试,出现了alertd窗,仔细观察d窗会发现类似IP地址格式的110.243.1.106数据存在,初步猜测这是服务端记录并显示了客户端的IP地址。





服务端获取客户端IP地址,常见的三种方法:
(1)remote_addr:指的是当前直接请求的客户端IP地址,存在于TCP请求中,是HTTP协议传输的时候自动添加,不受请求头header的控制。


因此,当客户端与服务器之间不存在任何代理的时候,通过remote_addr获取客户端IP地址是最准确,也是最安全的,重点强调的是remote_addr是不可伪造的。



(2)X-Forwarded-For:即XFF,是代理服务器在请求转发时添加上去的。


如果客户端和服务器之间存在代理服务器,那么通过remote_addr获取的IP就是代理服务器的地址,并不是客户端真实的IP地址。


因此,需要代理服务器(通常是反向代理服务器)将真实客户端的IP地址转发给服务器,转发时客户端的真实IP地址通常就存在于XFF请求头中。



(3)client-ip同XFF,也是代理服务器添加的用于转发客户端请求的真实IP地址,同样保存在请求头中。



可以看出,在服务端获取客户端IP地址的这三种方法中,XFF和client-ip是可以伪造的。


于是应用burpsuit的Proxy模块进行通信拦截,发送给Repeater模块,通过测试判断出服务端获取客户端IP地址的方法,并检测是否能够进行注入。





在未添加其他头选项状态下的Response内容中,清晰显示了刚才乱码的alert内容。


与猜测大致相符,服务端的确存在记录并显示客户端IP地址的行为。



下一步,根据已知服务端获取客户端的方法知识以及题目(X-Forwarded-For注入漏洞实战)的提示,通过在请求头header中增添XFF选项及内容,检测服务端是否可以通过XFF获取客户端IP地址并判断XFF是否可以作为注入点。





可以看出,服务端可以通过客户端设置XFF获取IP地址,并将其回显到alert中,因此XFF存在注入点。



第三,应用sqlmap对服务端的数据库、表、列以及列值进行爆破。



在应用sqlmap进行爆破前,先将Request内容采用raw格式进行复制并保存为request.raw文件,修改XFF内容为*。




(1)sqlmap结合request.raw文件对数据库进行爆破,发现名为webcalendar的数据库。




(2)根据获取到的数据库信息,对webcalendar数据库名下的表进行爆破,发现名为user的表。




(3)根据获取到的数据表内容,对名为user数据表中的列进行爆破,发现了名为username和password列。




(4)根据获取到的列名,对password和username列的列值进行爆破,发现了一组由用户名和密码组成的数据。




最后,应用获取到的账户和密码进行表单登录,得到题目要求的key值。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/567715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存