Mo tetahi whakaraeraetanga i...

Mo tetahi whakaraeraetanga i...

Kotahi tau ki muri, i te 21 o Poutū-te-rangi, 2019, Ko te utu mō ngā pepeke mō te kaupapa Mail.Ru I tae mai tētahi mea tino pai ki a HackerOne pūrongo bug i MaxarrI te wā i werohia ai he paita kore (ASCII 0) ki roto i te tawhā POST o tētahi tono API mēra tukutuku i whakahoki mai i tētahi aronga HTTP, i kitea ngā poraka mahara kāore anō kia tīmatahia i roto i ngā raraunga aronga, ā, i te nuinga o te wā ka kitea ngā kongakonga mai i ngā tawhā GET me ngā pane o ētahi atu tono ki te tūmau kotahi.

He ngoikoretanga nui tēnei, nā te mea kei roto i ngā tono he pihikete wātū. I muri i ētahi haora, i whakatinanahia he whakatikanga rangitahi hei tātari i te paita kore (i kitea i muri mai, kāore i ranea tēnei, nā te mea i taea tonu te werohanga CRLF/ASCII 13, 10, e āhei ai te whakahaere i ngā pane me ngā raraunga urupare HTTP. He iti ake te hiranga o tēnei, engari he hoha tonu). I taua wā anō, i tukuna te take ki ngā kaitātari haumarutanga me ngā kaiwhakawhanake hei tirotiro me te whakatika i te pūtake o te pepeke.

He taupānga tino uaua a Mail.ru Mail; he maha ngā wāhanga rerekē o te pito mua/pito muri, arā, he pūtake tuwhera (ngā mihi nui ki ngā kaiwhakawhanake pūmanawa kore utu katoa) me te mea motuhake, ka taea te whakamahi hei whakaputa urupare. I taea e mātou te whakakore i ngā wāhanga katoa engari ko nginx me openresty, ā, i taea te wehe i te raruraru i mua i te puta mai. ngx.req.set_uri() I puta te whanonga ohorere o tētahi tuhinga OpenResty (i te whakaurunga o tētahi paita kore, rārangi hou rānei mā roto i ngā tawhā GET me te tuhi anō ki roto i te ngx_http_rewrite_module, e ai ki ngā tuhinga, e whakamahia ana, ā, me mahi tonu, kāore i mahi). I arohia ngā hua pea, i tāpirihia te tātari tino kaha, ā, i manatokohia kua whakakorea e te tātari ngā ara katoa. Engari i noho tonu te tikanga i puta ai te turuturu mahara hei mea ngaro. I te marama i muri mai, i kati te pūrongo hapa i te mea kua whakatauhia, ā, i whakaroahia te rangahau mō te take o te hapa kia tae ki ngā wā pai ake.

He monomai rongonui a OpenResty e āhei ai te tuhi i ngā tuhinga Lua i roto i a Nginx, ā, e whakamahia ana i roto i ētahi kaupapa Mail.ru, nō reira kāore i whakaarohia kua ea te raruraru. I muri i ētahi wā, ka tirohia anō kia mārama ai ki ngā take tūturu, ngā hua ka puta, me te whakarato taunakitanga ki ngā kaiwhakawhanake. Ko ēnei tāngata i whai wāhi ki te keri i te waehere pūtake: Denis Denisov и Nikolay ErmishkinI puta mai ko:

  • I roto i te nginx, ina whakamahia te tuhi anō me ngā raraunga kaiwhakamahi, tera pea ka taea te whakawhiti i te whaiaronga (me te SSRF pea) i roto i ētahi whirihoranga, engari he mea mōhiotia tēnei, ā, me kitea e ngā kaitātari whirihoranga tūmau i roto i Whakakaha ake a Nginx и Kiki Mai i Yandex (āe, e whakamahia ana hoki e mātou, ngā mihi). Ina whakamahia a OpenResty, he ngāwari te ngaro i tēnei āhuatanga, engari kāore i pā ki tā mātou whirihoranga.

    Tauira whirihoranga:

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

    painga

    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
    ...

  • He hapa kei a Nginx e puta ai he turuturu mahara mēnā kei roto i te aho tuhi anō he paita kore. Ina tukuna he tukunga atu, ka tohaina e Nginx he arai mahara hou e rite ana ki te roa katoa o te aho, engari ka tāruatia te aho ki roto mā te whakamahi i tētahi mahi aho e ko te paita kore te kaiwhakamutunga aho. Nō reira, ka tāruatia te aho tae noa ki te paita kore anake; kei roto i te toenga o te arai ngā raraunga kāore anō kia tīmatahia. Ka kitea he tātari taipitopito i konei. konei.

    Tauira whirihoranga (^@ null byte)

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

    painga
    curl localhost:8337/secret -vv
    ...
    curl localhost:8337/memleak -vv
    ...
    Location: http://localhost:8337/secret
    ...

  • Ka tiakina e Nginx ngā tawhā GET mai i te werohanga pūāhua, ā, ka taea anake te whakamahi i ngā tawhā GET i te wā e tuhi anō ana. Nō reira, kāore e taea te werohanga mā roto i ngā tawhā e whakahaerehia ana e te kaiwhakamahi i roto i a Nginx. Heoi, kāore ngā tawhā POST i te tiakina. Ka tautoko a OpenResty i ngā tawhā GET me POST, nō reira mā te whakamahi i ngā tawhā POST mā OpenResty ka taea te werohanga pūāhua motuhake.

    Tauira whirihoranga:

    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;
    }
    

    hua:

    curl localhost:8337 -d "url=secret" -vv
    ...
    curl localhost:8337 -d "url=%00asdfasdfasdfasdfasdfasdfasdfasdf" -vv
    ...
    Location: http://localhost:8337/{...может содержать secret...}
    ...

Tauhohenga atu

I tukuna te raruraru ki ngā kaiwhakawhanake o nginx me OpenResty, kāore ngā kaiwhakawhanake e whakaaro ana he hapa haumarutanga tēnei i roto i te nginx, nā te mea i roto i te nginx tonu kāore he huarahi ki te whakamahi i te hapa mā te werohanga o ngā tohu motuhake, whakatikahia. te whakaaturanga ihirangi mahara i whakaputaina i te 16 o Hakihea. I roto i ngā marama e 4 mai i te pūrongo, kāore a OpenResty i hanga i tētahi huringa, ahakoa i māramahia me whai putanga haumaru o te mahi ngx.req.set_uri(). I te 18 o Poutū-te-rangi, 2020, i whakaputaina e mātou ngā mōhiohio, ā, i te 21 o Poutū-te-rangi, i tukuna e OpenResty putanga 1.15.8.3, e tāpiri ana i te tirotiro URI.

Pōtiwīka i tuhi he tuhinga pai, ā, i tangohia ngā kōrero mai i a OpenResty me Nginx (ahakoa he hē, he whakapohehe hoki te kōrero e kī ana he iti noa te wāhanga mahara e whakaaturia ana, ka whakatauhia tēnei e te roa o te aho e whai ana i te paita kore, ā, i te korenga o ngā rohe mārama mō te roa, ka taea te whakahaere e te kaiwhakaeke).

Nā, he aha te hapa, ā, me aha hoki hei ārai i tēnā?

I puta he hapa i roto i te nginx? Ae, i pera, nā te mea he hapa te turuturu o te mahara ahakoa pēhea.

I kitea ētahi hapa i roto i te OpenResty? Āe, i te iti rawa, kāore anō kia rangahaua, kia tuhia hoki te haumarutanga o ngā mahi e tukuna ana e OpenResty.

I puta he hapa whirihoranga/whakamahinga ki a OpenResty? Āe, nā te mea i te korenga o tētahi aratohu mārama, i puta he whakapae kāore anō kia manatokohia mō te haumarutanga o te mahi e whakamahia ana.

Ko tēhea o ēnei pepeke he ngoikoretanga haumarutanga utu nui $10000? Ki a mātou, ehara tēnei i te mea nui. I roto i ngā pūmanawa katoa, inā koa ka honoa ngā wāhanga maha, inā koa ko ērā e whakaratohia ana e ngā kaupapa me ngā kaiwhakawhanake rerekē, kāore e taea e tetahi te kī taurangi kua mōhiotia, kua tuhia hoki ngā taipitopito katoa o tā rātou mahi, ā, kāore he hapa. Nō reira, ka puta ake tetahi ngoikoretanga haumarutanga i te wāhi tonu e pā ana ki te haumarutanga.

Ahakoa pēhea, he mahi pai te whakataurite, te whakawhāiti/tātari rānei i te nui o ngā raraunga whakauru e haere ana ki tētahi kōwae/API o waho, ki te kore he tohutohu mārama, ā, he māramatanga mārama hoki kāore tēnei e hiahiatia.

He hē

Mai i te wheako Tuhinga o mua, hei tiaki i te parakore o te reo:

utu mō ngā pepeke - whakataetae hopu pepeke
pūrongo bug — whakamōhiotanga hapa
tuku anō - te whakawhiti anō
pūtake tuwhera - pūtake tuwhera
- mahi i ngā hapa

Source: will.com

Hokona te manaaki pono mo nga waahi me te tiaki DDoS, nga kaiwhakarato VPS VDS 🔥 Hokona he manaaki paetukutuku pono me te tiakitanga DDoS, ngā tūmau VPS VDS | ProHoster