kali、nmap扫描

┌──(kali?kali)-[~]

└─$ sudo nmap --script=ftp-vsftpd-backdoor 192.168.4.11 -p 21

扫描口令

通过ssh协议,使用nmap自带的密码本扫描远程主机的用户名和密码

在目标主机上创建名为admin的用户,密码为123456

[root@node1 ~]# useradd admin

[root@node1 ~]# echo 123456 | passwd --stdin admin

在kali上扫描弱密码

┌──(kali?kali)-[~]

└─$ sudo nmap --script=ssh-brute.nse 192.168.4.11 -p 22

通过ssh协议,使用nmap以及自己的密码本扫描远程主机的密码

  1. 创建用户名文件

┌──(kali?kali)-[~]

└─$ sudo echo root > /tmp/users.txt

┌──(kali?kali)-[~]

└─$ cat /tmp/users.txt

root

[root@node1 ~]# echo 20000501 | passwd --stdin root

┌──(kali?kali)-[~]

└─$ sudo echo root > /tmp/users.txt

┌──(kali?kali)-[~]

└─$ cat /tmp/users.txt

root

[root@node1 ~]# echo 20000501 | passwd --stdin root

2. 生成1999-01-01到2022-03-16之间的所月日期

[root@localhost ~]# vim mydate.py

[root@localhost ~]# python3 mydate.py

[root@localhost ~]# scp /tmp/mima.txt kali@192.168.4.40:/tmp/

kali@192.168.4.40’s password:

mima.txt 100% 100KB 63.8MB/s 00:00

#查看自己生成的密码文件

[root@localhost ~]# cat mydate.py

from datetime import datetime, timedelta

d1 = datetime(1999, 12, 31)

d2 = datetime(2022, 3, 16)

dt = timedelta(days=1)

with open(‘/tmp/mima.txt’, ‘w’) as f:

while d1 < d2:

d1 += dt

f.write(f"{d1.strftime(‘%Y%m%d’)}

")

如果是centos7或kali,使用以下文件

[root@cent7 ~]# vim mydate.py

from datetime import datetime, timedelta

d1 = datetime(1999, 12, 31)

d2 = datetime(2021, 1, 1)

dt = timedelta(days=1)

with open(‘/tmp/mima.txt’, ‘w’) as f:

while d1 < d2:

d1 += dt

f.write("%s

" % d1.strftime(‘%Y%m%d’))

[root@cent7 ~]# python mydate.py

3. 使用自己的密码本破解密码

┌──(kali?kali)-[~]

└─$ sudo nmap --script=ssh-brute.nse --script-args userdb=/tmp/users.txt,passdb=/tmp/mima.txt 192.168.4.11 -p 22

破解中:耐心等待~~~~~~~

破解成功:

4. 目标主机将会记录所有的登陆事件

[root@node1 ~]# vim /var/log/secure

# 查看最近的登陆失败事件

[root@node1 ~]# lastb

查看最近的登陆成功事件

[root@node1 ~]# last

扫描windows口令

[root@zzgrhel8 ~]# cat /tmp/winuser.txt # windows用户名

administrator

admin

通过samba服务扫描密码

[root@zzgrhel8 ~]# nmap --script=smb-brute.nse --script-args userdb=/tmp/winuser.txt,passdb=/tmp/mima 172.40.0.151

手工扫描

[root@node1 ~]# yum install -y telnet

查看目标主机80端口是否开放

[root@node1 ~]# telnet 192.168.4.11 80

Trying 192.168.4.11…

telnet: connect to address 192.168.4.11: Connection refused

[root@node1 ~]# telnet 192.168.4.11 21

Trying 192.168.4.11…

Connected to 192.168.4.11.

Escape character is ‘^]’.

220 (vsFTPd 3.0.2) # 按ctrl+]退出

^]

telnet> quit

Connection closed.

使用john破解密码


  • 在线破解哈值的网站:https://cmd5.com/

  • kali系统提供了一个名为john的工具,可用于密码破解

[root@node1 ~]# echo 123456 | passwd --stdin root

[root@node1 ~]# useradd tom

[root@node1 ~]# echo abc123 | passwd --stdin tom

[root@node1 ~]# useradd jerry

[root@node1 ~]# echo 123123 | passwd --stdin jerry

[root@node1 ~]# scp /etc/shadow kali@192.168.4.40:/home/kali/

破解傻瓜式密码

======================================================================

┌──(kali?kali)-[~]

└─$ sudo john --single shadow

字典暴力破解,密码本是/usr/share/john/password.lst

======================================================================================================

┌──(kali?kali)-[~]

└─$ sudo john shadow

直接显示破解的密码,不显示其他额外信息

==================================================================================

┌──(kali?kali)-[~]

└─$ sudo john --show shadow

root:123456:18912:0:99999:7:::

tom:abc123:18912:0:99999:7:::

jerry:123123:18912:0:99999:7:::

linux系统自带的密码本

[root@node1 ~]# yum install -y words

[root@node1 ~]# ls /usr/share/dict/

linux.words words

[root@node1 ~]# wc -l /usr/share/dict/words

479828 /usr/share/dict/words

字典暴力破解,指定密码本文件

[root@node1 ~]# scp /usr/share/dict/linux.words kali@192.168.4.40:/home/kali/

┌──(kali?kali)-[~]

└─$ sudo john --wordlist=linux.words shadow

抓包


  • 传输的各种数据,在网络中都是一个个的数据包

┌──(kali?kali)-[~]

└─$ sudo tcpdump

-i:指定抓取哪块网卡进入的数据包

=================================================================================

-A:转换为ASCII码,使得可读

=================================================================================

-w:抓包写入文件

=========================================================================

-r:从文件中读取抓包信息

=============================================================================

抓包时可以过滤要抓哪些包

===========================================================================

使用host过滤主机,使用net过滤网段,使用port过滤端口… …

=================================================================================================

1. 抓包:抓取eth0上进出的、与192.168.4.11有关的、涉及TCP21端口的软件包。以下命令执行后,打开新终端。

==============================================================================================================================

┌──(kali?kali)-[~]

└─$ sudo tcpdump -i eth0 -A host 192.168.4.11 and tcp port 21

2. 在新终端登陆ftp

============================================================================

┌──(kali?kali)-[~]

└─$ ftp 192.168.4.11

Connected to 192.168.4.11.

220 (vsFTPd 3.0.2)

Name (192.168.4.11:kali): tom # 用户名

331 Please specify the password.

Password:abc123 # 此处是tom的密码

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> exit # 退出

221 Goodbye.

3.在tcpdump终端可以看到明文的用户名和密码

========================================================================================

1. 将抓到的包存入文件ftp.cap

┌──(kali?kali)-[~]

└─$ sudo tcpdump -i eth0 -A -w ftp.cap host 192.168.4.11 and tcp port 21

2. 在另一个终端访问ftp

在新终端登陆ftp

┌──(kali?kali)-[~]

└─$ ftp 192.168.4.11

Connected to 192.168.4.11.

220 (vsFTPd 3.0.2)

Name (192.168.4.11:kali): tom # 用户名

331 Please specify the password.

Password:abc123 # 此处是tom的密码

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> exit # 退出

221 Goodbye.

3. 在抓包终端ctrl+c停止

4. 读取抓到的包,并过滤

┌──(kali?kali)-[~]

└─$ tcpdump -A -r ftp.cap | egrep ‘USER|PASS’

图形工具:wireshark

[root@zzgrhel8 ~]# yum install wireshark ftp

选择抓哪块网卡进出的数据,然后点左上角的开始

抓到包后,点击左上角同样位置停止,查看数据

安全加固


nginx安全

安装启服务

[root@node1 lnmp_soft]# yum install -y gcc pcre-devel zlib-devel

[root@node1 lnmp_soft]# tar xf nginx-1.12.2.tar.gz

[root@node1 lnmp_soft]# cd nginx-1.12.2/

[root@node1 nginx-1.12.2]# ./configure && make && make install

[root@node1 ~]# /usr/local/nginx/sbin/nginx

访问不存在的路径

命令行访问:

[root@node1 ~]# curl -I http://192.168.4.11/ # -I 只显示头部

HTTP/1.1 200 OK

Server: nginx/1.12.2

Date: Fri, 10 Dec 2021 07:51:08 GMT

Content-Type: text/html

Content-Length: 612

Last-Modified: Fri, 10 Dec 2021 07:46:16 GMT

Connection: keep-alive

ETag: “61b305c8-264”

Accept-Ranges: bytes

隐藏版本信息

[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf

… …

17 http {

18 server_tokens off;

… …

[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload

  • 防止DOS、DDOS攻击

  • DDOS:分布式拒绝服务

压力测试,每批次发送100个请求给web服务器,一共发200个

==============================================================================================

[root@zzgrhel8 ~]# yum install -y httpd-tools

[root@zzgrhel8 ~]# ab -c 100 -n 200 http://192.168.4.11/

… …

Benchmarking 192.168.4.11 (be patient)

Completed 100 requests

Completed 200 requests

Finished 200 requests # 发送200个请求完成

… …

Complete requests: 200 # 完成了200个请求

Failed requests: 0 # 0个失败

… …

配置nginx连接共享内存为10M,每秒钟只接收一个请求,最多有5个请求排队,多余的拒绝

[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf

17 http {

18 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; # 添加

… …

37 server {

38 listen 80;

39 server_name localhost;

40 limit_req zone=one burst=5; # 添加

[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload

再次测试

[root@zzgrhel8 ~]# ab -c 100 -n 200 http://192.168.4.11/

… …

Benchmarking 192.168.4.11 (be patient)

Completed 100 requests

Completed 200 requests

Finished 200 requests

… …

Complete requests: 200

Failed requests: 194 # 失败了194个

… …

拒绝某些类型的请求

  • 用户使用HTTP协议访问服务器,一定是通过某种方法访问的。

  • 最常用的HTTP方法

  • GET:在浏览器中输入网址、在页面中点击超链接、搜索表单。

  • POST:常用于登陆、提交数据的表单

  • 其他HTTP方法不常用,如:

  • HEAD:获得报文首部。HEAD 方法和 GET 方法一样,只是不返回报文主体部分。

  • PUT:传输文件。要求在请求报文的主体中包含文件内容,然后保存到请求 URI 指定的位置。

  • DELETE:删除文件。DELETE 方法按请求 URI 删除指定的资源。

使用GET和HEAD方法访问nginx。两种方法都可以访问

============================================================================================

[root@zzgrhel8 ~]# curl -i -X GET http://192.168.4.11/

[root@zzgrhel8 ~]# curl -i -X HEAD http://192.168.4.11/

配置nginx只接受GET和POST方法

[root@node1 ~]# vim /usr/local/nginx/conf/nginx.conf

… …

37 server {

38 listen 80;

39 if ( r e q u e s t m e t h o d !   ( G E T ∣ P O S T ) request_method !~ ^(GET|POST) requestmethod! (GETPOST) ) {

40 return 444;

41 }

… …

r e q u e s t m e t h o d 是内置变量,表示请求方法。 表示正则匹配, ! 表示取反 。 表 示开头, request_method是内置变量,表示请求方法。~表示正则匹配,!表示取反。^表示开头, requestmethod是内置变量,表示请求方法。 表示正则匹配,!表示取反示开头,表示结尾,|表示或

[root@node1 ~]# /usr/local/nginx/sbin/nginx -s reload

使用GET和HEAD方法访问nginx。只有GET可以工作

[root@zzgrhel8 ~]# curl -i -X GET http://192.168.4.11/

[root@zzgrhel8 ~]# curl -i -X HEAD http://192.168.4.11/

附:取出nginx.conf中注释和空行以外的行

# -v是取反。^ *#表示开头有0到多个空格,然后是#。^KaTeX parse error: Undefined control sequence: \[ at position 6: 表示空行 \̲[̲root@node1 ~\]#…’ /usr/local/nginx/conf/nginx.conf

Linux加固


  • 设置tom账号,有效期为2022-1-1

命令配置文件帮助

man 5 passwd

man 5 shadow

命令帮助

man 1 passwd

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 设置tom账号,有效期为2022-1-1

命令配置文件帮助

man 5 passwd

man 5 shadow

命令帮助

man 1 passwd

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-thk2WNmI-1715518460453)]

[外链图片转存中…(img-1g8G9lRR-1715518460454)]

[外链图片转存中…(img-uNCPvR86-1715518460454)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 28
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值