赛博地球杯线下赛WEB_RCE Write_up
2018-01-30 11:17
281 查看
这次参与赛博地球杯线下赛出题,看到巨佬们强还是强啊,先膜一下,然后献上自己的出题思路,萌新出题,轻喷 !!!
不过可以注意到cookie中存在isLogin=0,设置cookie,isLogin=1,发现成功登录
admin/admin.php?file=….//….//….//….//….//….//etc/passwd&ext=
可以成功包含文件
不过尝试hint.php会发现是文件包含,不能显示源代码,伪协议也无法使用
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,查看hack.php,我们可以看到webshell加了混淆和替换,将这些混淆替换掉,就可以看到webshell的源码了,
利用weevely连接webshell,但是我们发现源码中并没有给我们weevely连接的密码,但是源码中有两个变量
审计weevely源码,我们会知道weevely生成的webshell进行连接时密码的验证方式是将我们输入的密码进行md5加密然后取md5加密后的字符串后8位,即就是我们源码中的42f7和e9ac
所以在我们不知道连接密码的时候,我们可以直接修改weevely源码,强行让他的share_key等于我们的webshell的42f7e9ac然后不论我们输入什么密码都可以直接连接webshell
成功RCE
查看数据包,跟踪tcp流,我们可以看出这是weevely的数据包,题目提示,flag在数据包中,所以我们需要解密这个webshell。
根据这个加密函数,编写自己的解密方法,直接解密得到flag:
第一步、登录
查看网站发现网站无法登录,并且根据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:
相关文章推荐
- SWPU CTF 2017 Web WriteUp
- bugku Web write up 一
- SniperOJ WEB writeup
- 2016第七季极客大挑战web部分write up
- bugkuCTF Writeup (Web)10-14
- bugku Web write up 二
- 南京邮电大学网络攻防平台WriteUP——WEB(中)
- ASIS CTF - 三个魔法Web关WriteUp
- hctf2016 web 部分WriteUp.md
- 2017合天全国高校网安联赛专题赛--赛前指导练习题web进阶篇Writeup
- x-nuca web赛前训练 write up
- CSTC-2017-Web-writeup
- bugkuCTF Writeup (Web)22-25
- 0CTF2017 WEB WriteUp
- PCTF2016 Web WriteUp
- NJCTF 2017 web Writeup
- 第十届全国大学生信息安全竞赛一道Web题的Writeup
- Bugku ctf writeup--web进阶-Bugku-cms1
- bugkuCTF Writeup (Web)41-44
- 第二届TSCTF比赛writeup及心得-Web