开发者俱乐部

标题: 友情测试安徽新华学校 [打印本页]

作者: true    时间: 2016-2-3 23:56
标题: 友情测试安徽新华学校
本帖最后由 true 于 2016-2-4 00:08 编辑

纯属友情:
原因是有一个朋友在这学校读书,准备过几天去他们学校玩下,于是职业病又来了打算测试下他们学校的安全。
经过简单的抓取连接扫描注入目标锁定在招生就业网。
一共是四个ip是这学校的在同一C段。
让我们来分析下这服务器的情况:
1:linux+php+mysql4    mysql4没有information_schema这个虚拟裤。
2:mysql root权限      可以读文件。
3:GPC 为on                 URL情况下不可以写文件。
4:后台地址也找好了。
5:没有发现类似phpmyadmin这样的管理软件。
6:扫描结果没发现上传漏洞和其他些可以直接写shell的远程执行代码的利用。

大致情况就这样:
思路:
1:mysql4+root :找到物理路径,读取文件社工管理。
2:爆力猜表和字段最后进后台拿shell。
3:利用mysql远连写shell。(发现不可以连)
从目前来看2看起来容易实现,因为毕竟程序员还是喜欢用常用的单词来做表名。

正始开工:
利用注入点。先手工确定下是不是存在注入。

[attach]1[/attach]


看图吧。代码都很清楚。

打算丢工具去跑表。结果失败没有找到。
这个时候load_file()就发威作用了。 找了几个常用的地址去读。

/var/www/html/include/web_concent.php 不存在
/etc/httpd/conf/httpd.conf       不存在
/usr/local/apache/conf/extra      不存在
/usr/local/apache/conf/httpd.conf   不存在
/usr/local/apache2/conf/httpd.conf  存在。
并找到了目标站的路径。路径:/home/wwwroot/zhaosheng.axhu.cn/
有了路径我们就好读网站源码了。直接读后台文件:admin/index.php本来想构造下万能密码的,想起来了GPC为on。
好嘛,那我们找到验证后台的SQL语句来。找出表名和字段名。
表名:web_user  字段名:username,password。工具增加表名和字段名,很快得出了结果。
但是密码是加密的,当时没注意以为是md5加密。去解密的时候提示不符合。直接明文试下也失败了。
这个时候,去尝试了下用mysql的root密码社工失败。
暂时陷入了僵局...
继续读后台文件看能发现什么验证饶过不,或是能否发现些包含,eval等。结果还是没收获。
最后回到后台验证页面,刚发现了他的验证并不是在这个文件里完成的,而是在包含的别的文件里完成。
一路读代码跟踪代码到公共函数文件里。  后台文件code:
<?php/********************************************
/      作者:匿名
/      时间:不详
/      作用:用户登录
********************************************/
require'./include/common.inc.php';
$username       = $_POST['username'];
$password       = $_POST['password'];
if(!empty($username) && !empty($password) && !empty($web_auth_key)){   
     $UserInfo =UserLogin($username,$password);
       if($UserInfo) {               
//保存用户信息              
SetUserInfo($UserInfo);               
//修改登陆次数和状态            
$sql="UPDATE                    web_user                     SET
Online=1,Logincount=Logincount+1,Lasttime='".$PHP_DATE."'                          WHERE
Username='".$username."'";   
          $db->sql_query($sql);            
//添加日志              
AddLog("登录系统");                           
省略代码....?>
最后跟到global.func.php发现公共函数里有个加密解密函数。
/**
*加密,分别能加密和解密。通过传入$operation = 'ENCODE'|'DECODE' 来实现。
*/

functionauthcode($string,$operation='ENCODE') {
      if($operation=='ENCODE'){
              $OutTxt = "";
             for ($x=0;$x<strlen($string);$x++) {
                     $nr= ord($string[$x]);
                    if($nr < 128) {
                           $nr += 128;
                    }
                     elseif($nr > 127) {
                            $nr -= 128;
                     }
                     $nr= 255 - $nr;
                     $OutTxt.= sprintf("%02x", $nr);
              }
             return $OutTxt;      
}else{
                                       $OutTxt = "";
              for ($x=0;$x<(strlen($string)/2);$x++){
                     $nr= hexdec($string[$x * 2] . $string[($x * 2) + 1]);
                     $nr= 255 - $nr;
                    if($nr < 128) {
                           $nr += 128;
                    }                     
elseif($nr > 127) {
                            $nr -= 128;
                    }
                    $OutTxt.= chr($nr);
              }
              return $OutTxt;
      }这下好了,我们把得的密码放本地来解密就ok!


登录后台:

后台拿shell也很简单,在模板那里可以直接上传php马。但是路径模糊一段时间。

正好我手上有个2.6.9通杀的exp Chmod 777 ./2.6.9./2.6.9

内网ip 今天到公司小马继续用lcx把端口转发出来了。我继续把其他的ipshell拿下。
这上面有其他28个子站,但是提权不成功。内核2.6.9-42 主站也找到了突破口只是数据库不定的超时,现在还没有弄下来,也是一个mssql sa权限注入。

支持多语句,经过我简单修复后不再提示联机丛书那个错误了,但不为什么老是爆数据库连接超时。所以只有等服务器不是那么卡再继续了。



此文章转载别处。。最后、、原作者与基友提权成功。仅供参考。。



作者: jack    时间: 2016-2-4 00:13
没有密码密文的获取过程呢?莫非数据库是ACCESS的?
作者: true    时间: 2016-2-4 00:19
jack 发表于 2016-2-4 00:13
没有密码密文的获取过程呢?莫非数据库是ACCESS的?

是mysql,你仔细看过程 。在解密码 是在 下载个 文件 在本地 跑的 、、、
作者: jack    时间: 2016-2-4 00:22
true 发表于 2016-2-4 00:19
是mysql,你仔细看过程 。在解密码 是在 下载个 文件 在本地 跑的 、、、

原来如此...




欢迎光临 开发者俱乐部 (http://xodn.com/) Powered by Discuz! X3.2