当前位置: 首页 > wzjs >正文

o2o网站建设哪家好网络营销的四种方式

o2o网站建设哪家好,网络营销的四种方式,中企动力做的网站升级收费,长沙网页设计培训价格前言 讲了FastJson反序列化的原理和利用链,今天讲一下Shiro的反序列化利用,这个也是目前比较热门的。 原生态反序列化 我们先来复习一下原生态的反序列化,之前也是讲过的,打开我们写过的serialization_demo。代码也很简单&…

前言

讲了FastJson反序列化的原理和利用链,今天讲一下Shiro的反序列化利用,这个也是目前比较热门的。

原生态反序列化

我们先来复习一下原生态的反序列化,之前也是讲过的,打开我们写过的serialization_demo。代码也很简单,先是读取一个文件,接着对其进行反序列化,最后再一个main函数去调用这个方法。

我们利用ysoserial这个工具生成一个dnslog利用链,写入到urldns.txt文件中。

运行上面的代码,对urldns.txt文件进行反序列化,可以看到在dnslog平台有回显。

shiro反序列化

现在开始说一下Shiro的反序列化,Shiro框架提供了记住密码的功能cookie含有rememberMe字,⽤户登陆成功后会⽣成经过加密并编码的cookie,在服务端接收cookie值后,Base64解码–>AES解密–>反序列化。攻击者只要找到AES加密的密钥,就可以构造⼀个恶意对象,对其进⾏序列化–>AES加密–>Base64编码,然后将其作为cookie的rememberMe字段发送,Shiro将rememberMe进⾏解密并且反序列化,最终造成反序列化漏洞。

网上找的一个Shiro demo,下载好就直接部署就行,具体如何部署就不说了,网上有。

登录抓包看一下,发现确实存在rememberMe字段,而且后面有一大堆值。

现在来分析一下,打开我们的login.jsp,可以看到是调用了include.jsp的。

接着去打开include.jsp看看,这里是引用了org.apache.shiro.SecurityUtils这个类。

可以在相应的位置找到这个类,其实它就是一层一层的引用的。

我们全局搜 rememberMeSuccessfulLogin,找到之后下个断点,来一步一步跟进看看是咋回事。

如果你搜不到的话,来到Maven这里把这个包下载一下就行。

接着以调试模式运行Tomcat,此时我们在登录页面进行登录,就可以看到已经代码断下来了。

开始步入,来到这里可以看到进行了一个判断,如果RememberMeManager的值不为空就进入,也就是说我们进行登录要勾选 “记住我” 才会触发判断。

我们一直步入,因为前面都是一些代码逻辑,没啥看的,代码到这里就出现了序列化,principals 的值就是我们的用户名 root,这里对 root 进行了序列化操作。还对 getCipherService() 进行了判断,如果不为空就进行加密,从字面来看这个方法应该是获取密码的。

接着往下跟进,这里调用了getSerializer().serialize() 进行序列化。

跟进到这个serialize 方法里面,里面的代码是不是和我们上面原生态的序列化差不多,这里调用了 ObjectOutputStream()这个类,并且还调用了这个类里面的 writeObject() 方法对 o 进行序列化,而 o 则是我们的用户名 root 。

这个 root是我们可控的,那么就基本满足了反序列漏洞的条件了。

接着再继续跟进看看,来到了加密这里,我们要知道是啥加密类型才能进一步的利用。

下面参数这里有个key。

展开参数 this ,发现modeName的值是CBC,那么可以猜测这是AES-CBC加密方式。

这个transformationString 就更进一步证实了我们的猜想。

跟到现在基本就可以确定。

发送数据的时候:数据—>序列化—>aes加密—>base64编码

接受数据的时候:base64解码—>aes解密—>反序列化—>数据

base64是可逆的,反序列的数据是可控的,那么我们现在只需要知道AES的Key、iv、mode,是不是就能构造出恶意的 RememberMe 的值了。

上面跟踪的时候我们获取到了Key和 iv 这两个值,但这里只是Ascii码,直接叫AI写个脚本把Ascii码变成base64字符串就行。其上上面说的先AES加密再base64加密,其实是不严谨的,base64只是编码了我们的Key,并没有对AES加密之后的数据进行base64编码。

我们用ysoserial 生成一个dnslog利用链。

再用下面这个脚本对我们的链条进行aes加密,Key是我们上面转换过来的。

from Crypto.Cipher import AES
import uuid
import base64//若提示ModuleNotFoundError: No module named 'Crypto'
//需安装pycryptodome库:pip3 install pycryptodomedef convert_bin(file):with open(file, 'rb') as f:return f.read()def AES_enc(data):BS = AES.block_sizepad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()key = "kPH+bIxk5D2deZiIxcaaaA=="mode = AES.MODE_CBCiv = uuid.uuid4().bytesencryptor = AES.new(base64.b64decode(key), mode, iv)ciphertext = base64.b64encode(iv + encryptor.encrypt(pad(data))).decode()return ciphertextif __name__ == "__main__":data = convert_bin("urldns.txt")print(AES_enc(data))

生成加密之后的数据。

替换掉原本的值进行发送。

成功解析。

上面的DNS链条只能访问一下dnslog,如果想要执行命令的话,要用到CC链才行,这个下次详细的讲。

总结

最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

http://www.dtcms.com/wzjs/14831.html

相关文章:

  • 保洁公司哪家好威海seo公司
  • 手机上怎么支持wap网站搜索seo引擎
  • 机械行业做网站百度账户托管运营
  • 做地方旅游网站目的意义头条权重查询站长工具
  • 昆明网站建设工作室有哪些线上营销方式主要有哪些
  • 网站开发环境lmnp网络推广服务协议
  • 海南住房和城乡建设厅网站登陆中国站长工具
  • mysql做网站怎么查看数据库window优化大师官网
  • 延安免费做网站西安网站建设网络推广
  • 做网站需要做数据库网站怎么优化到首页
  • 专业网站建设定制公司推广活动策划方案范文
  • 微商平台都有哪些搜索引擎优化代理
  • 开发app的平台网站建设seo
  • 怀化职院网站app推广拉新工作可靠吗
  • 网站头部导航样式如何设计与制作网页
  • 旅游网站开发方案独立站建站平台有哪些
  • 动态网站开发课程报告推广链接让别人点击
  • 网站建设注意事项厦门seo公司到1火星
  • 公司做网站自己可以做免费网站seo诊断
  • 海外推广是什么工作无锡seo优化公司
  • 织梦网站栏目如何做下拉河源新闻最新消息
  • 网站无法打开网页是怎么回事最新的疫情最新消息
  • 免费在线网站建设电脑培训学校网站
  • 邢台市有几个区几个县湖南优化推广
  • 如何接北京网站制作网络营销服务策略
  • 响应式网站底部怎么做公司想做网络推广贵不
  • 日本雅虎网站如何做推广google seo 优化教程
  • wordpress帮助手册seo网站培训班
  • 青海学会网站建设公司附近电脑培训班零基础
  • PHP是做网站最好的网络营销师是做什么的