从代码审计到getshell初体验

源码站上随便扒的,都说刚开始学代码审计柿子要挑软的捏,看是1.10的版本就下了,一看就不是通用型的博客系统,下载后,真是不让人失望,看来写这个系统的也是个新手啊,从源码上来看是基本只实现了功能,关键是最后还写上开发参考慕课网,我说为什么数据库多了这么多个imooc的表。根本没考虑任何安全因素,而且迁移性很不好,文件目录在html文档里写死了,而且很多post点进去都是死链,说明开发的时候就在服务器里开发的。通过这些信息基本探测出服务器目录结构完全一致,甚至表应该都是一样的。

代码审计

随手一注,留下芳香: /dologin.php

$username=$_POST['username'];
$password= md5($_POST['password']);
$autoFlag=$_POST['autoFlag'];
$verify=$_POST['verity'];
$verify1=$_SESSION['verify'];
$sql="SELECT * FROM imooc_admin where username='{$username}' and password='{$password}'";
$res=mysql_query($sql);
$res1=mysql_fetch_array($res,MYSQL_ASSOC);
if($verify==$verify1){
        }else{
             alertMes("验证码错误!","login.html");
        }    
if($res1){
           //如果选了一周自动登陆
            if($autoFlag){
                setcookie("adminId",$res1['id'],time()+7*24*3600);
                setcookie("adminName",$res1['username'],time()+7*24*3600);
                }
             $_SESSION['adminId']=$res1['id'];
             $_SESSION['adminName']=$res1['username'];
             header("location:index.html"); 
             alertMes("登录成功!",ZY_PATHW);
    }else{
             alertMes("用户名或密码错误!","login.html");
        }

代码逻辑混乱,无任何过滤,一个#号就可以非法登录

/search.php

$where=" where pName like '%".$_GET['name']."%' ";  

看的尴尬症都犯了……

随手x一x,过滤函数作怪: /funcion/message/message_submit.php

$arr['text']=strip_tags($arr['text']);//删除所有html标签

虽然不可否认,留言板作为漏洞高发区,利用了过滤函数,几乎无法进行非法操作。
但是谁能想到作者服务器上是不是存在其他敏感词过滤,然后可以通过过滤函数来绕过检测。先不做判断,如果存在则是典型的insert注入

Upload 遍地开花:

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000000))//20KB
{do}

唯一的防护了……
content-type 绕过妥妥!

虽然使用了 set-cookie cookie明文可读,但因为同时设置了session,不存在明显越权。

getshell

接下来就是很轻松的找到博主的个人的真实站点了

realurl

找到的两个SQL都无法直接执行,怀疑博主更新了安全措施。
不跟你玩硬的了0rz……

既然是直接导出源码和数据库记录那么一定是有其他可利用的地方。

因为本地调试过程中曾尝试使用测试帐号去upload,但是提示权限不足,于是突然灵光一闪会不会连数据库用户都没更改。于是很自然的本地看了下库。

localdb

很容易就得到密码了。尝试后直接进管理员后台,上传执行成功!

upload

然而执行不成功……

phpingo();直接打吧,估计禁用了关键函数。

phpinfo

好吧,禁用的差不多了。就这样吧。睡觉去。

发表评论