Esempio n. 1
0
File: inject.c Progetto: r1-/webef
int catch_cookie(char **ressource , t_datathread *data)
{

    char url[MAX_SIZE_URL];
    memset(url, 0, MAX_SIZE_URL);
    char *auth=NULL;

    strncpy(url, "GET ", 4);
    url[4]='\0';

    add_proxy_header(data, url);
    if( (strlen(url)+strlen(data->opt.url.url_pre))>MAX_SIZE_URL)
        return(-2);

    strncat(url,data->opt.url.url_pre, strlen(data->opt.url.url_pre));
    if(!checkhost(data->opt.head, data->opt.headers))
    {
        if( (strlen(url) + 17 + strlen(data->opt.url.host) + 2 + 1)> MAX_SIZE_URL)
            return(-2);

        strncat(url," HTTP/1.1\r\nHost: ", 17);
        strncat(url,data->opt.url.host, strlen(data->opt.url.host));
        strncat(url,"\r\n", 2);
    }
    else
    {
        if((strlen(url) + 12)> MAX_SIZE_URL)
            return(-2);
        strncat(url," HTTP/1.1\r\n", 11);
    }
    if(data->opt.headers != NULL)
    {
        if( (strlen(url) + strlen(data->opt.headers) + 3 ) > MAX_SIZE_URL)
            return(-2);
        strncat(url, data->opt.headers, strlen(data->opt.headers));
        strncat(url, "\r\n", 2);
    }

    if(data->opt.auth.user!=NULL && data->opt.auth.pass!=NULL)
    {
        auth=basic_authent(data->opt.auth.user, data->opt.auth.pass);
        if( (strlen(url) +21+ strlen(auth) +2+1 ) > MAX_SIZE_URL)
            return(-2);
        strcat(url, "Authorization: Basic ");
        strcat(url, auth);
        strcat(url, "\r\n");
        FREE_BUF(auth);
    }
    if ( (strlen(url) +3) > MAX_SIZE_URL)
        return(-2);

    strncat(url,"\r\n", 2);

    *ressource = calloc(strlen(url)+1,1);
    memset(*ressource, 0, sizeof(*ressource));
    EXIT_IFNULL(*ressource, "Memory Error");

    strncpy(*ressource, url, strlen(url));
    return(1);
}
Esempio n. 2
0
File: inject.c Progetto: r1-/webef
int inject_header(
    char **ressource,
    t_datathread *data,
    char *word1,
    int sock,
    SSL *ssl)
{
    char url[MAX_SIZE_URL];
    memset(url, 0, MAX_SIZE_URL);
    char *auth=NULL;
    char *receive=NULL;
    unsigned int cl;
    int i=0, size;
    time_t start_time, stop_time;
    int delay;
    t_response response;
    t_cookies local_cook=data->opt.cookies;
    bool dontup=false;
    const char *Header[]= { "Cookie", "Host", "User-Agent", "Accept", "Accept-Language",
                            "Accept-Encoding", "Accept-Charset", "Keep-Alive",
                            "Connection", "Referer", NULL
                          };

    while(Header[i] != NULL || local_cook!=NULL)
    {
        if(data->opt.method != NULL && strlen(data->opt.method)< (MAX_SIZE_URL-2))
        {
            strncpy(url, data->opt.method, strlen(data->opt.method));
            url[strlen(data->opt.method)]=' ';
            url[strlen(data->opt.method)+1]='\0';
        }
        else
        {
            strncpy(url, "GET ", 4);
            url[4]='\0';
        }

        add_proxy_header(data, url);

        if( (strlen(url)+strlen(data->opt.url.url_pre))>MAX_SIZE_URL)
            return(-2);

        strncat(url,data->opt.url.url_pre, strlen(data->opt.url.url_pre));

        if(!checkhost(data->opt.head, data->opt.headers) && strcasecmp(Header[i],"Host")!=0)
        {
            if( (strlen(url) + 17 + strlen(data->opt.url.host) + 2 + 1)> MAX_SIZE_URL)
                return(-2);

            strncat(url," HTTP/1.1\r\nHost: ", 17);
            strncat(url,data->opt.url.host, strlen(data->opt.url.host));
            strncat(url,"\r\n", 2);
        }
        else
        {
            if((strlen(url) + 12)> MAX_SIZE_URL)
                return(-2);
            strncat(url," HTTP/1.1\r\n", 11);
        }

        if(data->opt.headers != NULL)
        {
            if( (strlen(url) + strlen(data->opt.headers) + 1 ) > MAX_SIZE_URL)
                return(-2);
            strncat(url, data->opt.headers, strlen(data->opt.headers));
        }

        if( (strlen(url) + strlen(Header[i]) + 5 +strlen(word1)) > MAX_SIZE_URL)
            return(-2);

        strcat(url, Header[i]);
        strcat(url, ": ");

        if(local_cook!=NULL)
        {
            if( (strlen(url) + strlen(local_cook->cookie) +3+strlen(word1)) > MAX_SIZE_URL)
                return(-2);
            strcat(url, local_cook->cookie);
            local_cook=local_cook->next_cook;
            dontup=true;
        }
        else
            dontup=false;

        if(strcasecmp(Header[i], "Host") ==0
                && (strlen(url) + strlen(data->opt.url.host) )<MAX_SIZE_URL)
            strcat(url, data->opt.url.host);

        strncat(url, word1, strlen(word1));
        strcat(url, "\r\n");

        if(data->opt.auth.user!=NULL && data->opt.auth.pass!=NULL)
        {
            auth=basic_authent(data->opt.auth.user, data->opt.auth.pass);
            if( (strlen(url) +21+ strlen(auth) +2+1 ) > MAX_SIZE_URL)
                return(-2);
            strcat(url, "Authorization: Basic ");
            strcat(url, auth);
            strcat(url, "\r\n");
            FREE_BUF(auth);
        }

        if ( (strlen(url) +3) > MAX_SIZE_URL)
            return(-2);

        strncat(url,"\r\n", 2);

        start_time=time(NULL);
        size = iosocket(sock, url, &receive, data->opt, ssl, &cl);
        stop_time=time(NULL);
        delay= stop_time-start_time;

        if(size == -1)
        {
            if(data->opt.debug)
                fprintf(stderr, "\n Read on socket ");
            continue;
        }

        response_inject(receive, size, cl, &response, &(data->opt), Header[i], word1, delay);
        memset(url, 0, MAX_SIZE_URL);
        sleep(data->opt.wait);

        if(data->opt.url.ssl)
        {
            closesocks(&ssl, sock);
            sock=opensock(data);
            if(data->opt.proxy.ip != NULL)
                prepare_connect(data, sock);
            ssl=opensocks(sock, &data->opt);
        }
        else
        {
            close(sock);
            sock=opensock(data);
        }
        if(!dontup)
            i++;
    }
    FREE_BUF(receive);

    return(1);
}
Esempio n. 3
0
bp_whoami_res *
bootparamproc_whoami_1_svc(bp_whoami_arg *whoami, struct svc_req *req)
{
    in_addr_t haddr;
    static bp_whoami_res res;
    if (debug)
        fprintf(stderr,"whoami got question for %d.%d.%d.%d\n",
                255 &  whoami->client_address.bp_address_u.ip_addr.net,
                255 & whoami->client_address.bp_address_u.ip_addr.host,
                255 &  whoami->client_address.bp_address_u.ip_addr.lh,
                255 &  whoami->client_address.bp_address_u.ip_addr.impno);
    if (dolog)
        syslog(LOG_NOTICE, "whoami got question for %d.%d.%d.%d\n",
               255 &  whoami->client_address.bp_address_u.ip_addr.net,
               255 & whoami->client_address.bp_address_u.ip_addr.host,
               255 &  whoami->client_address.bp_address_u.ip_addr.lh,
               255 &  whoami->client_address.bp_address_u.ip_addr.impno);

    bcopy((char *)&whoami->client_address.bp_address_u.ip_addr, (char *)&haddr,
          sizeof(haddr));
    he = gethostbyaddr(&haddr,sizeof(haddr),AF_INET);
    if ( ! he ) goto failed;

    if (debug) warnx("this is host %s", he->h_name);
    if (dolog) syslog(LOG_NOTICE,"This is host %s\n", he->h_name);

    strncpy(askname, he->h_name, sizeof(askname));
    askname[sizeof(askname)-1] = 0;

    if (checkhost(askname, hostname, sizeof hostname) ) {
        res.client_name = hostname;
        getdomainname(domain_name, MAX_MACHINE_NAME);
        res.domain_name = domain_name;

        if (  res.router_address.address_type != IP_ADDR_TYPE ) {
            res.router_address.address_type = IP_ADDR_TYPE;
            bcopy( &route_addr, &res.router_address.bp_address_u.ip_addr, sizeof(in_addr_t));
        }
        if (debug) fprintf(stderr,
                               "Returning %s   %s    %d.%d.%d.%d\n",
                               res.client_name,
                               res.domain_name,
                               255 &  res.router_address.bp_address_u.ip_addr.net,
                               255 & res.router_address.bp_address_u.ip_addr.host,
                               255 &  res.router_address.bp_address_u.ip_addr.lh,
                               255 & res.router_address.bp_address_u.ip_addr.impno);
        if (dolog) syslog(LOG_NOTICE,
                              "Returning %s   %s    %d.%d.%d.%d\n",
                              res.client_name,
                              res.domain_name,
                              255 &  res.router_address.bp_address_u.ip_addr.net,
                              255 & res.router_address.bp_address_u.ip_addr.host,
                              255 &  res.router_address.bp_address_u.ip_addr.lh,
                              255 & res.router_address.bp_address_u.ip_addr.impno);

        return(&res);
    }
failed:
    if (debug) warnx("whoami failed");
    if (dolog) syslog(LOG_NOTICE,"whoami failed\n");
    return(NULL);
}