Несанкционированный доступ к терминалам серверов с операционными системами семейства UNIX. На примере octopus.stu.lipetsk.ru

Страница: 8/11

В целом, вычислительная сеть университета администрируется весьма неплохо, нужно отдать должное системным администраторам. На серверах стоят последние версии операционных систем. Однако на chuck.stu.lipetsk.ru почему-то у обычных пользователей нет прав на компилирование Си программ. Почему? Может это и есть слабое звено в администрировании, или это еще одна предосторожность администратора? Хотя на tomcat.am.lstu обычным смертным разрешено…

Вообще-то взлом octopus.stu.lipetsk.ru был бы неуважением своей же кафедры. Ведь та защита которая там присутствует направлена не для того, чтобы предотвратить проникновение злоумышленника, а для элементарной защиты от неопытных пользователей.

ПРИЛОЖЕНИЕ.

В целях безопасности, приводим только фрагменты программы. Файл john.c

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <sys/stat.h>

#include "arch.h"

#include "misc.h"

#include "params.h"

#include "path.h"

#include "memory.h"

#include "list.h"

#include "tty.h"

#include "signals.h"

#include "idle.h"

#include "common.h"

#include "formats.h"

#include "loader.h"

#include "logger.h"

#include "status.h"

#include "options.h"

#include "config.h"

#include "bench.h"

#include "charset.h"

#include "single.h"

#include "wordlist.h"

#include "inc.h"

#include "external.h"

#include "batch.h"

#if CPU_DETECT

extern int CPU_detect();

#endif

extern struct fmt_main fmt_DES, fmt_BSDI, fmt_MD5, fmt_BF;

extern struct fmt_main fmt_AFS, fmt_LM;

extern int unshadow(int argc, char **argv);

extern int unafs(int argc, char **argv);

extern int unique(int argc, char **argv);

static struct db_main database;

static struct fmt_main dummy_format;

static void john_register_one(struct fmt_main *format)

{

if (options.format)

if (strcmp(options.format, format->params.label)) return;

fmt_register(format);

}

static void john_register_all()

{

if (options.format) strlwr(options.format);

john_register_one(&fmt_DES);

john_register_one(&fmt_BSDI);

john_register_one(&fmt_MD5);

john_register_one(&fmt_BF);

john_register_one(&fmt_AFS);

john_register_one(&fmt_LM);

if (!fmt_list) {

fprintf(stderr, "Unknown ciphertext format name requested\n");

error();

}

}

static void john_load()

{

struct list_entry *current;

umask(077);

if (options.flags & FLG_EXTERNAL_CHK)

ext_init(options.external);

if (options.flags & FLG_MAKECHARS_CHK) {

options.loader.flags |= DB_CRACKED;

ldr_init_database(&database, &options.loader);

if (options.flags & FLG_PASSWD) {

ldr_show_pot_file(&database, LOG_NAME);

database.options->flags |= DB_PLAINTEXTS;

if ((current = options.passwd->head))

do {

ldr_show_pw_file(&database, current->data);

} while ((current = current->next));

} else {

database.options->flags |= DB_PLAINTEXTS;

ldr_show_pot_file(&database, LOG_NAME);

}

return;

}

if (options.flags & FLG_STDOUT) {

ldr_init_database(&database, &options.loader);

database.format = &dummy_format;

memset(&dummy_format, 0, sizeof(dummy_format));

dummy_format.params.plaintext_length = options.length;

dummy_format.params.flags = FMT_CASE | FMT_8_BIT;

}

if (options.flags & FLG_PASSWD) {

if (options.flags & FLG_SHOW_CHK) {

options.loader.flags |= DB_CRACKED;

ldr_init_database(&database, &options.loader);

ldr_show_pot_file(&database, LOG_NAME);

if ((current = options.passwd->head))

do {

ldr_show_pw_file(&database, current->data);

Реферат опубликован: 25/10/2008