前言
这靶场还是几个月前打的了,,太久没更新了,现在把它发出来。
靶机的基本信息
靶机名称:Tr0ll: 1
发布日期:2014 年 8 月 14 日
作者:Maleus
系列:Tr0ll
靶机地址:http://overflowsecurity.com/?p=70
靶机描述:Tr0ll 的灵感来自于 OSCP 实验室内对机器的不断拖钓。
目标很简单,获取 root 并从 /root 目录中获取 Proof.txt。
不适合容易受挫的人!公平警告,前方有巨魔!
难度:初学者;类型:boot2root
开始
1.确定目标IP
先用nmap确定一下靶机的IP地址。
sudo nmap -sS 10.10.10.1/24

可以确定目标的IP是10.10.10.130,上面那个10.10.10.128是我们自己攻击机的IP。
2.收集目标IP信息
再针对目标IP进行一次详细的扫描。
sudo nmap -sV -O -A -p 1-65535 10.10.10.130
-sV 服务版本信息
-O 操作系统版本
-A 综合扫描
-p 指定扫描端口范围
如下图,

结果显示靶机开启21(ftp),22(ssh),80(http)端口。
3.登录FTP下载
我们一个个看,先看21端口,是开启了匿名访问的,登录上去(用户名是anonymous,密码为空就可以)。

这样我们就登录上去了,dir列出当前目录下的文件,只有一个lol.pcap文件,用get将文件下载下来,如下。

4.wireshark分析
pcap文件是常用的数据报存储格式,可以理解为就是一种文件格式,只不过里面的数据是按照特定格式存储的,所以我们想要解析里面的数据,也必须按照一定的格式。普通的记事本打开pcap文件显示的是乱码,用wireshark这种抓包工具就可以正常打开这种文件,愉快地查看里面的网络数据报了,同时wireshark也可以生成这种格式的文件。

可以看到,用wireshark打开后,密密麻麻的有几十个数据包。仔细筛选后可以发现有一个叫秘密资料的txt,如下。


点开后是一段文本:Well, well, well, aren't you just a clever little devil, you almost found the sup3rs3cr3tdirlol。给我们的这个字符串sup3rs3cr3tdirlol不知道是什么,猜测可能是ssh的账户or密码,也可能是一个web目录。那么从web入手,

首页是一张嘲讽我们的图片,除了可能存在的图片隐写之外,这里没有什么有用的信息。我们尝试访问/sup3rs3cr3tdirlol目录,

不出所料,目录下有一个名为roflmao的文件,先下载下来。
5.分析roflmao文件
先查看下文件类型,是一个ELF可执行文件,不了解这个格式,有点懵了。

用strings分析一下(strings 命令是在对象文件或二进制文件中查找可打印的字符串。字符串是4个或者更多可打印字符串的任意序列,以换行符或者空字符结束)。

找到一句话让我们找到0x0856BF这个地址以继续,猜测又是一个目录,丢到浏览器看看。

从这个目录可以得到两个txt,一个名为which_one_lol.txt,内容如下。

另一个名为Pass.txt,内容就是一个字符串:Good_job_:)
6.九头蛇爆破ssh
很容易就能猜测到给我们的两个txt一个包含账户名,一个包含密码,应该是要我们去爆破,我们将其分别保存为一个users和pass文件,用九头蛇爆破靶机的ssh服务。
hydra -L /home/kali/Desktop/Tr0ll/users -P /home/kali/Desktop/Tr0ll/pass -vV -t 50 ssh://10.10.10.130
-L 指定一个用户名列表文件
-P 指定一个密码列表文件
-vV 显示详细过程
-t 爆破线程数

显示失败了,找了好久原因,最后发现其实文件名:Pass.txt才是密码,被作者耍了,,

7.提权
先登录ssh(用户名overflow,密码:Pass.txt)。

用id可以查看当前用户权限,目前我们没有root权限所以是进不了/root目录下拿到flag的,所以需要提高我们的权限。

用uname -a查看一下靶机系统的内核版本

去Google一下这个版本的exploit。


点进去下载就可以,当然kali的msf也是有的,如下。

用copy将这个exp复制出来,
cp /usr/share/exploitdb/exploits/linux/local/37292.c /home/kali/Desktop/Tr0ll/
然后再开启一个临时的http服务,以此将exp上传到目标靶机。
sudo python -m SimpleHTTPServer 5555

先要将目录跳转到tmp下,不然没有权限,然后用wget下载exp,再用gcc编译一下,输出为一个名为exp的可执行文件,执行后再查看我们的权限就可以看到是root权限了。root目录下的proof.txt就是flag。

8.其他
到上面为止,我们已经拿到了flag。但其实在实际做的过程中还会发现一个问题,在与靶机的ssh连接中,时不时的会断开连接,一开始我也很纳闷,后面上网查了下:靶机用了一个脚本(/lib/log/cleaner.py),用于清除临时目录,代码如下:
#!/usr/bin/env python
import osimport os
import sysimport sys
try:try:
os.system('rm -r /tmp/* ').system('rm -r /tmp/* ')
except:except:
sys.exit().exit()
但这个脚本也并不会杀死我的会话,不过这个脚本是以root权限执行,并且全局可写,所以也可以用来提权,我就不再这里赘述了。而真正杀死会话的是在/opt目录下的lmao.py,其代码如下:
#!/usr/bin/env python
import os
os.system ('echo "TIMES UP LOL!"|wall')
os.system("pkill -u 'overflow'")
sys.exit()
所以在我们提权后把这个脚本删除,就不会出现断开连接的情况了。
总结
总体来说这个靶场算不上太难,就是会有种被作者耍了的感觉,,我想这也是作者故意为之的吧^_^
Comments | NOTHING