Vulhub漏洞复现之Django (小于2.0.8)任意url跳转漏洞(CVE-2018-14574)

我是啊锋,一个努力的学渣,作为一个刚进入安全大门的小白,我希望能把自己所学到的东西总结出来,分享到博客上,可以一起进步,一起交流,一起学习。

前文:

名字雷同但差个n的两种类型漏洞环境靶机:vulnhub与vulhub的区别

Vulhub漏洞复现之Dns域传送漏洞


什么是任意url跳转漏洞:

服务端未对传入的跳转url变量进行检查和控制,可能导致可恶意构造任意一个恶意地址,诱导用户跳转到恶意网站。
由于是从可信的站点跳转出去的,用户会比较信任
假如http://www.aaa.com/acb?Url=http://www.zhapian.com
(只要将该链接发给用户诱导其点击,即可实现漏洞目的)


漏洞危害

  • 通过转到恶意网站欺骗用户输入用户名和密码盗取用户信息
  • 或欺骗用户进行金钱交易

Django (<2.0.8)任意url跳转漏洞原因:

Django的配置下,如果匹配上的URL路由中最后一个是/,而用户访问的时候没加/,则Django的配置会转移到带/的请求中。(由配置项中的django.middleware.common.CommonMiddleware,APPEND_SLASH来决定)。

也就是说当setting中配置了django.middleware.common.CommonMiddleware且

APPEND_SLASH为True时漏洞就会触发,而这两个配置时默认存在的

漏洞进攻复现

vulhub目录在

cd vulhub/django/CVE-2018-14574

对靶场进行编译:docker-compose build
运行靶场:docker-compose up -d
在这里插入图片描述
环境开启后,进攻复现
在这里插入图片描述
只要在url后加上//想跳转的网页,即可实现跳转,比如中国黑客联盟网页
在这里插入图片描述

192.168.0.99:8000//www.chinahacker.com
连接点击后即可实现跳转

在这里插入图片描述

抓包分析:

因为漏洞环境开启端的是8000端口,所以burp要设置监听8000端口
在这里插入图片描述
原本页面的包
加上text请求后发送
在这里插入图片描述
.如果漏洞存在的话,说明APPEND_SLASH=True并且初始URL没有以斜杠结尾,并且在urlpatterns中找不到它,则通过在末尾附加斜杠来形成新的URL。如果在urlpatterns中找到此新URL,则将HTTP重定向返回到此新URL。

换句话说就是对那些末尾没加/的url自动填补/然后重新发起请求
所以如果在末尾加上了/是不会跳转成功的

在这里插入图片描述
访问http://我靶机IP:8000// www.chinahacker.com,即可返回是301跳转码

在这里插入图片描述

最后别忘记关闭漏洞环境

docker-compose down

参考文章:
https://www.dazhuanlan.com/2019/12/18/5df9869794445/
https://xz.aliyun.com/t/3302
https://blog.csdn.net/jiangbuliu/article/details/94436745

发布了27 篇原创文章 · 获赞 43 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41598660/article/details/104056657