安全研究
CVE-2023-49103 + CVE-2023-49105 ownCloud 信息泄漏 + 权限提升到 RCE 链:PHPinfo 暴露如何成为攻击者的钥匙
Thinking
2023-11-15
4 分钟阅读
研究档案
#漏洞分析#代码审计#Web安全
ownCloud 在 /settings/phpinfo 等少数端点暴露完整 PHPinfo 页面(CVSS 10),同时 WebDAV 处理的 URL 签名在用户未配置签名密钥时默认为空字符串,让攻击者能用任意用户名伪造请求(CVSS 9.8)——两个 CVE 组合形成完整攻击链:PHPinfo 暴露拿到 ImageMagick / GraphQL 信息 → WebDAV 签名伪造伪装任意用户 → 旧版 ImageMagick 漏洞触发 RCE。
Unlock to view this content.
ad8d9422966c73fee42096dad808c6448a272095349f41facc28f3d18d1ee66a0726fb5aaffd9271b6702e0ae53f6961031443030e63d37842b7356b4a67d1f44b648f709f84d99b1640e6f7a87a3d44129b61502fc0c5c728a88c67798e6cfb7bcb30fe880464fad1a2cf9635735fbd6e964b402ea4ed27e494f7c87c72f1c586b333a47062292625ea7240d146fb061f3975a6253d117e97272d7df5aa897fb9fe2c09034f658aae2645a68076992d7d9de07ae63e2fac88f85e475412988dfbc9247681c68b2a6b0cc05eab1ad3bf043d7fda3605dc07cab4c688c947ecdca8c70ceb8851bb1f590f8e7e90cc9cd26baef93279ec269d48f3192fcc19edf6ba2ce06c677a35d7ee7b4a226e3eef0c433068416c47122ee04ab91e2fe71882f8ea9e6649f1e828d377d580d1e7efa13ba0324b4a5f8cbc80a158b8b92dc1fa0677bbe1b4584dc870d9f297327c904595c2fbe043b2cbdadc18cb295c229a457937b1077171738352bbde7aa0ddffa0bcf4ddf73d51094c20897c4c7297fb72a58a201f08c51ce603a42ef48068579c602869da269f03e381bb1a378416f9b9614c6aa0ce4047cc221aaa40ea3bfe4ba1196299f15e9748af167f2421217126281c2f446f8890d1a4188db9104da2e0d50187f42a7169b4d53d7b9718473caddc999f7037db9c3d3d5f850fa2e55f6e58e3c7b4a5476cf0455334ba94617a952f176269a5d6d5301e871726366ea08d85c3e5f227cd8f0f1ffd7df7aef855765937727199dff4f25fa444ab9bb1045bba9f00faa753a4b364505db41ecaccff0273320d6146185d5e7521d145bb7b8aac9714961179a3cfec370861256d03c2af9c46bccd126851a021d74c4ecdca8e7e4a96d66e4a918e9f40ed98f9d89c68596d8e5cf174f690635040ff1d9b4a4ce2d6f942830e3670aefca1e5b7715377a881f40e8808b67a2c7c7be2f85cf87e4ec5689bb8d88381f6b6ab91d3393d5df32437c0c15defd90df86c023640eedfab40de15bb3e968184b5789d858b9679c6e972752919b83d5a5d338c506d23d79304b157ce0b7c5ab775f2b3ea34057e0e70cf3175021023becebea24e2aa9f096bb787f6908518da5650418ff0a298dcd6f2b1eee23eca7a3cc7d9c27dd9abeeafc0cf43ce21d30e33f50d025c506cdd7dcd20101715762ab5ab2d3cb6386889747b617df90999132d69ac5b330528a0341250065c951496f12596751b594ff8a08760e18cd7767d2c09346c39563768c96970fd9bea16c41e11758af722e2cf0231eec7aa0d0b7686008150bc8a888397eacb6062583c004c6c1ab1ca8527d99e4b3fe677c23a97ccd76d8bfe1bb234066f9ecbb59a5d9f7edd56a06f398d51fedf24416d2e5b1aa5460f21f49bd4a72557e2007fb5ecafd414a936f3b6f87e12365d3c8afc28825657ee8f53e6c57ebba96a6280faf7b3e4e1f161d3089c596bce3cf09e778d1632e96b19109aa4fe40937d7513e13903d795211da357e33403d6882776dfdaec519cbc3ec36b002f5dabc938aaaf40c70daab49bf22e1ebf691d6737f32ead8ed18c166839818a879a91355542468bd84d25cdc5f6d7af4f5a14cfdf1dc135e05ec2b12a900c74e9261c96cc1a6cac53c6583af2b69af387ae082bad8f467914432da29bfafd21b70d59f3413761c5104b5ecb44131961302ecab6445e57900ea219b10aecf04a946219c306756c066597ff50461d292226ac37f7d006158e79d701dc171985f2cea857c00fdb454e42ff295faad36dcd5a77b4a62737b879d3bf3f6822e4e3b34064adc439ed30766d17e6257b1b5a670c392bb28d2b532a5fa4bfa266b009009ac4f0203e8e8e916d2f6fa375c998f34f5b6e9f0db45b148309fe73fb33faa99cc9d064bab1b5fa4e57219c212ef3b95c340b553a35ee869080caa875d6f552f8ae8a42ad2e328f221e518814c03eafcdb31de86e75973143a39b7450871abdb76d4b55a0c6c182122450f1a521e58e110582ddb32e2f92c94d231193bc837c15dcef56af261c686368c2743eb01c9939da3521114d5488edfabd6e08a9b8db3062b64aa4a6b087071b4fea65260ebefe653bc40f4e66e995f6f80cda69635b9051117d67c6bbab93486d1843210a063d8170251a69c7b38fc08b1f148628db9b6488a29384bc1334a74fd62c815ba2e57265bacc427550b618d2dce121e38fbe4c7a4ec1d937db346efd27b798fa11f87b861e55d0114a7abc8b424dfda95c3e7c9400834faa887f9bbe9c1b3775cd4a9f3fe460532f91de096c0ef528abe4d4780d22ae58cacd970656d601715150269bbc7df0af88c71486f7f1a4e584585374e3d8347984cf8b540a4690b018c9a48d82a3ab2dfd394ad42f9b392f517f0516de11229678f1b6636be1e16a992a18f5c3f9ce5dab6e6fac905a47b95c5d1f9c164cf25e5d8b0b250a83e6b71914528848544183cf7bd4a845acf925c227e25b9dbdccd06036d0fc102fa943166723d7f668abf733fada22ef4ef3c88792e533552a050bef863a9118438eea1a93066de66729fb1fb8ecb4448bf68c0b0f04fc794b21639fabcd0b976486cf41fb493da91587e44568e5e8a48174f33f4e0b24e4389c3a7abe3766a1c0e06bb6004813aba7c5343b223b758a886e37ff10c78f4c4bb1b2411f20589d294ddf255983de8878b56d8d8f4d573bc5eeb81e37d3f3a8a33ca86fc0ec6dadebf0a79988445a9d64b22294df0abcca2db7c0fd28f1ec57f87481359ce3bbd34a6e9a09b5b963b5525e04d2482ae3e5946a4923e3ab4293a5820a9cdef09916992f238a4c8f5c1a2bc3a520637fc3f52eba3116fc3410db0b4777f8406968a2f6a40d5ab455c47137912fc12d4fa838ced3bd6d020fc04ab6ab54943bc76417ec909033e4623c3a5493f5b52a5dbc0ae9d2c876e12346bb4f447a2f2092d4e6b52e9fc42e75401df10d12de076bfbab6ffe822bfd92764800f2af2d6117c05ad1b2e36be7b00f6809cb635b2a5619215834b219ee8dc554c6f33415981f957fab7b709fcdac82f411bb35a22e2afec14faa9b567a48c26eb5ecd2bd79b09639713b8bc3c97cf875794760c6a9e074ee8c1cb6a03673831e6259945df21fe48a0f73aaecf152ed27c1a61ece6f24cc8f04b9682601ba24a5be86648350803aee29e2a284ea058ade3720b925fe4c0b5ddbd5da4b8809e1c5e0d478ec8bd47b5708611adae2839311ec597704487814f244b48222908025e4da9bfc90bbed10d9ed6618224bd55b90ca5c523bda794c66763261f53a8466608d2e0cf0335cf9e6f9614ca86d745b56280210e82e6271282c6de3d2dd70e89702749d1285a337b2cf2dc9a352c93cfe3770007c35a9aa4e4bb3c00b342c3f2d7f5860c78d8d643292c3c03d3eec1022fcab72243c85e79461d97d2cebf072f3857a3456917cb197887aef8391282a7c236fa3390d9b1fd19a671b8062d5e89942e2d822f23e3c94607048088d35bc96fb1fe7f0b35f1de4cedec9f2c299d9200f8aca173aeead345f321f86525dd9232d0182640a60131394b5e74027ea6cb3fd8ec503ed5fd30511c4f4701effb071278726a62e1e2e34e6d04bc7eb8767bf25a8db7fe12b3c0e8dde12527314c14d07dd7657e12cd361c5a9b27fafe060ba1c142241af69410877b0eacf45fd853de388d439b1cf360c6af22f4fc1f22751ecee6fe0172e9c3d00c80308d848d63351ffb5a89d606b23bb1a81e6bdb0c87a4a9b9476bf1b1833403f284186f7c55bec7c0436c3849667f4aa5159c3a1e2ff6f2639c7c7ed1126c040d07c04e3450c7b22679dba3c0eec51e7ac3dd5effe74a8f31293a9ccdf97759ffcf2e425d6fa8f3d457939c90040ab89d37cb9ddaf6bd3aee63c2573b2245c7a9eebf046699d8647d8e01483e5e18e57ea0b7f797f799f838df19f6bc815c35129bb297c29573e8b2b3b8f16bd67ad3fb9920dbff7017e8268e352dafb57b9d2bd2593b794a2154b9a5a9713fca473e355fc5c02b58a28b3f668ec8c777ba2382d5a4aaac598644f20af909829a253f417c343f56ab42914ca8670a4ef62cdb9e8ad2d4b5617d9620da353dd7f0c943f7150cb9dfbb206ac3ab4b4777ac596177bf791b2e1e29dd2f899c9b33b9fec505831c9ee3731ef320a818523145cb0b8cac91fb5f09cdad934f0306c70b3e2324546a3df88bd772152ccd2e0fd4f2581ae670c0dbd57c6c8f4d6efc173e6cab9d0548108a0bb7dee6cd8f04b0420134b5b22cf22d45e0e28c078e159a04e373de8695c15d27721fdfd6d15f0a7ce69711e29f6d88f3e22d8c4a095150a3ef89bdceab081573b61e7372aec254efed8c79b39da51086053aaa80b3ab8e92e7dab17bd59dc6ce328b08c8ce32aff20e7f063cd0c01f7d5277cd475a9035f7e6e54bff04216498f0a949f06bc3aacf0bdd7c22dc3c1b905aafaf92f6a0b7a09db5ab6046139a05057a37286ab1390e4f93446e65d8d2f14b5857a0c523008e35fc4ba70468b2925586dbb727f4b28f8a99e7658c21989b7371a4009d0a325643e82ad8e3301b2070c8e1c3f45ccd2bdd40a9d66cef1eea97df8a805873b1c68c11645f595828b8dff8f7a8158760320b5ec500a1651a7dacd60422dec89e07dbb1ca07a7323e5e7afce9bf325d884455d154b2dddf9f1298c4f4c6f672726ba26da7325abd068c4fe6277d48dcb32cb9b7e9d8e1c46907a16659381c6f8221d0f20c5416274a4041b43fc11e64c6404df791f3aa143f76bccf42da88f491c5eac85e9819bca8820add01180ca8311f92c7e2824b416b73ed200d359063745b8cf1513a4b52fed2d7ac4a6fe7ac464dd970c76dc37412c75e5646ea3f149bf1d3b860a7f7f5ac235b36c26272981e2743b4b17612b4e97ee40d762082025eb61817e364594dd0494b4274a8e67aa293d19f81ba66242f9c1b3e26717a3e2a71b8910b46f27bdd9f877c70e35125cd5168fa24fca6619eaa91e09988e786f5f0227379c6f204fcad33f287f1cdb55e045d8f4c66a55e3c4b7caacb21ff01b553b0108ad1dda89889b79bb96e4cf85bd4a80c31b4841f78235fecb3206044b06e24c6faaadcc4f83248036b969f90c7d539168f0655d9f8db8bf378c17a8237689f637e2e732be4c76615bfefdbba427acf683aa943b06edb0cf238d262606a423db88b4229992eee8f1b1fea71d4c86f3d2da16b90c7c35ad014092ea20c2ee782020460e52a8e0dc7b36615f38ae1a409e947889a9cf87e2ef2c01f46102dbcf511f87333ef4d93064cb95fa962d626370081c3619088444dc2478c7672696c65cd13b98802f666f39f54de7491a12c198d896b7625b9fc3487c72b5f0b7457632f652e2c52e788c8c2a27390df3539931e1736314407203ec8f57eb0c67e6d6a65dec64f649ada232713056fae94a7bdfdac91f049c0ab89774e44fc32a3af3c3dd4f47d9ad7d00afd315cca4bbc26bf0d6025d76ea932a0d9f098e576cac9b1d6bf7476a2bc7bd7e4c2b6e69ae88fe0fab5068bb074a0632fdda6475f335d198c2affe46aaa4677680f7f2375c453d104f9fc661a1b0c2e0b0628bd9645b993841bc44946d15ce1b89b68ec20475aa6fd116db3b4bf3e0fdb4472c9fe4481190209b89a241207cfa4fc347c74515a515e566805b5bf86a59d3677dd6b412ec56cc8e0b4eeab233446b522233fef7665420deafd5602976b4ab0cb16773b21f1dec778b59597dc818095fe2adaab2d8fe016fb473a5f7ab6f9109b505e992bc4feadc5a430473cb3c9b65adfb45dd2e95d66852b30d7ed3123835ecfe55edd30a4ae6f5956fca286829697146ce238c2c87f377a685ffc1acdd04b360d591b4ffb5223a4366c834792b7c9c73976dc9391c49c067bb4a1fb3e717d21c853c557a765a633844df0294dc4e1a7ecf2dbccb404f21ab1547cefe2671e754d0df90ad93acde9ae97c80c1adb7d9a3ab5c92bce84b72b3125d0743979080b28267114d73031abd0a5238f933bc7ddbe874a8a7127111902afe4dcfe1c70e0e6cd7be1c39cea21ad73d50f0c8018cf5510e76cc845faea1ed1dbe9ebaa8a72fa0459f3710035323903f5d4b929c28a71973ef7208f482e0e9a6085cab07357062dcea57caac52e0b29c0ebfd391d8448099a2ccca8d13ac2a2739d0748e8c371f97f6a0f7ad837b1dbb64a6b5e94624db74e59c1bcfeca7700be8d85c44d7b745c24e38c78bd94fd5e03f97adf9808cf1cd01501301fd45fe69f20144ab6eb519a1c5b21ec44749d4cd82881d7654d1a286628e95faf50304d753f80d0241609113d7f6b9398c5881a5dcf2e72b4f1176142536ebade2e18ec38df7d385b1446ae32f4e01006b2bb3e3ff4597d491c5f84451efa20dd10f7e3987e72fbc534a5e0c178c4b7e1da9978ef9e023f1391720f7d046df4bcd3ae4a1cd43f1c6884321e86f4f8602532888a45629936f49ce0fb15e4d685d317a3470881d3622b795647744f4bb71bb7030d95fd8c48f549be2d3bf72896d86ab9821515bc05448784b6512d93a470e2cc32516350d20fe26c36d10fc015d704a0809e57cc5fbb24f5eb3c55fb2fe1786ecf406d795e11fffabe9f3d2e672f8099aa1ad87feed1a60a7d404a8531b93a8bc721d7d2b28734acfd4cd351f30187e394b07fc38e975593c2045b5e5bd1ebef3e1ae498e43b4030954c61948316f09a9568e9f6f5f9b964c5dd561aba5be54ef0defe3aa3b6510fbaef135f031d1e4b701220d0c4a885661e64a3f7e1b5f5f1a0e6f99a7ef85da393b008b7e4cff1a67bacfe7723b6942b379e3fea7db563564dcaeae98bf801fdde0fa4b5cfa26173c36d36c5b8029f722028fe635cad89c753e5b0e7c4d1f8b1b976db103da952cfc8ff2e93a58cd60c8a8d35473b8200aa6d3c88386f8cf540f7348fed7e3b9d8f970602c91479948baac2ccf82761c6698ff7924ac3be1adea419849b27ae371a1e9d122e74ab2c7373dd6c0ca7f53c7a14749b5859ddf4cd248cc9e920bac8212da81a20ca676462b6b48654254523f9199f5911a2da298739a4381dd78dde108406897aa4c5b3933529aebc89fdfc7829704005a3d5d8dbe350b3f53fe6c9f0879b4b051634832b823f4c6b1b5346dc55514289bf4c9aac5cad7b383724ef66d30da5d2af8c7e7b062ce4e2e327663cb772b47583492902da1d3853463219d5a4c3a9eeb1182ead7319b612bf299121204dedc6f777f39828454ef391ccbab2f7e4a28fbbbeaa92085da146e6747abd2750b1082ecd786a534443203da3c0af7bb5e2622237155ef067c1610c5e8c5fb46a509fea4bcaf47ec26f189ed8219c09cd127c4997889ae521b7f3d0f517f9fd68f309f174d53e787da7acf9f2d84c5762c8d6e39908cf96d88ad4d76ccc3b6ee826fd0a0c349212808c119774e6a99d46a221a1480f8f08a8ba35d40b21cbf9c874fd7df0a9bd5bb37e598c92da64684faef4927b73e904683920d5d16998578a1159f6ce3dcd4c8866b63666c58c8a947c3a0e6e8c22425fb841da2847472bf40a8f5f1704ab80594936447a79c6abd7281744bef1cc4072a8d326c20c1c09ba8349f6e91ec945a982accd4a398e320bb5eab0e85092828d8d1405029912de594a78575ba5b2e9649103db94332e56e1bad1c39bff559c0888596e3272baecc7876b780b9cb727758b940d9d2739832c07f7522850c25c8a6810c300c0c128a83bb12b004c3a8a0a7312a9d6279205e0dbc3b406020ae5ada23174ff9e67e3e1c6cb28cf784e2aae9b871d0d1c5b13cd245d55c1959910c0cefd5dbf9922de3932bc29e2bfd1ed89ebda1309b11a10546aeb5207f2e17730c58b660338214f8de72771f60dfa62fbf39425869a28cad17e3f6b7e2e709acf2779d4e0fb891c9599427e79792cb78a629af16aca3e8211fcf53ae8be91c9c25a222cfc451ccf0fcf92a8e6054ab1313054831477bbf34ca2e2c55beeb76937ed6a7f383b6da2e3ec1d49573d770c0c4a04a77703a4ac48d4eda93e947e55df79808e89f5b409b427081c8e8cc098d9b06dfc3ff5b9eac11e671e2f7ae3d8b535d1c5e745b6917c9ab684d94816029a10613818fef1f785b9a32029696999ac08a074b7167c29d1f8e844ebb8619479cc468e22e9e51967479744e88986f94965ddce232579fdfb823cdfc316813342f3517dd44603beac2379bd03ee649a1ba873b1929d84b7c6d3135e2294f9ebe8772aa3c44473113ab2bfafd20aceded90cab880165470e39217ddb2e89d1a03c364e67f2bd106e8b6df8b7bfe683f076f20af5e129d6a1459f084ae2871290a67a225c907a8f5bbb82cf50ce154b354039af55e4fd1ed8313695a0aa475cfd03f6a350ef7847d0959ced818de4c4df3a165b8b940f564dde6ce4b57ddf4de18882794ae920d377f14d2c5568e33a827a531832b1711652ed2f79ab69ed3202279bba089ed8341800fd6e2ac9d96579b915a33aaccd78bc2791eba8210147739217c1d0e08d18e60f41c6831999733c433fa3090a733cd8cf52c89fa122621adde805ca138e64733c77f1cc84558796fe66deadda5f7fbb9a7d04bf9037b2315f7dfad31623f3ed28f91a8dbbfba27bab3c06f105cf208d5754f541f8abca8b0bd88164cab03809f520533b9a7a61e21f404d11ccd4dde3f6b60fc2700b158c0e6122f2793cfa400867bf0026a60800fa3931f7544db62bb483e3ad3d5e324fd05985b1558b40ba5da6fb4497df2c177b5b109c8fd2854d91c787c3267749faa7dc89e8b5d3136cddcce2671acdb23def75f8fbf94d44738a6fc827c0895d4333e413ee6c0d0cf6c37632c05b1fffb1ce7556e595a13d8a82c386d2b16a55e060047128ccb8256343e85341389b0eb898ba8e8e0bc5932a3ce001932715d566c939d835d185d093bf0adb1b351fbdc7e300d3bddeb9756cd5092f505653fee3d4fe913c256c6b44cf7714cbaff7642d1a70ee9d59f52de3dee5345338e35f9275a0c5d5d764382e4ac528bd2f1d104de16c502a0996e46c6777993b2426f3ea593f9e9c0f8da98cc08bd542322ce53db64f964739db91a0e5ecd72b65ebe951109da85c84b85016186a0c86a8bbb540e42342f24acf539985c0be44e2687e85119810965fcb0b71458c676d55ca4a44668f5d17758eac8a95dc9232ecf4ed66b33df9e7fb56e3e0c5dd91c4ac7d07ccf087ee9bc9fa387ba7f3c45e3035113b1fb7b4430cc4b1c9826e2f727c6a1d4b8d49626750f95227991d34d59369a775ec76303d11672727cb8a3f4c648463d4b06c7349440f8fb69e08d2c12be47f9737d1b4713fb88e62b8387b455e039806060519b1db49321866e018a4989d6360675aeb5f6df9fe218e3833e7e3085aaf4aaaf36e81f92710e87b7f9c520c503e6dec549784a2839b108619fdfe82b57fc1f2782975d6c90fbb0628f3f21e28ad5da3979a78288346fb14c683873d663b8742ce34fae4a2e6bc3f78ea6e9eb3075dd6313b8b3338a635d39c5f8b80377d8c74ba2bf3d79c87e7a684bbd0fe81794ad6d8132b993f65da8e8c4198433b9245e56b19c498a55b23a7db519a0efbbf266e155e2a14926488b0c87096eb384984430ec399c826ba24bed6f8437f71da79c91cf06f2d0a25e6c0f07b4fed1e5914b89f01f234dbfca02c485b3c60646132468a8b72693aa5dedf554d35c76222b93a5fedf7db78dd81bf71610af0a413c890c88e1d4364c1073579a94c55b8756b3c6100b4a5682411dda56e82e5d01bc7f66f967059471f54a0dcc810e228eb793c977e53be808bbfae4f9c4970b5ef859e1dc8713dd8fb75879cd4bdae420b596f9d2c391693ac307222de03ec1f9ed02b5f60a7353887ff98216cecbfedaa823585b5eebc48485a2b78c364043f58963bf91199000b62e3c44a0abcd824095f40e73160495e4ae5e14bac6271965e3526bf2e7dc59b49cee19c59d6b5f77e4995b4e4d4f9cb73d89cb73c4ee5bb874aa8a51335b44959753981a231f50eb66b7e3866a27a2e6736dd7c533c5619e0b09f1e0f8a408a0f57ceca2947510c120ea516cc3df4cb7f8c69d56a2232a3dd355659a15b017cd6e998bbbea1963b06a1680f3e6f68f2ea4603247e6139f024eb9e3f61933f40ae24f4bc556e929eb0c49ebebe02a62aaf4d7b379b7dfddd216d7c16add659e6a2e5b8dd8bbf654091a1a4aa0aa9fb3287e334b7d44aea8fc17ad2201362b83c15a4e4b7c41a84dec68d5f8de6d3ef162c431c3c9e864e96e3aa188f31f63063e651549f79450db8177534fb069d995c5f736f11b4be51f408d97a4ec697b355fb2d26c80d9ecc1992ebf37c004d7339adc5997703a767109c9db816d284105002ca7d56c624c017777503ca7f7e552c48e5840decf5468025d15b612bbbb30d60cbd8061c5e95a8f556953b0d7fdba408ef52fa078a28615325fb308e51ecee1c33dad327eab2e9b81cf6b2131fb800426268a1989ad313a9274348aa4cabce158cae45ef1e698d2a6d7315781edf8203e83dbdef758cd0d0b13faea7955d8b2cf5e5ab19c257869f5d83535f574485267addb24abddf85c539132115a0dc5e7d08343176c0b559c59be9e56598dddf8f12b3c94b882f828d3d07898f8c37a6d9a7f78fdf6055d695cae8140c9b35c9ec9d7efa20b407f3400fa51cbed5371a7e62bce3e0c956ca20ecf4f6174394772dde71734e0b1522c54585aad2b284b70430014b533ee22d99c2c8cacd6530d33a6c306f838c57506edab4ff1d21a0f8ae380ccca3bdaade55f1be1ddcd63aec8779c009976beb0fe7160c2417b06272e93c0c22a848abf3c80241440544f0250c72a7b4deec5f6c41e0bdd507257e0fc07f13954f971df8f08d6afe6b97990adb7dda7140720aade8696106e0b99bd99aa8e474f16c9252736158ec5ed9048307a8d09da945473d463dcd201897baa3aca85e9c2f79f7d3296fff8a0213b172ba0ebc113bb28ca24547dc972a0de9de2e234d028b6b72ef766a722652716b6c3b337df64b10132f7a90dd06b9ee757a158c5b4c8ef6274e1578877e6fb94ea0f8e85eac303ed64035e2b5f743eef368f93317e210d82864878868be438a35b5506b75a423b5b9612d9c960c5a161a155e8425a1c999052abe91b242372f82a75d55790ee8474752919ffa4bfec6b230f6d6b40cb958d4e486d49bcef7ece9a9dbac2f1bc45715e143c3a5ad0f8acd983a2cf8044131cc10bdb4ac0825be9885f0724f52f92d4d5fad83247e1c568ca46837bcb1c8cfa1274f89a2462b34f80cf70dd63885869ed910a1fbc10bdf265b509a78ee1836447eea775feb6b0b4a17647f50a817c561d2f6e8a70f49ddc5b7b0164e8876a32d98a421ed3244684e7803ff57a5204cc7c2dba7216949906cc277bc958f0527eb3c67ae04ccc17a7907128e0147db5358410719ed36f550ddb194f4bb7583fd2984cb454f884e282d34e6c39422593d3c731c47f1185a03849545da14a88989254d743ce25b598cdbb7bdaac2fd04e900c96079d971bee480f08e6f6b9af01785ffead263e9fd52b470d1b1bae9e7442bc0145a84b4729cce2a2552a82626eb5b72049842b547c5b9825999433a2a61fc95756d40fce47eb6115b9a26132b06ad150c42b13d8476232db1ef0fcae825c6b984da080c596a0d56c5f3c2b19a6b50a7ceed14609b8a861256931209728f54a82d7dd125297498a8e22ff5fad8910cd189089ab7e7e22e6bb5d4f97fe21695964f9ecac86a3d0d9dde7e8c0ff09e2a4c911af67b7f16756460da8614135e676d68af330041df7b151b901fb61576e9de5caebdc594dc3ceb794126546d622e2efb8897a5472d75571e66440af11859213e146a6606409055b7d70ba4810e30de48d036e77a2b2fb6fe92202767c32e77f0d659ca540eb4ef1062fd94d77a0a78376ab416a8bad2c2774673dfb7288b507ceae33f84c81706c9c17b68a2667e67b2d05dbd3fa0fa6c876753e305aa3ef5bc51c9ca236e48f0e731ff97824e98a47b2716d9c13b444736c14c4e0e71ed9ecc5fe45c49f45cd8f029b2cb3750cc7e670bb0f07298d45490d9e85097a4e1b3a04c6162cef108e6dc4911b7e444ae46f531a7f4d2429c4bf9e1e02851f9e79e45584868891f0f7b5a0e252551aa14cec6f0ebc5b1a7873957bb64939d37e0efaf736132901d94c1259aa0f1855f09bd1d217eec026e95f77e0981b9a99063015d317cffe5d9f099996a672be355679025e1e5fe7687d541880e0662f85cc66061f115d5d7c44756fc16cd837aacb2eaa20e9f0a17dbcb41637a4403179de296895a99f3fa492cc5f4996a720a0e47627011678e4bb8cca320ea1cca48bf93f0a68e1e31252679effec74f3d5ca86e97f55381cf2d55b443a2479bb7be095eae4397aada2559cde66d9a9ab78c5cf9bfae268a8ddeeceeb5d7306ca41f32b46a657a6a572c607ba67766ef2e09433342b450e9fbb2dc286c0964fa5d6900263297e0f6d9cd4ab00d596471362143252d363a0e6e099a504aeb3002d0c32eeae2fc6354f1a216572869de42c950ab1b2664f9ce653a074d83bd4722aa0b78770f450b2766a70596221ec2567efbd354a69ffb30609d46701810036d327eb145a7382ed25fe1ad2bfa3a9ff3025175c561c0fd49f5f0a6c7323c8e62b11fc4a35f171b58dbe9ee86df43780836b01ec74f0c4c308311ca25b08cf1e745637e7056c661c9cb5959d360ff717f6f499c0d3d2bd3215fb0a7bf79904b540fba02bb9633299f1a7e14ef5d54c1a16ef32caab7aff3b5c8b702d4d61cc9a1af8571bd94ba3cd1ad3935460a0178fe151f38bfe03dea0460b471c8314fd76af0a451e862ff5e624865624fc550e366f82d8ad6743f2192d875899b35ad1ec4dc6b0169c97f0b3e786928a34ed96c7c6aa2e410604f5f77448ebf2ba55990c0ad61eb6e1dab835e8e1bea58a6c6530830563c9613ecfb62688610a39831e4718695ed49c8624efed1f2e60a022991e69e9f8048655e410cf8b5eef8421b17e4b14acf45d8bfdc0c1fc4d692098bde425887262e5bbbc53967acc96972ab05d014d814c547fd7915210a4f72a46269f13807899f32606dfa53faa72fac5d90e8e446c3db4c64c4db4bfdd2c928f28ea859544cbbd4fb1c15b5cb92f6d97a542d1bd8e2b47f8eb06d39b253b783e7617c54f4ad9dcb899fbc35e05a772bf56f95cd206213a747302034b305b511803a451057abb7412b7118434076fe03ed5c87f7672b497737dc1001b1c93f463ac6f8b1e9ae3d047b849b61f14083626feddb523f98c55f22fb7478b375a8080bce4c8d53bf35e1fd4132a03daa40eed124ba537c0070aa44af264b4ae416ef6521b8d1bb7a905dedb2294305238a93353f6edcc9a959559c79ee157314124d93dad144b1310623fb44e7021b8d0dd83edf677cda22ea703aa46f1d1254957b52cf7e239d8b28f505c11797f108fc21d1f8a0879a2a56856e3937589f99c3f7111dc75d2982385c071f7dcac4b695a921ff0a1dd7078d9c8751c669edd39a482a0a31d5ed115cd7a9fa47828cbabc7bbed9a093db8c04ac3324acf08b5a4a0069f6ca33032787dcf1e67ee59cd768d817f23fd5b90fc51656f9bce591970546c3708db5e9389e775efaf33607bb1588f3c48e7c4695f12c93c12b517924e05ee8930324615f43be13997aa98676fc421e0fc7d4efb81199d1397b58317b1e83a2759b2b92a6ee49661a566a4c5d321fd5c831bd8ad50088441763f0207f88308876fbb4d14359a15d48f323ffccf2b8f915524832f162316f7a380cd83561c3625f0e1afb77418767cbd4e6982ce4868d22cd8623d1d6e8795a3e1956ad6428840bcb151fdec3efab70457fbe8d87eb77438dceb16cc9170fcde903b197f6481cd0bfe85858f22a2e420b4112e0c03109ce5c74d72a047f66d371d878d6913c67681833b137c7e881d9b6f848e1722c9a3030d1d6ff331e39dd11f2cc2a0c5c6afaf557633920a899534c25c968f77d5baee736688dd4743c056764325b739e1117848efff7e580dcfb09689c76c03ba818ad2dca8313772f6911ae5cc4b6845b9c573c4c10ce636237fb464e3a340ed4fd2d08d20b89cf557f471fb656acf6f02d78a01a5b89a2fa7b87b9ac32ba92d0761969d65b6986ffe03c44581b7094095441dadbd3f7191c9bf8b0eee9b9e55c9b36ceb2821eae9b23075e5e108dd0ad2553178868b752440c0bcec03ad4424a6b951fca5cc9ae495add7db2c27c1c50e6f9d1d6a5193371c4bf666648990fe6976a3bf89bbe8641b11f5b4ec0dd2d14d1c6b2e25840aebfd377bc786262bd03e945a3f9657ca048d838f9def445c930d90fa0c7e4ef5df5c07e14d2176d867a113d96a3638e14ffd2fd30cbce974f5eee0ed497a9a51b95cc12d907ee4a9d5b77a842109601e918541d0b7a9410e83f86a54289575237eaab1e1d1a9f530862541cd890e3df696a7939ea3a651f25338e663e192a07cba28f2aad8caf81236f898090cefb39ca476d399047721a1dc27a23e702e47bca3f14fffb4f61af8e08be7740d552404f647e68f0831c2991572128f904ada32916abc40a543d60dc2a667cb2c184ee4eb2bd0aad7f7809d1