2017强网杯线下AWD攻防总结(适合新手)

2017-10-21 12:16:39 71 69797 3


这篇文章首发于个人博客https://iewoaix8736.github.io/
鉴于刚建立博客,比较少人看,所以在t00ls分享给大家,欢迎来交流


前言:
本菜为高校组,这篇文章适合新手学习参考(dalao飘过,不喜勿喷)

AWD攻击

这次线下攻防用的是一个Finecms,版本是5.0.9的

之前对这个cms并不了解

现在复现一下,

从哪里跌倒,就从哪里爬起来。


朋友给我看了他审计的一片文章

http://www.cnblogs.com/post/readauth?url=/test404/p/7351144.html(密码:panghuf)
其实百度也很多,

5.0.9这个版本存在头像上传getshell漏洞


比赛的源码是修改了的,先来看看
    /**
     *  上传头像处理
     *  传入头像压缩包,解压到指定文件夹后删除非图片文件
     */
    public function upload() {

        // 创建图片存储文件夹
        $dir = SYS_UPLOAD_PATH.'/member/'.$this->uid.'/';
        @dr_dir_delete($dir);
        !is_dir($dir) && dr_mkdirs($dir);

        if ($_POST['tx']) {
            $file = str_replace(' ', '+', $_POST['tx']);
            if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result)){
                $bad_ext=array('php','php3','php4','php5');
                if(in_array($result[2],$bad_ext)){
                   exit('hack');
                }
                $new_file = $dir.'0x0.'.$result[2];
               
                if (!@file_put_contents($new_file, base64_decode(str_replace($result[1], '', $file)))) {
                    exit(dr_json(0, '目录权限不足或磁盘已满'));
                } else {
                    $this->load->library('image_lib');
                    $config['create_thumb'] = TRUE;
                    $config['thumb_marker'] = '';
                    $config['maintain_ratio'] = FALSE;
                    $config['source_image'] = $new_file;
                    foreach (array(30, 45, 90, 180) as $a) {
                        $config['width'] = $config['height'] = $a;
                        $config['new_image'] = $dir.$a.'x'.$a.'.'.$result[2];
                        $this->image_lib->initialize($config);
                        if (!$this->image_lib->resize()) {
                            exit(dr_json(0, '上传错误:'.$this->image_lib->display_errors()));
                            break;
                        }
                    }
                    list($width, $height, $type, $attr) = getimagesize($dir.'45x45.'.$result[2]);
                    !$type && exit(dr_json(0, '图片字符串不规范'));
                }
            } else {

                exit(dr_json(0, '图片字符串不规范'));
            }
        } else {
            exit(dr_json(0, '图片不存在'));
        }

// 上传图片到服务器
        if (defined('UCSSO_API')) {
            $rt = ucsso_avatar($this->uid, file_get_contents($dir.'90x90.jpg'));
            !$rt['code'] && $this->_json(0, fc_lang('通信失败:%s', $rt['msg']));
        }


        exit('1');
    }

}


可以看到这一段代码
$bad_ext=array('php','php3','php4','php5');


这里把基本把php后缀的文件都给屏蔽了

但是忘了我们还有phtml

PHTML(有时叫做PHP)网页是一种包含PHP(一种和JavaScript或Microsoft VBScript类似的语言)脚本的网页和ASP一样,PHP脚本镶嵌在网页的HTML代码之中。

其实比赛中应该要想到了,之前CTF就有遇到过,我想我可能被打懵了吧。。。


这里先上传一个jpg的一句话

PS:因为直接上传的话phtml可能不行,他会判断是不是图片.




然后再点击保存抓包



然后将这里jpeg改成phtml




然后Forward,他会报错



但是我们看源码,并没有这一句英文的错误,不管他,进目录看看



到目录上看看,果然上传上去了



然后菜刀连接直接可以在根目录上看到flag了
这里就不演示了



防御:
这里说下防御方法
一般都会给你ssh的账号密码,
登录上去down下源码,然后自己修改代码



1.修改代码
$bad_ext=array('php','php3','php4','php5');
可以看到这段代码,没过滤phtml,这里可以添加上去,

也可以添加其他后缀的文件,免得dalao们各种奇淫技巧突破,

比赛后还听到有dalao说上传asp的增加权限,

这里我就不清楚了,不过也可以添加上去过滤掉。



2.修改登录密码
比赛中很多后台登录都是弱口令的


admin密码其实可以在数据库中找到

比赛中我是直接弱口令admin上去的

然后手速要快,修改之后一般人就无法用你账号进入后台了



3.修改注册代码


这里是注册的代码

你可以修改成不管怎么输入最后都注册不了,

改完admin密码,改完注册代码后基本上可以防御绝大多数进攻了

这样可以不用删除这个注册页面,删除的话会判断down机,扣分



4.挂waf
比赛后跟dalao交谈,说除了头像上传外还有一处命令执行漏洞,

这个时候就要用到waf了,

因为比赛中一般是user普通用户,没有权限重启服务

所以只能采用包含waf脚本了

可以直接包含在index里面,注意waf所在目录



你可以添加过滤各种函数,符号,base64编码等等

这样可以有效抵御一般的命令执行了(dalao路过)

当然,如果会修改那个漏洞更好。




后续:
好了,到这里就全部结束了,本辣鸡只能吹到这里,
欢迎各位dalao来指点一二,
有喜欢打比赛的也可以交流交流,
有dalao不嫌弃的话可以收了我,哈哈哈哈



再......后续:
比赛不是唯一,能学到东西就好。

能交到很多朋友,我很高兴。

每经历一次比赛就成长一次,

多总结,提升自己。

最后,最后,

感谢支持我的朋友.

TCV期望值:0.01

关于作者

然后呢5篇文章279篇回复

评论71次

要评论?请先  登录  或  注册
  • 71楼
    2018-12-3 10:22

    phtml,这样的后缀绕过,学xi了。

  • 70楼
    2018-3-5 22:28

    CTF的操作,简直是

  • 69楼
    2018-2-24 15:08
    EazyLov3

    php3,php4,php5,phtml这些都是默认解析的吗,我用phpstudy试了一下,好像都没有解析

    1

    得去apache配置文件里设置才能解析

  • 68楼
    2018-2-23 10:58
    Anonymous

    跟企业组的题目不一样,顺便说说靶场的呀?

    1

    企业的靶场web方面我记得是一个metinfo 5.3.1的注入加后台getshell,另一个是IISput+php5解析,后续的有一个UDF提权,其他不记得了

  • 67楼
    2018-2-23 10:40

    phtml后缀,受教了

  • 66楼
    2018-2-15 21:27

    不是前面说上传不上去呀,为什么要登录进去看上传ok了呢?这个思路是怎么想的呀?

  • 65楼
    2018-1-19 00:49

    学到了, 感谢分享

  • 64楼
    2018-1-6 20:39

    phtml应该是自己搭建的解析环境吧,直接不能执行吧

  • 63楼
    2018-1-6 18:57

    这种不怎么常见啊,提供了一点新的思路,还行

  • 62楼
    2017-12-5 10:12

    phtml 很小情况下会遇到啊。。

  • 61楼
    2017-12-5 10:10

    我记得这个版本有一个命令执行的,利用命令执行就能直接写批量脚本,批量刷分就很爽了

  • 60楼
    2017-11-5 20:49

    ctf 自己最怕waf ,完全没有思路呀。

  • 59楼
    2017-11-2 09:30

    还有一个办法,文件监控,删除所有上传的图片

  • 58楼
    2017-10-30 08:35

    内网就在拿到的外网主机上面挂SOCKET程序 ,一般LINUX还好一下,有PYTHON脚本。。直入内网还是比较方便,线下不能上网还是下个WOOYUN的漏洞库比较好一些,以防万一。 上次参加下的线下比赛,是主办方发起攻击,通过查看日志进行防护得分。 郁闷的是我的WAF挂着就报HTTP500..

  • 57楼
    2017-10-28 10:38

    大佬,可以把环境分享下吗,小弟想在自己电脑上搭建下练xi

  • 56楼
    2017-10-28 09:41

    学些了。。收藏慢慢看

  • 55楼
    2017-10-27 20:19
    F0rg3t

    我在企业组被打的很惨,我们企业组的AWD是一个thinkphp3.2.3,大家都在玩那个后门

    1

    表哥稳,内推吗

  • 54楼
    2017-10-27 18:14
    F0rg3t

    还有就是强网杯不让用自己电脑,你们怎么加的waf, 现场写的吗,我准备了waf没派上用场, 因为现场写不出来

    1

    dalao是现场写waf的,不过我不是dalao

  • 53楼
    2017-10-27 18:12
    didiaofazhan

    楼主你好,根据你的博客,我搭好了Metasploitable3环境,但是接下来不知道怎么玩,求指教。。

    1

    百度搜索一下,即可安全有出metasploitable3的教程

  • 52楼
    2017-10-27 18:12
    p0sec

    强网杯就一个finecms打了一天?被吐槽看来是很正常的

    1
    然后呢

    还有靶场,我这里只写了AWD的, 那我吐槽一句,就一个finecms技不如人拿不到奖怪谁?? 我是来学xi的,我只管学xi,吐槽啥的我不管

    2
    p0sec

    https://www.t00ls.com/thread-41630-1-1.html 看本人8月份的分析吧。是不是暨南大学的大佬啊 2333 暨南大学 天下第一

    3

    我不是暨南,我好像有提到被吊打吧