ื•ื•ืขื’ืŸ ืื™ื™ืŸ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ืŸ ...

ื•ื•ืขื’ืŸ ืื™ื™ืŸ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ืŸ ...

ืื™ื™ืŸ ื™ืึธืจ ืฆื•ืจื™ืง, ืžืขืจืฅ 21, 2019, ืื™ืŸ ื–ืฉื•ืง ื‘ืจื™ื™ื˜ื”ืึทืจืฆื™ืงื™ื™ื˜ ืคึผืจืึธื’ืจืึทื Mail.Ru ืึท ื–ื™ื™ืขืจ ื’ื•ื˜ ืื™ื™ื ืขืจ ื’ืขืงื•ืžืขืŸ ืฆื• HackerOne ื–ืฉื•ืง ื‘ืึทืจื™ื›ื˜ ืคื•ืŸ maxarr. ื•ื•ืขืŸ ื™ื ื˜ืจืึธื•ื“ื•ืกื™ื ื’ ืึท ื ื•ืœ ื‘ื™ื™ื˜ (ASCII 0) ืื™ืŸ ื“ื™ POST ืคึผืึทืจืึทืžืขื˜ืขืจ ืคื•ืŸ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ื•ื•ืขื‘ืžืึทื™ืœ ืึทืคึผื™ ืจื™ืงื•ื•ืขืก ื•ื•ืึธืก ืื•ืžื’ืขืงืขืจื˜ ืึท ื”ื˜ื˜ืคึผ ืจื™ื“ืขืจืขืงื˜, ื‘ืจืขืงืœืขืš ืคื•ืŸ ืึทื ื™ื ื™ืฉื™ืึทืœื™ื™ื–ื“ ื–ื›ึผืจื•ืŸ ื–ืขื ืขืŸ ืงืขื ื˜ื™ืง ืื™ืŸ ื“ื™ ืจื™ื“ืขืจืขืงื˜ ื“ืึทื˜ืŸ, ืื™ืŸ ื•ื•ืึธืก ืคืจืึทื’ืžืึทื ืฅ ืคื•ืŸ GET ืคึผืึทืจืึทืžืขื˜ืขืจืก ืื•ืŸ ื›ืขื“ืขืจื– ืคื•ืŸ ืื ื“ืขืจืข ืจื™ืงื•ื•ืขืก ืฆื• ื“ื™ ื–ืขืœื‘ื™ืงืขืจ ืกืขืจื•ื•ืขืจ.

ื“ืึธืก ืื™ื– ืึท ืงืจื™ื˜ื™ืฉ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ื•ื•ื™ื™ึทืœ ... ืจื™ืงื•ื•ืขืก ืื•ื™ืš ืึทื ื˜ื”ืึทืœื˜ืŸ ืกืขืกื™ืข ืงื™ื›ืœืขืš. ืขื˜ืœืขื›ืข ืฉืขื” ืฉืคึผืขื˜ืขืจ, ืึท ืฆื™ื™ึทื˜ื•ื•ื™ื™ึทืœื™ืง ืคืึทืจืจื™ื›ื˜ืŸ ืื™ื– ื’ืขืžืื›ื˜ ื•ื•ืึธืก ืคื™ืœื˜ืขืจื“ ื“ื™ ื ื•ืœ ื‘ื™ื™ื˜ (ื•ื•ื™ ืขืก ืคืืจืงืขืจื˜ ืื•ื™ืก ืฉืคึผืขื˜ืขืจ, ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื’ืขื ื•ื’, ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ื ืึธืš ื“ื™ ืžืขื’ืœืขื›ืงื™ื™ื˜ ืคื•ืŸ ื™ื ื“ื–ืฉืขืงื˜ื™ื ื’ CRLF / ASCII 13, 10, ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืžืึทื ื™ืคึผื•ืœื™ืจืŸ ื“ื™ ื›ืขื“ืขืจื– ืื•ืŸ ื“ืึทื˜ืŸ ืคื•ืŸ ื“ื™ ื”ื˜ื˜ืคึผ ืขื ื˜ืคืขืจ, ื“ืึธืก ืื™ื– ื•ื•ื™ื™ื ื™ืงืขืจ ืงืจื™ื˜ื™ืฉ, ืึธื‘ืขืจ ื ืึธืš ืคึผืจื™ืงืจืข). ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ื“ื™ ืคึผืจืึธื‘ืœืขื ืื™ื– ื˜ืจืึทื ืกืคืขืจื“ ืฆื• ื–ื™ื›ืขืจื”ื™ื™ื˜ ืึทื ืึทืœื™ืก ืื•ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืื•ืŸ ืขืœื™ืžื™ื ื™ืจืŸ ื“ื™ ืกื™ื‘ื•ืช ืคื•ืŸ ื“ืขื ื–ืฉื•ืง.

Mail.ru ืคึผืึธืกื˜ ืื™ื– ืึท ื–ื™ื™ืขืจ ืงืึธืžืคึผืœืขืงืก ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ; ืึท ื’ืจื•ื™ืก ื ื•ืžืขืจ ืคื•ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืคืจืึธื ื˜-ืขื ื“ / ืฆื•ืจื™ืง-ืขื ื“ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ, ื‘ื™ื™ื“ืข ืึธืคึฟืŸ ืžืงื•ืจ (ืคื™ืœืข ื“ืึทื ืง ืฆื• ืึทืœืข ืคืจื™ื™ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก) ืื•ืŸ ืื™ืŸ-ื”ื•ื™ื– ื“ืขื•ื•ืขืœืึธืคึผืขื“, ืงืขื ืขืŸ ื–ื™ื™ืŸ ื™ื ื•ื•ืึทืœื•ื•ื“ ืื™ืŸ ื“ื–ืฉืขื ืขืจื™ื™ื˜ื™ื ื’ ื“ื™ ืขื ื˜ืคืขืจ. ืžื™ืจ ื’ืขืจืื˜ืŸ ืฆื• ื•ื™ืกืฉืœื™ืกืŸ ืึทืœืข ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ืึทื—ื•ืฅ nginx ืื•ืŸ openresty ืื•ืŸ ืœืึธืงืึทืœื™ื–ื™ืจืŸ ื“ืขื ืคึผืจืึธื‘ืœืขื ืื™ื™ื“ืขืจ ืจื•ืคืŸ ngx.req.set_uri() ืื™ืŸ ืึทืŸ OpenResty ืฉืจื™ืคื˜ ื•ื•ืึธืก ื”ืื˜ ื ื™ืฉื˜ ื‘ื™ื›ื™ื™ื•ื•ื“ ื•ื•ื™ ื“ืขืจื•ื•ืึทืจื˜ (ื™ื ืกืขืจื˜ื™ื ื’ ืึท ื ืึทืœ ื‘ื™ื™ื˜ ืึธื“ืขืจ ืฉื•ืจื” ืคื™ื˜ืขืจ ื“ื•ืจืš GET ืคึผืึทืจืึทืžืขื˜ืขืจืก ืžื™ื˜ ืจื™ืจื™ื™ื˜ ืื™ืŸ ngx_http_rewrite_module, ื•ื•ืึธืก, ืœื•ื™ื˜ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ, ืื™ื– ื’ืขื ื™ืฆื˜ ืื•ืŸ, ืขืก ื•ื•ืึธืœื˜ ื•ื™ืกืงื•ืžืขืŸ, ื–ืึธืœ ืึทืจื‘ืขื˜ืŸ ืื™ืŸ ืคึผื•ื ืงื˜ ื“ื™ ื–ืขืœื‘ืข ื•ื•ืขื’, ื ื™ืฉื˜ ืืจื‘ืขื˜ืŸ). ืžืขื’ืœืขืš ืงืึทื ืกืึทืงื•ื•ืขื ืกืึทื– ื–ืขื ืขืŸ ื™ืœื™ืžืึทื ื™ื™ื˜ืึทื“, ืคึฟื™ืœื˜ืจื™ืจื•ื ื’ ืื™ื– ืฆื•ื’ืขืœื™ื™ื’ื˜ ื•ื•ื™ ืฉื˜ืจืขื ื’ ื•ื•ื™ ืžืขื’ืœืขืš, ืื•ืŸ ืคึฟื™ืœื˜ืจื™ืจื•ื ื’ ืื™ื– ื•ื•ืขืจืึทืคื™ื™ื“ ืฆื• ืขืœื™ืžื™ื ื™ืจืŸ ืึทืœืข ืžืขื’ืœืขืš ื•ื•ืขืงื˜ืึธืจืก. ืื‘ืขืจ ื“ืขืจ ืžืขืงืึทื ื™ื–ืึทื ื•ื•ืึธืก ื’ืขืคื™ืจื˜ ืฆื• ื“ื™ ืจื™ื ืขืŸ ืคื•ืŸ ื–ื›ึผืจื•ืŸ ืื™ื ื”ืึทืœื˜ ืื™ื– ืคืืจื‘ืœื™ื‘ืŸ ืึท ืžื™ืกื˜ืขืจื™ืข. ื ื—ื•ื“ืฉ ืฉืคึผืขื˜ืขืจ, ื“ื™ ื–ืฉื•ืง ื‘ืึทืจื™ื›ื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ืคืืจืžืื›ื˜ ื•ื•ื™ ืจื™ื–ืึทืœื•ื•ื“, ืื•ืŸ ื“ื™ ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ ื“ื™ ืกื™ื‘ื•ืช ืคื•ืŸ ื“ื™ ื–ืฉื•ืง ืื™ื– ืคึผืึธื•ืกื˜ืคึผืึธื•ื ื“ ื‘ื™ื– ื‘ืขืกืขืจ ืฆื™ื™ื˜.

OpenResty ืื™ื– ืึท ื–ื™ื™ืขืจ ืคืึธืœืงืก ืคึผืœื•ื’ื™ืŸ ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืฉืจื™ื™ึทื‘ืŸ Lua ืกืงืจื™ืคึผืก ืื™ืŸ nginx, ืื•ืŸ ืขืก ืื™ื– ื’ืขื ื™ืฆื˜ ืื™ืŸ ืขื˜ืœืขื›ืข Mail.ru ืคึผืจืึทื“ื–ืฉืขืงืก, ืึทื–ื•ื™ ื“ื™ ืคึผืจืึธื‘ืœืขื ืื™ื– ื ื™ืฉื˜ ื’ืขืจืขื›ื ื˜ ื•ื•ื™ ืกืึทืœื•ื•ื“. ืื•ืŸ ื ืึธืš ืขื˜ืœืขื›ืข ืžืึธืœ, ื–ื™ื™ ืœืขืกืึธืฃ ืื•ืžื’ืขืงืขืจื˜ ืฆื• ืขืก ืื™ืŸ ืกื“ืจ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ื™ ืืžืช ืกื™ื‘ื•ืช, ืžืขื’ืœืขืš ืงืึทื ืกืึทืงื•ื•ืขื ืกืึทื– ืื•ืŸ ืžืึทื›ืŸ ืจืขืงืึทืžืึทื ื“ื™ื™ืฉืึทื ื– ืคึฟืึทืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก. ืื ื˜ื™ื™ืœื’ืขื ื•ืžืขืŸ ืื™ืŸ ื“ื™ ืขืงืกืงืึทื•ื•ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ืžืงื•ืจ ืงืึธื“ ื“ืขื ื™ืก ื“ืขื ื™ืกืึธื•ื• ะธ ื ื™ืงืึธืœื™ื™ึท ืขืจืžื™ืฉืงื™ืŸ. ืขืก ื”ืึธื˜ ื–ื™ืš ืึทืจื•ื™ืกื’ืขื•ื•ื™ื–ืŸ ืึทื–:

  • ืื™ืŸ nginx, ื•ื•ืขืŸ ืื™ืจ ื ื•ืฆืŸ ืจื™ืจื™ื™ื˜ ืžื™ื˜ ื‘ืึทื ื™ืฆืขืจ ื“ืึทื˜ืŸ, ืขืก ืื™ื– ื“ื™ ืžืขื’ืœืขื›ืงื™ื™ื˜ ืคื•ืŸ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ื˜ืจืึทื•ื•ืขืจืกืึทืœ (ืื•ืŸ ืžื™ืกื˜ืึธืžืข SSRF) ืื™ืŸ ืขื˜ืœืขื›ืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื–, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ืึท ื‘ืึทื•ื•ื•ืกื˜ ืคืึทืงื˜ ืื•ืŸ ื–ืึธืœ ื–ื™ื™ืŸ ื“ื™ื˜ืขืงื˜ืึทื“ ื“ื•ืจืš ืกื˜ืึทื˜ื™ืง ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืึทื ืึทืœื™ื–ืขืจืก. Nginx Amplify ะธ ื’ื™ืงืกื™ ืคึฟื•ืŸ ื™ืึทื ื“ืขืงืก (ื™ืึธ, ืžื™ืจ ื ื•ืฆืŸ ื“ืึธืก ืื•ื™ืš, ื“ืึทื ืงืขืŸ). ื•ื•ืขืŸ ืื™ืจ ื ื•ืฆืŸ OpenResty, ื“ืขื ืฉื˜ืจื™ืš ืื™ื– ื’ืจื™ื ื’ ืฆื• ืคืึทืจืคื™ืจืŸ, ืึธื‘ืขืจ ื“ืึธืก ื”ืื˜ ื ื™ืฉื˜ ื•ื•ื™ืจืงืŸ ืื•ื ื“ื–ืขืจ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ.

    ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื‘ื™ื™ึทืฉืคึผื™ืœ:

    location ~ /rewrite {
        rewrite ^.*$ $arg_x;
    }
    
    location / {
        root html;
        index index.html index.htm;
    }

    ื˜ืึทื›ืœืขืก

    curl localhost:8337/rewrite?x=/../../../../../../../etc/passwd
    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
    bin:x:2:2:bin:/bin:/usr/sbin/nologin
    ...

  • Nginx ื”ืื˜ ืึท ื–ืฉื•ืง ื•ื•ืึธืก ื– ื–ื™ืงืึธืจืŸ ืฆื• ืจื™ื ืขืŸ ืื•ื™ื‘ ื“ื™ ืจื™ืจื™ื™ื˜ ืฉื•ืจื” ื›ึผื•ืœืœ ืึท ื ืึทืœ ื‘ื™ื™ื˜. ื•ื•ืขืŸ ืึท ืจื™ื“ืขืจืขืงื˜ ืื™ื– ืืจื•ื™ืก, nginx ืึทืœืึทืงื™ื™ืฅ ืึท ื ื™ื™ึท ื–ื›ึผืจื•ืŸ ื‘ืึทืคืขืจ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืฆื• ื“ื™ ืคื•ืœ ืœืขื ื’ ืคื•ืŸ ื“ื™ ืฉื•ืจื”, ืึธื‘ืขืจ ืงืึทืคึผื™ื– ื“ื™ ืฉื•ืจื” ื“ืึธืจื˜ ื“ื•ืจืš ืึท ืฉื•ืจื” ืคึฟื•ื ืงืฆื™ืข ืื™ืŸ ื•ื•ืึธืก ื“ื™ ื ื•ืœ ื‘ื™ื™ื˜ ืื™ื– ืึท ืฉื•ืจื” ื˜ืขืจืžื™ื ืึทื˜ืึธืจ, ืึทื–ื•ื™ ื“ื™ ืฉื•ืจื” ืื™ื– ืงืึทืคึผื™ื“ ื‘ืœื•ื™ื– ื‘ื™ื– ื“ื™ ื ื•ืœ. ื‘ื™ื™ื˜; ื“ื™ ืจืขืฉื˜ ืคื•ืŸ ื“ื™ ื‘ืึทืคืขืจ ื›ึผื•ืœืœ ืึทื ื™ื ื™ืฉื™ืึทืœื™ื™ื–ื“ ื“ืึทื˜ืŸ. ื ื“ื™ื˜ื™ื™ืœื“ ืึทื ืึทืœื™ืกื™ืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ื“ืึธ.

    ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื‘ื™ื™ึทืฉืคึผื™ืœ (^@ ื ื•ืœ ื‘ื™ื™ื˜)

    
    location ~ /memleak {
        rewrite ^.*$ "^@asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdasdf";
    }
    
    location / {
        root html;
        index index.html index.htm;
    }

    ื˜ืึทื›ืœืขืก
    curl localhost:8337/secret -vv
    ...
    curl localhost:8337/memleak -vv
    ...
    Location: http://localhost:8337/secret
    ...

  • Nginx ืคึผืจืึทื˜ืขืงืฅ GET ืคึผืึทืจืึทืžืขื˜ืขืจืก ืคื•ืŸ ื™ื ื“ื–ืฉืขืงืฉืึทืŸ ืคื•ืŸ ืกืขืจื•ื•ื™ืก ืื•ืชื™ื•ืช ืื•ืŸ ืžืื›ื˜ ืขืก ืžืขื’ืœืขืš ืฆื• ื ื•ืฆืŸ ื‘ืœื•ื™ื– GET ืคึผืึทืจืึทืžืขื˜ืขืจืก ืื™ืŸ ืจื™ืจื™ื™ื˜. ื“ืขืจื™ื‘ืขืจ, ืขืก ืื™ื– ื ื™ื˜ ืžืขื’ืœืขืš ืฆื• ื’ื•ื•ื•ืจืข ื™ื ื“ื–ืฉืขืงืฉืึทืŸ ื“ื•ืจืš ื‘ืึทื ื™ืฆืขืจ-ืงืึทื ื˜ืจืึธื•ืœื“ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืื™ืŸ nginx. POST ืคึผืึทืจืึทืžืขื˜ืขืจืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ืคึผืจืึธื˜ืขืงื˜ืขื“. OpenResty ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื‘ื™ื™ื“ืข GET ืื•ืŸ POST ืคึผืึทืจืึทืžืขื˜ืขืจืก, ืึทื–ื•ื™ ื•ื•ืขืŸ ืื™ืจ ื ื•ืฆืŸ POST ืคึผืึทืจืึทืžืขื˜ืขืจืก ื“ื•ืจืš OpenResty, ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ืึทืจื™ื™ึทื ืฉืคึผืจื™ืฆืŸ ืกืคึผืขืฆื™ืขืœืข ืื•ืชื™ื•ืช.

    ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื‘ื™ื™ึทืฉืคึผื™ืœ:

    location ~ /memleak {
        rewrite_by_lua_block {
            ngx.req.read_body();
            local args, err = ngx.req.get_post_args();
            ngx.req.set_uri( args["url"], true );
        }
    }
    
    location / {
        root html;
        index index.html index.htm;
    }
    

    ืจืขื–ื•ืœื˜ืึทื˜:

    curl localhost:8337 -d "url=secret" -vv
    ...
    curl localhost:8337 -d "url=%00asdfasdfasdfasdfasdfasdfasdfasdf" -vv
    ...
    Location: http://localhost:8337/{...ะผะพะถะตั‚ ัะพะดะตั€ะถะฐั‚ัŒ secret...}
    ...

ื•ื•ื™ื™ึทื˜ืขืจ ืึธืคึผืจื•ืฃ

ื“ืขืจ ืคึผืจืึธื‘ืœืขื ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขืžืืœื“ืŸ ืฆื• ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืคื•ืŸ nginx ืื•ืŸ OpenResty, ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื˜ืึธืŸ ื ื™ื˜ ื‘ืึทื˜ืจืึทื›ื˜ืŸ ื“ืขื ืคึผืจืึธื‘ืœืขื ื•ื•ื™ ืึท ื–ื™ื›ืขืจื”ื™ื™ื˜ ื–ืฉื•ืง ืื™ืŸ nginx, ื•ื•ื™ื™ึทืœ ืื™ืŸ nginx ื–ื™ืš ืขืก ืื™ื– ืงื™ื™ืŸ ื•ื•ืขื’ ืฆื• ื’ื•ื•ื•ืจืข ื“ืขื ื˜ืขื•ืช ื“ื•ืจืš ื“ื™ ื™ื ื“ื–ืฉืขืงืฉืึทืŸ ืคื•ืŸ ืกืคึผืขืฆื™ืขืœืข ืื•ืชื™ื•ืช, ืคืึทืจืจื™ื›ื˜ืŸ ื–ื›ึผืจื•ืŸ ืึทื ื˜ืคึผืœืขืงื•ื ื’ ืื™ื– ืืจื•ื™ืก ื“ืขื 16ื˜ืŸ ื“ืขืฆืขืžื‘ืขืจ. ืื™ืŸ ื“ื™ 4 ื—ื“ืฉื™ื ื–ื™ื ื˜ ื“ืขื ื‘ืึทืจื™ื›ื˜, ืงื™ื™ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ื–ืขื ืขืŸ ื’ืขืžืื›ื˜ ืฆื• OpenResty, ื›ืึธื˜ืฉ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ืคืืจืฉื˜ืื ื“ ืึทื– ืึท ื–ื™ื›ืขืจ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ngx.req.set_uri() ืคึฟื•ื ืงืฆื™ืข ืื™ื– ื“ืืจืฃ. ืื•ื™ืฃ 18 ืžืขืจืฅ 2020 ืžื™ืจ ืคืืจืขืคื ื˜ืœืขื›ื˜ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข, ืื•ื™ืฃ 21 ืžืขืจ OpenResty ืคืจื™ื™ ื•ื•ืขืจืกื™ืข 1.15.8.3, ื•ื•ืึธืก ืžื•ืกื™ืฃ URI ื•ื•ืึทืœืึทื“ื™ื™ืฉืึทืŸ.

Portswigger ื’ืขืฉืจื™ื‘ืŸ ื’ื•ื˜ ืึทืจื˜ื™ืงืœ ืื•ืŸ ื’ืขื ื•ืžืขืŸ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ืคื•ืŸ OpenResty ืื•ืŸ Nginx (ื›ืึธื˜ืฉ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ ืึทื– ื‘ืœื•ื™ื– ืึท ืงืœื™ื™ืŸ ืคืจืึทื’ืžืขื ื˜ ืคื•ืŸ ื–ื›ึผืจื•ืŸ ืื™ื– ื™ืงืกืคึผืึธื•ื–ื“ ืื™ื– ืคืึทืœืฉ ืื•ืŸ ืžื™ืกืœื™ื“ื™ื ื’, ื“ืึธืก ืื™ื– ื‘ืืฉืœืืกืŸ ื“ื•ืจืš ื“ื™ ืœืขื ื’ ืคื•ืŸ ื“ื™ ืฉื•ืจื” ื ืึธืš ื“ื™ ื ืึทืœ ื‘ื™ื™ื˜ ืื•ืŸ, ืื™ืŸ ื“ืขืจ ืึทื•ื•ืขืง ืคื•ืŸ ื™ืงืกืคึผืœื™ืกืึทื˜ ืจื™ืกื˜ืจื™ืงืฉืึทื ื– ืื•ื™ืฃ ื“ื™ ืœืขื ื’, ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึทื ื˜ืจืึธื•ืœื“ ื“ื•ืจืš ื“ื™ ืึทื˜ืึทืงืขืจ).

ืึทื–ื•ื™ ื•ื•ืึธืก ืื™ื– ื“ืขืจ ื’ืจื™ื™ึทื– ืื•ืŸ ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืฆื• ืคืึทืจืžื™ื™ึทื“ืŸ ืขืก?

ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื–ืฉื•ืง ืื™ืŸ nginx? ื™ืึธ, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ, ื•ื•ื™ื™ึทืœ ืœื™ืงื™ื ื’ ื–ื™ืงืึธืจืŸ ืื™ื ื”ืึทืœื˜ ืื™ื– ืึท ื˜ืขื•ืช ืื™ืŸ ืงื™ื™ืŸ ืคืึทืœ.

ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื–ืฉื•ืง ืื™ืŸ OpenResty? ื™ืึธ, ืื™ืŸ ืžื™ื ื“ืกื˜ืขืจ ื“ื™ ืึทืจื•ื™ืกื’ืขื‘ืŸ ืคื•ืŸ ื“ื™ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคื•ืŸ ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ื’ืขืคึฟื™ื ื˜ ื“ื•ืจืš OpenResty ืื™ื– ื ื™ืฉื˜ ื™ื ื•ื•ืขืกื˜ืึทื’ื™ื™ื˜ืึทื“ ืื•ืŸ ื“ืึทืงื™ื•ืžืขื ื˜ืึทื“.

ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ / ื ื•ืฆืŸ ื˜ืขื•ืช ืžื™ื˜ OpenResty? ื™ืึธ, ื•ื•ื™ื™ึทืœ ืื™ืŸ ื“ืขืจ ืึทื•ื•ืขืง ืคื•ืŸ ืึท ื™ืงืกืคึผืœื™ืกืึทื˜ ื•ื™ืกื–ืึธื’ื•ื ื’, ืึทืŸ ืึทื ื•ื•ืขืจืึทืคื™ื™ื“ ื”ืึทืฉืึธืจืข ืื™ื– ื’ืขืžืื›ื˜ ื•ื•ืขื’ืŸ ื“ื™ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคื•ืŸ ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ื’ืขื ื™ืฆื˜.

ื•ื•ืึธืก ืคื•ืŸ ื“ื™ ื‘ืึทื’ื– ืื™ื– ืึท ื–ื™ื›ืขืจื”ื™ื™ื˜ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืžื™ื˜ ืึท ื‘ืจื™ื™ื˜ื”ืึทืจืฆื™ืงื™ื™ื˜ ืคื•ืŸ $ 10000? ืคึฟืึทืจ ืื•ื ื“ื–, ื“ืึธืก ืื™ื– ื‘ื›ืœืœ ื ื™ืฉื˜ ื•ื•ื™ื›ื˜ื™ืง. ืื™ืŸ ืงื™ื™ืŸ ื•ื•ื™ื™ื›ื•ื•ืืจื’, ืกืคึผืขืฆื™ืขืœ ืื™ืŸ ื“ื™ ื™ื ื˜ืขืจืกืขืงืฉืึทืŸ ืคื•ืŸ ืขื˜ืœืขื›ืข ืงืึทืžืคึผืึธื•ื ืึทื ืฅ, ืกืคึผืขืฆื™ืขืœ ื“ื™ ืฆื•ื’ืขืฉื˜ืขืœื˜ ื“ื•ืจืš ืคืึทืจืฉื™ื“ืขื ืข ืคึผืจืึทื“ื–ืฉืขืงืก ืื•ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก, ืงื™ื™ืŸ ืื™ื™ื ืขืจ ืงืขื ืขืŸ ื’ืึทืจืึทื ื˜ื™ืจืŸ ืึทื– ืึทืœืข ื“ื™ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ ื–ื™ื™ืขืจ ืึทืจื‘ืขื˜ ื–ืขื ืขืŸ ื‘ืึทื•ื•ื•ืกื˜ ืื•ืŸ ื“ืึทืงื™ื•ืžืขื ื˜ืึทื“ ืื•ืŸ ืึทื– ืขืก ื–ืขื ืขืŸ ืงื™ื™ืŸ ืขืจืจืึธืจืก. ื“ืขืจื™ื‘ืขืจ, ืงื™ื™ืŸ ื–ื™ื›ืขืจื”ื™ื™ื˜ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืึทืงืขืจื– ืคึผื•ื ืงื˜ ื•ื•ื• ืขืก ืึทืคืขืงืฅ ื–ื™ื›ืขืจื”ื™ื™ื˜.

ืื™ืŸ ืงื™ื™ืŸ ืคืึทืœ, ืขืก ืื™ื– ื’ื•ื˜ ืคื™ืจ ืฆื• ื ืึธืจืžืึทืœื™ื™ื– ืึธื“ืขืจ ื‘ืึทื’ืจืขื ืขืฆืŸ / ืคื™ืœื˜ืขืจ ื•ื•ื™ ืคื™ืœ ื•ื•ื™ ืžืขื’ืœืขืš ื“ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ื“ืึทื˜ืŸ ื•ื•ืึธืก ื’ื™ื™ื˜ ืื™ืŸ ืงื™ื™ืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืžืึธื“ื•ืœืข / API, ืกื™ื™ึทื“ืŸ ืขืก ื–ืขื ืขืŸ ื™ืงืกืคึผืœื™ืกืึทื˜ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืื•ืŸ ืึท ืงืœืึธืจ ืคืืจืฉื˜ืื ื“ ืึทื– ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ืคืืจืœืื ื’ื˜.

ืขืจืจืึทื˜ืึท

ืคื•ืŸ ื“ืขืจืคืึทืจื•ื ื’ ืคึฟืจื™ึดืขืจื“ื™ืงืข ืึทืจื˜ื™ืงืœ, ืœืฉื ืฉืžื™ืจื” ืขืœ ื˜ื”ืจืช ื”ืœืฉื•ืŸ:

ื–ืฉื•ืง ื‘ืจื™ื™ื˜ื”ืึทืจืฆื™ืงื™ื™ื˜ - ื–ืฉื•ืง ื’ื™ื™ืขื’ ืคืึทืจืžืขืกื˜
ื–ืฉื•ืง ื‘ืึทืจื™ื›ื˜ - ื˜ืขื•ืช ืึธื ื–ืึธื’
ืจื™ื“ื™ืจืขืงื˜ - ืจื™ื“ืขืจืขืงืฉืึทืŸ
ืึธืคึฟืŸ ืžืงื•ืจ - ืึธืคึฟืŸ ืžืงื•ืจ
ืขืจืจืึทื˜ืึท - ืึทืจื‘ืขื˜ ืื•ื™ืฃ ืžื™ืกื˜ื™ื™ืงืก

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’