Pwn2OwnAustin2021CiscoRV34xRCE漏洞链复现
漏洞分析CVE-2022-20705 Improper Session Management VulnerabilityCVE-2022-20707 Command Injection参考链接前言
这个RCE漏洞利用链的实现是由几个逻辑洞的结合而导致的,这几天我花了一些时间复现了一遍,在此记录一下。固件解压
我下载的是 RV345 v1.0.03.24,从官网下载到压缩包解压之后可以看到它的 rootfs 是 ubi 格式的 img。之前我都是使用 kali里的 binwalk 对其进行解压可以直接得到解压之后的文件系统。但是由于前几天我的虚拟机坏了,不得不进行重装,但是我还没有装 kali。故找了一下提取 ubi 格式的方式。在 github 上有一个项目:https://github.com/nlitsme/ubidump,通过里面的 ubidump.py 可以很轻松地提取出 ubi 格式的文件。命令如下:python3 ubidump.py -s . 0.ubi 漏洞分析CVE-2022-20705 Improper Session Management Vulnerability
CVE-2022-20705 Improper Session Management Vulnerability,是由于 nginx 的配置不当导致的。nginx 的配置文件是 /etc/nginx/nginx.conf,如下user www-data; worker_processes 4;error_log /dev/null;events { worker_connections 1024; }http { access_log off; #error_log /var/log/nginx/error.log error; upstream jsonrpc { server 127.0.0.1:9000; } upstream rest { server 127.0.0.1:8008; } # For websocket proxy server include /var/nginx/conf.d/proxy.websocket.conf; include /var/nginx/sites-enabled/*; }
可以发现它又加载了: /var/nginx/conf.d/proxy.websocket.conf 和 /var/nginx/sites-enabled/ ,但是固件解压出来的 rootfs 里的 var 目录有些问题,所以笔者只能根据别人的文章找一下漏洞发生的配置文件。结合 rest.url.conf 和 proxy.conf 来看。location /api/ { proxy_pass http://rest; include /var/nginx/conf.d/proxy.conf; }location /api/operations/ciscosb-file:file-copy { proxy_pass http://rest; include /var/nginx/conf.d/proxy.conf; proxy_read_timeout 3600; proxy_send_timeout 3600; }location /api/operations/ciscosb-file:form-file-upload { set $deny 1; if ($http_authorization != "") { set $deny "0"; } if ($deny = "1") { return 403; } upload_pass /form-file-upload; upload_store /tmp/upload; upload_store_access user:rw group:rw all:rw; upload_set_form_field $upload_field_name.name "$upload_file_name"; upload_set_form_field $upload_field_name.content_type "$upload_content_type"; upload_set_form_field $upload_field_name.path "$upload_tmp_path"; upload_aggregate_form_field "$upload_field_name.md5" "$upload_file_md5"; upload_aggregate_form_field "$upload_field_name.size" "$upload_file_size"; upload_pass_form_field "^.*#34;; upload_cleanup 400 404 499 500-505; upload_resumable on; }location /restconf/ { proxy_pass http://rest; include /var/nginx/conf.d/proxy.conf; }location /restconf/operations/ciscosb-file:file-copy { proxy_pass http://rest; include /var/nginx/conf.d/proxy.conf; proxy_read_timeout 3600; proxy_send_timeout 3600; }proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Authorization $http_authorization; proxy_set_header Accept-Encoding ""; proxy_set_header Connection ""; proxy_ssl_session_reuse off; server_name_in_redirect off;
如果我们请求中 Authorization 不为空,此时 set $deny "0",就可以向下调用 upload 模块。它会在调用 /form-file-upload前,把文件上传到 /tmp/upload 下。并且由于没有设置 level,它的存储格式类似 /tmp/upload/0000000001。至此我们可以实现任意文件上传至 /tmp/upload。
我们接着向下分析,可以在 rootfs/etc/nginx/conf.d 下找到 web.upload.conf 如下:location /form-file-upload { include uwsgi_params; proxy_buffering off; uwsgi_modifier1 9; uwsgi_pass 127.0.0.1:9003; uwsgi_read_timeout 3600; uwsgi_send_timeout 3600; }location /upload { set $deny 1; if (-f /tmp/websession/token/$cookie_sessionid) { set $deny "0"; } if ($deny = "1") { return 403; } upload_pass /form-file-upload; upload_store /tmp/upload; upload_store_access user:rw group:rw all:rw; upload_set_form_field $upload_field_name.name "$upload_file_name"; upload_set_form_field $upload_field_name.content_type "$upload_content_type"; upload_set_form_field $upload_field_name.path "$upload_tmp_path"; upload_aggregate_form_field "$upload_field_name.md5" "$upload_file_md5"; upload_aggregate_form_field "$upload_field_name.size" "$upload_file_size"; upload_pass_form_field "^.*#34;; upload_cleanup 400 404 499 500-505; upload_resumable on; }
我们可以发现其对 /upload 进行了 $cookie_sessionid 的检验,但是并没有对 /form-file-upload 进行检验。我们看一下 /form-file-upload 的后端处理程序。启动脚本 (uwsgi-launcher) 如下:#!/bin/sh /etc/rc.commonexport UWSGI_PLUGIN_DIR=/usr/lib/uwsgi/pluginsstart() { uwsgi -m --ini /etc/uwsgi/jsonrpc.ini & uwsgi -m --ini /etc/uwsgi/blockpage.ini & uwsgi -m --ini /etc/uwsgi/upload.ini & }stop() { killall -9 uwsgi }
我们再去找一下 /etc/uwsgi/upload.ini[uwsgi] plugins = cgi workers = 1 master = 1 uid = www-data gid = www-data socket=127.0.0.1:9003 buffer-size=4096 cgi = /www/cgi-bin/upload.cgi cgi-allowed-ext = .cgi cgi-allowed-ext = .pl cgi-timeout = 300 ignore-sigpipe = true
从上述文件中我们可以知道 /form-file-upload 它对应的后端处理程序是 /www/cgi-bin/upload.cgi。因此我们可以无条件访问 upload.cgi。
同时上述配置文件中我们可以看到检查了 /tmp/websession/token/$cookie_sessionid 文件是否存在。但是存在缺陷,就是这里的 $cookie_sessionid 是用户在 http 请求中传进去的一个值,它并没有检查是否存在 ../../ ,也就是说我们可以通过跨目录来导致授权绕过。如:我们可以传递 ../../../etc/firmware_version。
同时也可以看到在 upload.cgi 里对 sessionid= 进行了检查,限制了它的字符,但是并没有考虑到传多个 sessionid= 的情况。因为这里的 sessionid= 是遍历 HTTP_COOKIE 并且取出它最后一个 sessionid= 作为实际的 sessionid= 使用,所以我们可以传两个 **sessionid=**。前一个用来绕过 web.upload.conf 里的判断,后一个当作正常的数据用来通过 upload.cgi 的判断。这样也可以实现无条件访问 upload.cgi。
我们接着看 upload.cgi
传入适当的参数可以使得我们有能力任意文件移动到 /tmp/www 下,通过这两个漏洞我们也可以伪造出一个 session。CVE-2022-20707 Command Injection
我们继续查看 upload.cgi。
这个漏洞可以使得任意命令执行。参考链接https://bestwing.me/Pwning%20a%20Cisco%20RV340%20%20%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%EF%BC%88CVE-2022-20705%20%E5%92%8C%20CVE-2022-20707.htmlhttps://blog.relyze.com/2022/04/pwning-cisco-rv340-with-4-bug-chain.htmlhttps://paper.seebug.org/1890/https://onekey.com/blog/advisory-cisco-rv34x-authentication-bypass-remote-command-execution/https://nosec.org/home/detail/4985.html
from https://www.secpulse.com/archives/197154.html
八一特辑钦岛早闻文图刘基地四年前的秋天,天刚蒙蒙亮,这个与陆路隔绝安宁一夜的小岛又开始了新的一天。头天上岛的我,此时带上随身摄像武器出门了。沿着高低不平的海边水泥路,徜徉在小岛朦胧的晨霭中。眺望天
大美新疆(22241)新疆是一个神奇神美神秘的地方。新疆很大,占全国面积的六分之一,有六个山东那么大。新疆地形特点是山脉与盆地相间排列,盆地被高山环抱,俗喻三山夹两盆。北为阿尔泰山,南为昆仑山,天山横亘
两名登山队员在吉尔吉斯斯坦列宁峰不幸遇难,一名来自俄罗斯综合俄罗斯媒体和吉国媒体的报道两名登山队员在登顶列宁峰的时候发生了意外,不幸遇难身亡。分别是一名38岁的俄罗斯公民和一名41岁的吉尔吉斯斯坦人。遇难的位置是列宁锋海拔6100米处。
西部印象丨户外急救实用方法培训户外急救实用方法培训户外徒步活动严格意义上来讲属于一项户外体育运动,经常处在相对有风险的野外丛林,悬崖峭壁,路况复杂多样,这样的客观环境势必增加事故受伤的发生率。作为一个专业专注负
星星故乡8月28日引言见字如面,感谢你能够关注星星的故乡宁夏。为了让你对星空有更多的了解,我们特意开设了星空发布栏目。在这个栏目中我们会给你提供一周的星空观测目标,提前告诉你流星雨日食等这些天象,给
世界这么大,我想出去看一看随着近几年旅游业的兴起,世界这么大,我想出去看一看这句话也成为了大部分人的人生座右铭。说到出国旅游,那肯定是要选择性价比高的地方,而泰国这个美食多元化的国家受到了来自世界各地的吃货
机票燃油附加费年内两连降,9月5日起单程降低20元机票燃油附加费迎今年第二次下调。8月31日,记者从在线旅游平台去哪儿网获悉,其接到多家国内航空公司消息自2022年9月5日(出票日期)起,调整国内航班燃油附加费征收标准成人旅客,8
芯片产能即将过剩,中芯国际却515亿扩产28nm,原因是什么?不管大家承认不承认,也不管晶圆厂们开心不开心,当前芯片的产能已经趋向于饱和了,晶圆产能过剩,确实很快就要来了。按照第三方机构的预计,今年全球芯片销量增速可能只有去年一半,明年增速可
须弥地区即将到来,原神3。0版本8月24日正式上线IT之家8月13日消息,在今日的前瞻活动上,米哈游正式公布了原神3。0版本千朵玫瑰带来的黎明,新版本将于8月24日上线。原神3。0版本PV千朵玫瑰带来的黎明在山峦采撷映满眼帘的绿意
中国最缺的光刻机龙头,竟是爽文男主现实版中国现在正在大力发展什么产业?新能源汽车和半导体。这两个产业哪个更难?半导体。半导体中什么技术最难?光刻机。下面是制造芯片需要用到的设备,其中木板越高代表中国的这项技术发展越好。制
为什么怀孕吃螃蟹会流产,原因可能是这个怀孕是一件大事,很多孕妈都有体会,这不敢吃那不敢碰,特别是临近中秋,螃蟹就像一个恶魔,让孕妈们敬而远之。首先,螃蟹并不是备孕怀孕的禁忌品,为什么吃螃蟹为什么会流产,原因有3点1螃蟹