Zyxel 防火墙未经身份验证的远程命令注入(CVE-2022-30525)
漏洞说明ZyXEL USG FLEX 等都是中国台湾合勤(ZyXEL)公司的防火墙产品。2022年5月12日, Zyxel发布安全公告,修复了一个存在于部分防火墙版本的CGI程序中的命令注入漏洞。漏洞编号:CVE-2022-30525,漏洞威胁等级:严重,漏洞评分:9.8。
该漏洞存在于某些Zyxel防火墙版本的 CGI 程序中,允许在未经身份验证的情况下在受影响设备上以nobody用户身份执行任意命令。
影响范围ATP系列固件:5.10-5.21 Patch 1
VPN系列固件:4.60-5.21 Patch 1
USG FLEX 100(W)、200、500、700:5.00-5.21 Patch 1
USG FLEX 50(W)/USG20(W)-VPN:5.10-5.21 Patch 1
漏洞复现出现漏洞的文件为 lib_wan_settings.py 下的 setWanPortSt 方法,从源码里可以看到拼接的参数为 mtu , 随后直接 os.system 命令执行
手工验证:
POC:
其中mtu参数后面为要执行的命令
POST /ztp/cgi-bin/handler ...
git commit 提交规范
简介commit message 应该清晰明了,说明本次提交的目的。而且多人协作的时候,有问题也方便查看提交日志
目前使用最广的写法是Angular 规范(https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#heading=h.greljkmo14y0),它比较合理和系统化,并且有配套的工具
Commit message 作用格式化的Commit message,有几个好处。
(1)提供更多的历史信息,方便快速浏览。
比如,显示每次发布后的变动,每个commit占据一行。你只看行首,就知道某次 commit 的目的。
(2)可以过滤某些commit(比如文档改动),便于快速查找信息。
比如,下面的命令仅仅显示本次发布新增加的功能。
git log <last release> HEAD --grep feature
(3)可以直接从commit生成Change log。
Change Log 是发布新版本时,用来说明与上一个版本差异的文档。
Commi ...
Impacket库学习
简介Impacket是用于处理网络协议的Python类的集合。Impacket专注于提供对数据包的简单编程访问,以及协议实现本身的某些协议(例如SMB1-3和MSRPC)。数据包可以从头开始构建,也可以从原始数据中解析,而面向对象的API使处理协议的深层次结构变得简单。该库提供了一组工具,作为在此库找到可以执行的操作的示例。
安装pip install impacket # 这只会安装这个库,但是不能安装使用的其他库和例子
首先我们要先去GitHub下载源码,或者直接使用
git clone https://github.com/CoreSecurity/impacket.git
然后解压缩,进入impacket
cd impacket/
然后运行
python setup.py install
工具都在这个目录里impacket/examples
cd impacket/examples
Docker:
Build Impacket’s image:
$ docker build -t "impacket:latest" .
Using Impa ...
pycharm连接远程服务器docker容器运行和调试代码
方法一:通过ssh连接运行的docker容器跟连接普通Linux的ssh一样,可以参考如下文章:
https://blog.csdn.net/m0_60827485/article/details/122826522
方法2:pycharm连接docker镜像,pycharm运行代码再自动创建容器https://blog.csdn.net/Thanours/article/details/109271836
Kerberos入门
Kerberos协议简介Kerberos协议是一个专注于验证通信双方身份的网络协议,不同于其他网络安全协议的保证整个通信过程的传输安全,kerberos侧重于通信前双方身份的认定工作,确保通信双方身份的真实性和安全性,帮助客户端和服务端解决“证明我自己是我自己”的。
不同与其它网络服务,kerberos协议中不是所有的客户端向想要访问的网络服务发起请求,他就能够建立连接然后进行加密通信。而是在发起服务请求后必须先进行一系列的身份认证,包括客户端和服务端两方的双向认证,只有当通信双方都认证通过对方身份之后,才可以互相建立起连接,进行网络通信。即kerberos协议的侧重在于认证通信双方的身份,客户端需要确认即将访问的网络服务就是自己所想要访问的服务而不是一个伪造的服务器,而服务端需要确认这个客户端是一个身份真实,安全可靠的客户端,而不是一个想要进行恶意网络攻击的用户。
Kerberos协议解决什么问题简单地说,Kerberos提供了一种单点登录(SSO)的方法。考虑这样一个场景,在一个网络中有不同的服务器,比如,打印服务器、邮件服务器和文件服务器。这些服务器都有认证的需求。很自然的,不可 ...
http数据包浅析
抓取数据包随机抓取了bilibili的一段POST数据包:
发送HTTP请求一个请求由四个部份组成:请求行、请求头标、空行和请求数据。
每个部分之间用\r\n来隔开
1.请求行请求行由三个标记组成:请求方法、请求URL和HTTP版本,它们用空格分隔。
例如:
GET /index.html HTTP/1.1
HTTP 定义了8种可能的请求方法:
GET:检索URL中标识资源的一个简单请求HEAD:与GET方法相同,服务器只返回状态行和头标,并不返回请求文档POST:服务器接受被写入客户端输出流中的数据的请求PUT:服务器保存请求数据作为指定URL新内容的请求DELETE:服务器删除URL中命令的资源的请求OPTIONS:关于服务器支持的请求方法信息的请求TRACE:web服务器反馈Http请求和其头标的请求CONNECT :已文档化,但当前未实现的一个方法,预留做隧道处理
2.请求头标由关键字/值对组成,每行一对,关键字和值用冒号分享。请求头标通知服务器腾于客户端的功能和标识。典型的请求头标有:
User-Agent:客户端厂家和版本Accept:客户端可识别的内容类 ...
http1.0和http1.1和http2的区别
HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
HTTP1.0和1.1的差别1.长连接长连接(HTTP persistent connection ,也有翻译为持久连接),指数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。HTTP1.1支持长连接和请求的流水线(Pipelining)处理,并且默认使用长连接,如果加入”Connection: close “,才关闭。HTTP 1.0默认使用短连接,规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪,每个客户也不记录过去的请求。要建立长连接,可以在请求消息中包含Connection: Keep-Alive头域,如果服务器愿意维持这条连接 ...
CVE-2021-4034 polkit(pkexec)提权漏洞复现
漏洞描述Polkit(PolicyKit)是一个用于控制类Unix系统中控制系统范围权限的组件,它为非特权进程与特权进程的通信提供了一种有组织的方式。pkexec是Polkit开源应用框架的一部分,它负责协商特权进程和非特权进程之间的互动,允许授权用户以另一个用户的身份执行命令,是sudo的替代方案。
该漏洞是由于pkexec在处理传入参数的逻辑出现问题,导致环境变量被污染,最终交由pkexec代码逻辑执行实现客户机权限提升。有普通权限用户的攻击者通过执行漏洞文件,触发越界读写,从而在目标系统上造成权限提升。
影响范围由于 polkit 为系统预装工具,目前主流Linux版本均受影响。
不受影响的版本:
CentOS:· CentOS 6:polkit-0.96-11.el6_10.2· CentOS 7:polkit-0.112-26.el7_9.1· CentOS 8.0:polkit-0.115-13.el8_5.1· CentOS 8.2:polkit-0.115-11.el8_2.2· CentOS 8.4:polkit-0.115-11.el8_4.2Ubuntu:· Ub ...
Linux进程隐藏与检测
进程隐藏让管理员无法通过相关命令工具查找到你运行的进程,从而达到隐藏目的,实现进程隐藏。
网上很多方法基本都是通过如下方式来达到进程隐藏:
1.根据分组权限来实现不同用户组查看不同的进程权限。
2.修改内核,将需要隐藏的进程的进程pid改为0(task->pid = 0),因为ps,top命令不会显示进程id为0的进程。
3.修改内核,hook掉系统调用,在hook函数中修改逻辑判断已达到隐藏进程。
4.在用户态修改系统调用,从而隐藏进程(libprocesshider就是此方法)。
以下方法与上述无直接对应关系
第一种方法:libprocesshidergithub项目地址:https://github.com/gianlucaborello/libprocesshider
利用LD_PRELOA来实现系统函数的劫持,实现如下
# 下载程序编译 git clone https://github.com/gianlucaborello/libprocesshider.git cd libprocesshider/ && make # 移动文件到/usr/loc ...
Spring core远程代码执行漏洞(CVE-2022-22965)复现
漏洞简介springframework 是spring 里面的一个基础开源框架,主要用于javaee的企业开发。2022年3月30日,Spring框架曝出RCE 0day漏洞,攻击者通过该漏洞可远程实现对目标主机的后门文件写入和配置修改,继而通过后门文件访问获得目标主机权限。
漏洞成因该漏洞是由于 Spring Core 未对传输的数据进行有效的验证。Spring MVC 框架提供参数绑定功能,允许用请求中的参数绑定控制器方法中参数对象的成员变量。这一机制使得攻击者能够通过构造恶意请求获取 AccessLogValve 对象,继而注入恶意字段值触发 pipeline 机制,从而能够在未授权的情况下远程构造恶意数据,写入任意路径下的文件,从而导致远程代码执行。
影响版本Spring Framework 5.3.X < 5.3.18
Spring Framework 5.2.X < 5.2.20
利用条件
JDK 版本 >= 9
目标JDK9及其以上版本
使⽤了Spring-beans包;
使⽤了Spring参数绑定;
Spring参数绑定使⽤的是⾮基本参数类型 ...