凡火火。 发表于 2014-12-16 10:32:28

UWA 最新版本2.x组合拳

本帖最后由 凡火火。 于 2014-12-16 11:10 编辑

现在好像很流行发代码审计的帖子?我也来一发
UWA 2.X(Universal Website AsThis) ,是如斯(AsThis)基于 PHP
和 MySQL 开发的通用建站系统,程序简洁、灵活而具备强大的扩展性,他将是您轻松建站的
首选利器。
样本下载地址
链接:http://pan.baidu.com/s/1eQIjPZW
密码:ax6o

Ps:现在很多刚学习代码审计的基友们都有这样一个问题 就是看了无数文章却没有动手试验的东西 所以仅以个人名义提倡代码审计贴留下源码下载地址如有条件可留下demo地址方便大家学习。


首先先放过黑盒测试 进行白盒(由于已提供源码 故本例中用图片方式贴出)
撸出代码 因为要打组合拳 所以从路径开始收集。

#01 未验证访问导致路径泄漏
记得某位大牛说过 任何来自用户的数据都是不可信的,但是应该还有一句 任何来自用户的访问都应该有验证
同样 本例中出现数个此类错误 不仅在审计中注意 在编写php程序时也应注意
问题出现在
/core/lib/core/App.class.php


在继承父类时并未验证父类是否已class 而导致直接访问出错

由此得到路径D:\php\htdocs


#02 组合拳——SQLi注入
已经得到路径了 那么下一步有两种方法
一:按部就班找sql注入得到用户进后台拿shell
二:找注入尝试root权限直接执行或者sqlmap--os-shell

既然这样 无论如何都要找到一个sql洞洞了

在/core/lib/ext/AServer.class.php 第15-42行
/* get client IP address */
        public static function get_ip() {
                $ip = '';
                if(!empty($_SERVER['HTTP_CLIENT_IP'])) {
                        $ip = $_SERVER['HTTP_CLIENT_IP'];
                }
                if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                        $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
                        if($ip) {
                                array_unshift($ips, $ip);
                                $ip = '';
                        }
                        for($i = 0; $i < count($ips); $i++) {
                                if(!preg_match("/^(10|172\.16|192\.168)\./i", $ips[$i])) {
                                        $ip = $ips[$i];
                                        break;
                                }
                        }
                }
                $ip = $ip ? $ip : $_SERVER['REMOTE_ADDR'];
                $long = sprintf("%u", ip2long($ip));
                return $long ? $ip : '0.0.0.0';
        }

        /* get client browser previous url */
        public static function get_preUrl() {
                return $_SERVER['HTTP_REFERER'];
        }

我们的http头部是可以控制的,那么下面的追踪是否带入库就让大家自己研究下吧 Ps在登录附近哦~

#03 getshell
进入后台之后 我们发现似乎没什么好利用的 因为和代码等等无关 是利用某一个功能 所以直接给出POC
       
依次点击后上传提供的plugin
然后点击安装
最后访问http://08sec.com/08.php 密码08sec

插件下载地址:
链接:http://pan.baidu.com/s/1pJHR68z 密码:n3ph

契约 发表于 2014-12-16 11:28:11

这个插件是用来干啥的?

U神V5 发表于 2014-12-16 12:10:41

审的太简单

super 发表于 2014-12-16 12:19:26

支持支持            

ICBM 发表于 2014-12-16 13:28:01

审计给跪了

nextdoor 发表于 2014-12-16 14:10:10

$long = sprintf("%u", ip2long($ip));
想问一下ip地址怎么会被ip2long函数绕过的?
好像如果ip中带有字符串的话,ip2long函数就会返回0

csadsl 发表于 2014-12-17 08:49:04

审计的后面省略很多,不过思路很清晰

fl0at 发表于 2014-12-31 03:34:49

感谢分享~

longzhipo 发表于 2023-9-18 15:25:26

这是啥浏览器
页: [1]
查看完整版本: UWA 最新版本2.x组合拳