从 MySQL 弱口令到哥斯拉上线
从 MySQL 弱口令到哥斯拉上线
给一个客户系统做渗透,记录下过程
信息收集
没有测试账号,本来没抱希望,打算找几个水洞,找不到洞,尝试扫个端口发现 3306 是开放的
弱口令
习惯性尝试使用 root/root
连接数据库,连接成功
数据泄露
数据库查询到用户信息,密码为md5存储
查询得到账号信息:
登陆成功,共两个管理员账号
尝试写🐎
在web应用没有找到上传点,尝试数据库写🐎试试
写文件的前提:
- 知道网站物理路径
- 高权限数据库用户
load_file()
开启 即secure_file_priv
无限制- 网站路径有写入权限
查看secure_file_priv
为空
Value | 说明 |
---|---|
NULL | 不允许导入或导出 |
/tmp | 只允许在 /tmp 目录导入导出 |
空 | 不限制目录 |
在 MySQL 5.5 之前 secure_file_priv 默认是空,这个情况下可以向任意绝对路径写文件
在 MySQL 5.5 之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件
1 |
|
文件可以写入,并且可以读出来
1 |
|
但找遍了数据库也没找到有出现 web 应用路径的地方
尝试UDF提权
MUDT
我们是直接连的数据库,没有注入点,因此无法用sqlmap进行提权,先尝试一波 MDUT 工具,看看能不能提权
但创建函数失败
手动尝试一次
plugin 文件夹
如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。
1 |
|
已经存在 plugin
文件夹了
如果不存在的话可以在 webshell 中找到 MySQL 的安装目录然后手工创建 \lib\plugin
文件夹:
1 |
|
传入动态链接库文件
那么动态链接库文件去哪里找呢?实际上我们常用的工具 sqlmap 和 Metasploit 里面都自带了对应系统的动态链接库文件。
- sqlmap 的 UDF 动态链接库文件位置
1 |
|
白嫖个图:
不过 sqlmap 中 自带这些动态链接库为了防止被误杀都经过编码处理过,不能被直接使用。不过可以利用 sqlmap 自带的解码工具 cloak.py 来解码使用,cloak.py 的位置为:/extra/cloak/cloak.py
,解码方法如下:(白嫖个方法)
1 |
|
这个博主打包了 sqlmap 解码后的动态链接库:蓝奏云 - sqlmap udf.zip 需要的朋友可以自提
- Metasploit 的 UDF 动态链接库文件位置
1 |
|
Metasploit 自带的动态链接库文件无需解码,开箱即可食用。
使用 010-Editor 对比了 metsaploit 自带的与 sqlmap 解码后的动态链接库文件,发现他们的内容一模一样。
下面来看下动态链接库里面有包含了哪些函数:
如果有注入点的话可以尝试用 SQLMAP,这里没有,接着手动
1 |
|
这里有十六进制的语句,将路径改成实际路径即可 UDF十六进制
创建自定义函数并调用命令
1 |
|
这里依旧报错
1123 - Can’t initialize function ‘sys_eval’; UDFs are unavailable with the –skip-grant-tables option
需要将 my.ini
中的 skip-grant-tables
选项去掉
读 xxxxx/my.ini
也看到确实存在,但这里没法操作,只好作罢
Druid 未授权
就当要放弃的时候,发现了一个 Druid 未授权
,可谓是救命稻草,现在就缺一个路径,真是送到嘴边了
默认页面未删除
同时 dirsearch
收集信息的时候,也发现了默认页面:
真的是非常贴心了
怕我看不懂,还给我解释了:
where “$CATALINA_HOME” is the root of the Tomcat installation directory.
继续写🐎
直接用路径拼接,传一个 hello 上去
成功 hello
上线
直接上马(这里一直在调试,从 1.jsp
迭代到 6.jsp
了)
哥斯拉上线
1 |
|
/manager/html
另外也找到 xxxx:8080/manager/html
了,拿 msf
进行了一次常规默认密码爆破,并没有爆出
后来拿到物理路径也刚好读一下xxxxx/conf/tomcat-users.xml
但密码还是不正确,这个点没法用
因为本身就是测的内网系统,就不做内网渗透了(不是因为不会