您的位置:首页 > 其它

赛博地球杯线下赛WEB_RCE Write_up

2018-01-30 11:17 281 查看
这次参与赛博地球杯线下赛出题,看到巨佬们强还是强啊,先膜一下,然后献上自己的出题思路,萌新出题,轻喷 !!!

第一步、登录

查看网站发现网站无法登录,并且根据robots.txt能发现hint.php和hack.php



不过可以注意到cookie中存在isLogin=0,设置cookie,isLogin=1,发现成功登录



第二步、文件包含

成功登录,发现一个管理页面admin/admin.php?file=index&ext=php,推测存在文件包含,可以发现存在过滤,不过可以绕过,访问

admin/admin.php?file=….//….//….//….//….//….//etc/passwd&ext=

可以成功包含文件



不过尝试hint.php会发现是文件包含,不能显示源代码,伪协议也无法使用



第三步、审计nginx配置

不过可以读取一些配置文件,比如读取nginx配置文件

admin/admin.php?file=….//….//….//….//….//….//etc/nginx/sites-enabled/default&ext=

可以发现配置文件中存在问题



存在一个location是/web-img,使用alias指向了/images/,不过location的后面没有/,alias的后面有斜杠,存在隐患

访问/web-img../,发现列出了根目录



由于这个location不解析php,

访问/web-img../usr/share/nginx/html/hint.php获得flag的重要信息



hint.php中提示我们flag存在于FLAGFLAGFLAGFLAG.pcapng中,我们尝试访问/web-img../usr/share/nginx/html/FLAGFLAGFLAGFLAG.pcapng发现403 forbidden,无法获取FLAGFLAGFLAGFLAG.pcapng。这里我们有两种方式获取FLAGFLAGFLAGFLAG.pcapng。

一种是通过文件包含对FLAGFLAGFLAGFLAG.pcapng源码数据包进行分析:

访问:/admin/admin.php?file=….//FLAGFLAGFLAGFLAG.pcapng&ext=得到数据包源码



第二种是利用题目中给的hack.php的webshell进行连接,下载数据包进行查看。这里主要说明第二种方式:

第四步、根据hack.php进行webshell连接RCE

最初robots.txt还提示了我们一个hack.php,我们根据上面数据包分析也可以发现hack.php就是利用weevely生成的webshell,

通过最前的方法,下载hack.php,查看hack.php,我们可以看到webshell加了混淆和替换,将这些混淆替换掉,就可以看到webshell的源码了,





利用weevely连接webshell,但是我们发现源码中并没有给我们weevely连接的密码,但是源码中有两个变量
$kh="42f7"
$kf="e9ac"


审计weevely源码,我们会知道weevely生成的webshell进行连接时密码的验证方式是将我们输入的密码进行md5加密然后取md5加密后的字符串后8位,即就是我们源码中的42f7和e9ac



所以在我们不知道连接密码的时候,我们可以直接修改weevely源码,强行让他的share_key等于我们的webshell的42f7e9ac然后不论我们输入什么密码都可以直接连接webshell



成功RCE



第五步、数据包分析

成功连接shell,利用weevely的file_download命令下载FLAGFLAGFLAGFLAG.pcapng数据包。

查看数据包,跟踪tcp流,我们可以看出这是weevely的数据包,题目提示,flag在数据包中,所以我们需要解密这个webshell。



第六步、weevely源码分析

从github中下载weevely3并分析weevely3的源码,我们可以知道weevely执行命令操作的加密方式



根据这个加密函数,编写自己的解密方法,直接解密得到flag:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CTF Write_up WEB