红队打靶:Troll1打靶思路详解(vulnhub)

目录

写在开头

第一步:主机发现和端口扫描

第二步:FTP渗透

第三步:Web渗透

第四步:ssh登录与提权

总结与思考

写在开头

 本篇博客根据大佬红队笔记的视频进行打靶,详述了打靶的每一步思路,并非复现writeup,读者耐心看完,定会有所收获。本文的打靶过程涉及到关于FTP匿名登录、strings命令、密码喷射crackmapexec、定时任务提权等。完整打靶思路详见:

「红队笔记」靶机精讲:Tr0ll - 没有大招的一次渗透,却包含10多种技巧。_哔哩哔哩_bilibili

 本文针对的靶机源于vulnhub,详情见:

Tr0ll: 1 ~ VulnHub

 下载链接见:

https://download.vulnhub.com/tr0ll/Tr0ll.rar

本靶机的目标是拿到/root下的proof.txt文件。下载成功后用vmware打开,跳出提示框请选择“我已移动该虚拟机”,然后设置为NAT模式,否则可能无法扫描到靶机!

 靶机启动后的界面如下:

第一步:主机发现和端口扫描

 常规思路,不细讲了。有关主机发现和端口扫描的命令详见我的这篇博客中关于nmap的部分:渗透测试:主机发现和端口扫描的思路方法总结(nmap+ping命令+nc.traditional+伪设备连接)

nmap -sn 10.10.10.0/24
nmap --min-rate 10000 -p- 10.10.10.133
nmap -sT -sV -O -p21,22,80 10.10.10.133
nmap -sU --min-rate 10000 -p- 10.10.10.133
nmap --script=vuln -p21,22,80 10.10.10.133

 扫描出来靶机的ip是10.10.10.133,仅开放了21,22,80三个端口,具体服务版本和操作系统扫描结果如下:

漏洞扫描也没太多发现,有几个目录枚举的文件出来:

第二步:FTP渗透

 入手点基本上就是80的Web和21的FTP,由于FTP的内容比较容易操作,因此我们先从FTP入手,尝试FTP匿名登录。首先匿名登录靶机FTP,输入anonymou,在输入密码的位置直接回车。

ftp 10.10.10.133 
anonymous

 直接登录成功。然后ls查看文件,发现有一个名为lol.pcap的文件,输入binary转化为二进制模式后把这个lol.pcap文件get下来。这里需要注意的是,如果目录下的文件不是文本.txt文件的话,需要先运行binary指令(即输入binary然后回车)转换为二进制格式,以保证通过FTP下载的文件不会损坏。

  FTP再无其他信息,下一步就是对这个pcap文件的分析,先用file查看这个文件的类型信,就是个常规的包捕获文件。

file lol.pcap

 如果分析包捕获文件的话,可能需要使用wireshark,这里只需要输入指令wireshark lol.pcap即可。此处我们重点是要关注这个pcap文件中的文本信息,因此我们只要关注其中的字符串即可,使用strings查看:

strings lol.pcap

 其中的信息有很多。重点就是提到了一个名为secret_stuff.txt的文件,并显示了这个文本文件的内容:

RETR secret_stuff.txt                                                                                                                
W150 Opening BINARY mode data connection for secret_stuff.txt (147 bytes).                      WWell, well, well, aren't you just a clever little devil, you almost found the sup3rs3cr3tdirlol:-P

Sucks, you were so close... gotta TRY HARDER! 

 大概就是说我几乎已经找到了sup3rs3cr3tdirlol,需要更进一步继续努力。sup3rs3cr3tdirlol是一种leetspeak的表达形式,就是类似于英语的象形文字,数字3就代表字母e,因此这个字符串的英文形式就是supersecretdirlol,由英语名字可以看到,这个文件有超级秘密目录lol的意思,估计这个字符串是一个比较关键的目录之类的吧,咱也不确定,一会Web渗透的时候试一试。

第三步:Web渗透

打开浏览器访问靶机ip,是一个表情包:

 查看网页源代码也没啥收获,回到最初nmap进行漏洞脚本扫描的时候,有一个secret目录,我们进入看看:

 啊这...感觉又被嘲讽了。再看一下扫出来的robot.txt

 也没什么有用信息,那就试试刚才FTP渗透的pcap包中得到的哪个超级秘密目录。把sup3rs3cr3tdirlol作为一个目录,看看有没有信息:

 果然是个关键的目录,里面有个文件rofmao,我们把他下载下来。wget下载链接或直接点击这个roflmao都可。接着先用file查看一下这个文件的信息:

 是一个ELF32位的可执行文件,总之有很多信息,当我们拿到可执行文件的时候,不要贸然执行(可能会有安全问题)。我们再用binwalk看看有没有什么相关的捆绑文件。

binwalk roflmao

 没有什么捆绑文件,下一步就是用strings查看这个可执行文件的字符串信息:

strings roflmao 

 ​果然信息有很多,其中有一些指令、编译信息,我们重点关注提示的文本信息Find address 0x0856BF to proceed,提示我们找到地址0x0856BF,0x0856BF是什么地址?有可能是内存地址,让我们构造溢出等poc,也有可能只是个url的地址。我们此处现在url试一试,将其视为一个web目录:

 还真是个目录,里面又有两个目录,good_luck和this_folder_contains_the_password,我们挨个看,先进入good_luck中:

 又一个文本文件which_one_lol.txt,我们把这个文件下载下来看一看:

 查看发现,这可能是一些用户名,可能可以用于ssh登录,至于里面的ps-aux这种感觉又像是命令,管他呢,先保留下来。下面进入目录this_folder_contains_the_password,目录名就告诉我们这个文件中包含了密码:

 里面果然有一个名为Pass.txt的文件,再把这个文件下载下来查看:

 喜提一个密码Good_job_:)  可是这个密码是哪个账号的密码呢?可以枚举尝试,这里我们用crackmapexec的方法进行尝试。首次使用crackmapexec是在红队打靶:LampSecurity:CTF7打靶思路详解(vulnhub)_Bossfrank的博客-CSDN博客

 -u指定用户名的文件,-p指定密码的文件,--continue-on-success参数用于保证当寻找到首个账号与密码的对应关系后继续碰撞。

crackmapexec ssh 10.10.10.133 -u which_one_lol.txt -p Pass.txt --continue-on-success 

 非常遗憾,并没有找到对应关系,在进行了前五次尝试失败之后,后面的尝试都无法连接了,看看ssh做了安全措施,短时间内只能尝试五个账号的登录。没关系,我们再把剩下没有尝试ssh登录的用户名命名为一个文件,然后再次尝试账号和密码的碰撞:

 可恶,竟然还是没有,这10个账号,没有一个账号的ssh密码是Good_job_:)    真是奇怪了。然后回看which_one_lol.txt这个文件,里面有一个账号比较可疑:

 也就是genphlux这一行,他说肯定不是这一个,感觉此地无银三百两呀!我们再进行ssh密码喷射的时候,把这一整行视为一个ssh登录的用户(即genphlux < -- Definitely not this one),这回我们只用genphlux作为用户名,尝试使用密码Good_job_:) 进行登录:

  可恶,依旧不对。刚刚的web目录的文件夹this_folder_contains_the_password提示这个目录存在密码呀,可咱们尝试了一圈,没有一个用户名能够使用密码Good_job_:)登录。那么如果这个提示没错的话,有可能Pass.txt文件名本身就是密码,因此我们再尝试用Pass.txt作为密码进行ssh密码喷射:

 成功了!看来Pass.txt是用户overflow的ssh登录密码。下一步就是ssh登录了。

第四步:ssh登录与提权

 使用overflow账号登录ssh,密码是Pass.txt,成功登录:

ssh [email protected] 

 查看一些信息:

 然后我们通过python增加shell的交互性:

python -c "import pty;pty.spawn('/bin/bash')"

 然后sudo -l查看当前用户的权限:

 提示这个用户不能允许sudo,此路不通。我们下一步就是看看有没有敏感信息,先看看有没有定时任务:

cat /etc/crontab

  权限不被允许,无法查看。可能是有的。进入web目录/var/www/html查找一番:

 也没有什么有用信息呀。那再进入home目录试试:

home目录进入只有troll一个目录!正当我准备进入troll查看的时候,突然ssh登录自动退出了!

 必有蹊跷呀!很肯能是系统设置了什么定时任务,连接一定时长后自动退出,结合之前的crontab无法查看,定时任务应该是一个关键的点。重新登录ssh,发现/home/troll目录下啥也没有,我们可以再搜索搜索定时任务相关的日志cronlog,命令如下(其中2>/dev/null表示将错误信息扔掉,在搜索的时候,由于可能因为权限不被允许等原因,无法查找到结果,会有很多报错,因此添加2>/dev/null方便查看结果):

find / -name cronlog 2>/dev/null

 

 发现cronlog在/var/log目录下,我们查看这个文件:

 关键信息来了!这里有一个定时任务,会每两分钟运行一个名为cleaner.py的文件。我们搜索这个文件,找找在哪个目录下:

find / -name cleaner.py 2>/dev/null

 发现该文件的位置是/lib/log/cleaner.py,查看这个文件:

 这个文件可以执行系统指令(os.system)!会每两分钟执行对目录/tmp的删除,那么我们只要把os.system()中的指令修改为:

echo "overflow All=(All)NOPASSWD:ALL" >> /etc/sudoers

即可相当于为overflow用户追加了最高ALL权限,使用vim修改cleaner.py:

 这个overflow的shell非常难用,尤其是使用vi和vim的时候,有很多诡异的现象,想正确操作os.system这一行还挺费劲的,再加上这个shell会几分钟自动退出,导致我登录了两三次才成功的修改成功。第一次出现echo "overflow All=(All)NOPASSWD:ALL" >> /etc/sudoers这样的提权命令是在红队打靶:pWnOS1.0打靶思路详解之ssh私钥破解+shellshock漏洞提权_Bossfrank的博客-CSDN博客

 上篇博客是用shellshock漏洞在sudoers给某个用户追加了高权限,而我们这里是用到了定时任务,殊途同归。等待最多两分钟后,再次运行sudo -l,即可发现overflow的用户变为了最高权限:

 然后运行sudo /bin/bash即可拿到root的bash:

 进入/root目录拿flag:

 至此打靶完成。

总结与思考

 这个靶机也不复杂,但关键是有一些命令的操作。包括strings查看文件的文本信息、binwalk查看捆绑文件、file命令查看文件信息。如果不使用这些命令,可能会遗漏很多重要信息。在进行ssh登录寻找密码的时候,由于找到的密码无法匹配任何一个用户名,因此需要一些CTFer的脑洞,可能文件名就是密码。同时再初始进入ftp查看lol.pcap的时候,如果急于使用wireshark分析,可能会耗费很多时间,数据包也很多,不容易抓到重点。最后做一个打靶总结:

1.主机发现和端口扫描。

2.FTP渗透:匿名登录FTP,发现文件lol.pcap,用string命令查看其中字符串发现有一个提示sup3rs3cr3tdirlol,看名字很可能是个目录。

3.Web渗透:尝试访问目录sup3rs3cr3tdirlol发现了一个名为molfmao的文件,下载下来之后发现是个可执行文件,再用strings查看其中的字符串,发现有个地址0x0856BF,尝试把这个地址0x0856BF放入url中,成功发现了有关用户名和密码的信息。

4.SSH登录尝试:使用crackmapexec寻找ssh用户名和密码的对应关系,发现没有一个账号可以与我们找到的Pass.txt中的Good_job_:) 匹配,想到可能Pass.txt本身就是密码,再次经过crackmapexec找到了Pass.txt是用户overflow的ssh登录密码。

5.定时任务提权:登录overflow的shell后,sudo -l发现无法查看权限,一番搜索无果,查看定时任务crontab发现权限不够,shell过了一会自动退出了,提示存在计划任务。搜索cronlog,找到了定时运行的文件cleaner.py,该文件可以执行系统命令,修改这个文件的内容,等待定时任务执行之后即可提权。

 到此这个靶机就讲解完毕了。靶机不难,总结不易,也有很多自己的思考,希望读者能够点赞关注多多支持!

猜你喜欢

转载自blog.csdn.net/Bossfrank/article/details/131571493