awd 线下攻防java防护_2017强网杯线下AWD攻防总结(适合新手)

本文介绍了在2017年强网杯线下AWD攻防赛中,针对Finecms 5.0.9版本的一个头像上传getshell漏洞的利用与防御方法。通过上传jpg一句话木马,然后修改请求扩展名为phtml,成功获取服务器权限。防御措施包括代码过滤更多文件扩展名、修改后台登录密码、调整注册代码以及挂载WAF。
摘要由CSDN通过智能技术生成

这篇文章首发于个人博客https://iewoaix8736.github.io/

鉴于刚建立博客,比较少人看,所以在t00ls分享给大家,欢迎来交流

前言:

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

AWD攻击

cff7d8c70be28be2556230265faf09bf.png

这次线下攻防用的是一个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可能不行,他会判断是不是图片.

7dac14afb2fd9055d2825ed6ffabe4ec.png

然后再点击保存抓包

36172a0396ef273c65cc6c1d153f282f.png

然后将这里jpeg改成phtml

e88d74e2e80388100d22627ba2a68f91.png

074dc2d27f9e6901ba5f4bbfcc047bc6.png

然后Forward,他会报错

776fefd21dd587985ccd06606c48ff3f.png

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

cba60cbf216f037381761b83234f549d.png

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

142e0052ffa9c7f2babf7c2ad53a7be5.png

然后菜刀连接直接可以在根目录上看到flag了

这里就不演示了

防御:

这里说下防御方法

一般都会给你ssh的账号密码,

登录上去down下源码,然后自己修改代码

1.修改代码

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

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

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

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

2.修改登录密码

比赛中很多后台登录都是弱口令的

9b2a3f6eb887fa9cc4bbea7f1817f6c2.png

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

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

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

3.修改注册代码

5fb687ed807c859cefd21593c270f0b1.png

这里是注册的代码

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

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

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

4.挂waf

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

这个时候就要用到waf了,

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

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

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

0eb86e91db2a42f3666ee4df76c35341.png

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

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

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

后续:

好了,到这里就全部结束了,本辣鸡只能吹到这里,

欢迎各位dalao来指点一二,

有喜欢打比赛的也可以交流交流,

有dalao不嫌弃的话可以收了我,哈哈哈哈

再......后续:

比赛不是唯一,能学到东西就好。

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

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

多总结,提升自己。

最后,最后,

感谢支持我的朋友.

TCV期望值:0.01

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值