本帖最后由 凡火火。 于 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行
[PHP] 纯文本查看 复制代码 /* 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
|