泷羽sec专题课笔记-- windows--FTP/TELNET/心脏滴血漏洞复现

  本笔记为 泷羽sec 《红队全栈课程》学习笔记,课程请可自行前往B站学习,课程/笔记主要涉及网络安全相关知识、系统以及工具的介绍等,请使用该课程、本笔记以及课程和笔记中提及工具的读者,遵守网络安全相关法律法规,切勿进行违法违规违纪的操作。


写在最前面的话,我们为什么要学习网络安全这门技术:

  • 维护国家安全

  防范网络攻击:网络安全威胁已成为国家安全的重要挑战。学习网络安全有助于识别和防范来自国内外的网络攻击,防止敌对势力通过网络手段窃取敏感信息、破坏关键基础设施或干扰社会正常运作。
  保护关键基础设施:现代社会高度依赖网络技术,金融系统、交通网络、电力供应等关键基础设施都依赖于稳定的网络环境。掌握网络安全知识有助于保护这些基础设施免受网络攻击,确保国家的正常运转。

  • 促进经济发展

  保障数字经济安全:数字经济已成为国家经济增长的重要引擎。通过学习网络安全,可以保障数字经济的健康发展,防止数据泄露和网络犯罪对经济活动的干扰。
  增强国际竞争力:在全球化的背景下,网络安全技术水平直接影响国家的国际竞争力。掌握先进的网络安全技术和策略,有助于提升国家在全球数字经济中的地位。

  • 提升社会稳定

  防范社会风险:网络犯罪和网络恐怖主义对社会稳定构成严重威胁。学习网络安全有助于及时发现和应对这些风险,维护社会的和谐与稳定。
  保护公民权益:网络安全直接关系到公民的隐私权和信息安全。通过学习网络安全,可以更好地保护公民的合法权益,增强公众对政府和企业的信任。

  • 推动科技进步

  创新安全技术:网络安全领域的技术创新不断推动信息技术的进步。学习网络安全有助于推动新技术的研发和应用,提升国家在科技领域的整体实力。
  促进国际合作:网络安全是全球性问题,需要各国共同努力应对。通过学习网络安全,可以参与国际网络安全合作,共同制定国际标准和规范,提升全球网络安全水平。

  • 强化法治建设

  完善法律法规:学习网络安全有助于推动和完善相关法律法规的制定和实施,确保网络安全工作有法可依、有章可循。
  提升执法能力:掌握网络安全知识可以提升执法部门的网络侦查和取证能力,有效打击网络犯罪,维护法律权威。

  • 培养专业人才

  构建人才梯队:网络安全领域需要大量高素质的专业人才。通过系统学习和培训,可以培养出一批具备专业知识和实战经验的网络安全专家,为国家的网络安全事业提供坚实的人才保障。

  总之,学习网络安全不仅是个人职业发展的需要,更是维护国家安全、促进经济发展、保障社会稳定和推动科技进步的重要手段。通过不断提升网络安全意识和能力,我们可以更好地应对日益复杂的网络安全挑战,为实现国家的长期稳定和发展贡献力量。


以下为windows基础之病毒编写(完结)视频对应的内容   视频传送门 ==>  Windows基础之病毒编写(完结)_哔哩哔哩_bilibili


一、常用端口介绍

  1、端口汇总(目前只写了3个,其他会陆续补充)
端口号对应服务说明
21FTPFile Transfer Protocol,文件传输协议,可能存在匿名登录
23Telnet一种比较古老的传输协议,一年会用到几次
80HTTPHTTP服务,和HTTPS不一样。另外80-89都有可能是WEB服务
443HTTPSHTTPS服务,这里介绍了一个443可能存在的心脏滴血漏洞
  2、FTP

  单纯一个FTP可能有多种意思,它可以表示为:

  • 它可以一个开启21端口或者其他端口的FTP服务,服务器内可以存放文件和文件夹
  • 它也可以是一个Windows和Linux都有的命令,用这个命令可以连接到上面的服务器
  • 它在金融机构中可以表示为内部资金转移价格,吸收存款或者发放贷款时,资金管理部门给业务部门衡量资金价格的一种表示或者约定

  本笔记会讲述一种如何开启FTP服务器、如何访问FTP服务器,以及如何从FTP服务器中下载文件的方法。

  FTP服务器一般是以21端口开启的一种文件传输服务,这个服务访问、上传、下载多很方便,以至于现在仍有很多地方还在使用该服务,比如前几天下载一个版本较老的gcc包,官网分发了一个下载链接,是法国的一个学校可以匿名访问的FTP服务器。

  2.a、尝试搭建FTP服务器

  尝试在自己电脑上搭建一个FTP服务器(使用python,下载个库即可)

pip install pyftpdlib 

如果电脑没有更改过pypi源,则可以使用下条命令,从中科大镜像源拉取

pip install -i https://mirrors.ustc.edu.cn/pypi/simple pyftpdlib

pip install pyftpdlib -i https://mirrors.ustc.edu.cn/pypi/simple  # 把包名放前面也可以

   我们已经切换到了D盘的test目录下,用tree /f 查看下D盘test文件夹目录结构如下。

   使用下条命令查看自己网卡IP,后续访问要用

D:\test>ipconfig | findstr IPv4
   IPv4 地址 . . . . . . . . . . . . : 192.168.71.5  <==这个是物理机网卡,其他几个是虚拟机
   IPv4 地址 . . . . . . . . . . . . : 192.168.177.1
   IPv4 地址 . . . . . . . . . . . . : 192.168.200.1

  使用下条命令用python开启FTP服务。-p是指定21端口,因为为防止和主机FTP服务冲突,该库默认会用2121端口,因为物理机并没有开FTP,所以我们就手动指定为21。

D:\test>python -m pyftpdlib -p 21
[I 2024-11-02 01:07:35] concurrency model: async
[I 2024-11-02 01:07:35] masquerade (NAT) address: None
[I 2024-11-02 01:07:35] passive ports: None
[I 2024-11-02 01:07:35] >>> starting FTP server on 0.0.0.0:21, pid=6304 <<<

  注意,上述配置为默认配置,pyftpdlib库更详细的用法,包括设置用户名、密码、读写权限等,应该查看其帮助文件。

D:\test>python -m pyftpdlib -h
usage: python3 -m pyftpdlib [options]

Start a stand alone anonymous FTP server.

optional arguments:
  -h, --help            show this help message and exit

(信息较多不再逐一展示)

    除python以外,还有很多搭建FTP服务器的方法,比如Linux有vsftpd可以提供FTP服务。

   2.b、访问自己搭建的FTP
  浏览器直接访问

  访问FTP有多种方法,最简单的方法就是在导航栏里输入ftp://192.168.71.5:21 (注意改成自己的ip,如果是默认21端口,则:21可以不写,如果是其他端口就要写ftp://ip:port)。此时就和访问自己的一个文件夹一样。另外注意,因为上面搭建服务器的关系,这个本地开启的服务器只提供了匿名访问权限,匿名就可以登录,所以连接上去后,可以和windows一样,将里面的文件复制出来(read权限),但是没权限把文件复制进去写文件(write权限)。

  使用FTP命令访问

  windows和linux理论上都有这个命令,注意可以匿名登录的服务器,用户名用anonymous。

  命令行模式下,使用get命令可以把文件拉到本地,如果是浏览器模式或者使用ftp登录软件,则下载以及上传会更加方便。

  直接下载文件

  这种情况下需要知道文件的完整FTP路径,将其复制在浏览器地址中就可以下载,也可以使用curl/wget等命令下载,下图演示了curl和wget下载ftp文件,用户名和密码后面小节讲述。

curl -Os ftp://test:123@192.168.71.5:21/1111.txt  
wget ftp://test:123@192.168.71.5:21/C/C3/3333.txt

  另外,如果在现实生活中,遇到有一些资源是使用FTP服务器存放的,如果提供了类似上述的完整下载路径,如果文件较大迅雷等多线程下载软件也是可以直接下载该类FTP资源的。

  FTP设置登录账号密码

  这是FTP服务器开启时设置的,下图是pyftpdlib开启时指定用户名test和密码123的方法。

python -m pyftpdlib -p 21 -u test -P 123

  我们可以用下面这个地址进行登录,下图为演示没有按回车,按回车后会看到ftp服务器中的内容。

  上图这样众目睽睽之下把密码输在地址栏里不是很安全,我们也可以只输入用户名@服务器地址(比如:ftp://test@192.168.71.5)然后按回车,就会跳出来个窗口让我们再输入密码,这样就不用担心密码明文被别人窥屏了。

  3、TELNET
  3.a kali通过telnet连接windows电脑

  目前最新一些版本的Windows的不再预装TELNET客户端,有些版本Windows的功能内也仅有TELNET的客户端,而再不提供服务端,因为TELNET协议本身存在安全性问题,它传输的数据是明文的,容易被窃取。

  本小节操作应该在虚拟机内进行,而不是你的实体物理电脑的windows内操作,演示系统为Win7旗舰版,Win7家庭版可能无法复现。

  首先,靶机Win7安装Telnet服务端

  打开程序和功能,选择“打开或关闭Windows功能”

  然后选择Telnet服务端点上钩(Telnet客户端也选上,后面有用),点确定后等其安装完毕。 

  其次,开启Telnet服务

  管理员权限的cmd输入services.msc,找到Telnet服务后,右键点属性,启动类型可以点手动,然后再到左边圆圈出点启动。

  接下来,配置TelnetClients用户组。

  把账号分配到TelnetClients组中,比如目前我登录的win7账号是win7-pro,就把这个账号添加进去。 这个界面可使用lusrmgr.msc命令进入,注意Win7家庭版并没有本地用户和组这个功能。

  最后,使用kali的telnet连接Win7。

  靶机IP是192.168.200.132,登录的账号是win7-pro,netstat查看下靶机已开启23端口

telnet 192.168.200.132 23 # kali使用telnet 远程连接windows,输入账号密码后登录成功

 chcp 65001   使用这条命令解决乱码问题,不过后面使用calc好像并没弹计算机

cd desktop      # 进到桌面

echo 1111>1111.txt   在桌面创建个1111.txt的文件

 3.bTELNET客户端的一些用法
  探测远程主机端口是否开启

  物理机开启个http服务,使用下面的python命令,默认开启端口是8000

python -m http.server

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

刚才Win7已经装了Telnet的客户端,使用Win7和kali分别发送下面的命令

telnet 192.168.71.5 8000

  可以看到Win7的telnet窗口变黑了,kali还有信息,分别如下:

  这种情况说明端口是开启的,随便输点什么信息,会发生报错,详见下图。另外据说是可以用telnet发送get/post请求,我没试出来。

  而如果我们连接8001端口(没开启任何服务) ,会直接显示拒绝连接。

  所以没有什么额外工具的情况下,我们用telnet命令可以探测端口是否开启。

  可以远程连接路由器、交换机等 

  这块应该是网络工程师的知识,我这里没怎么接触过,这里先挖个坑,有空补上。

  可以连接smtp服务器发送邮件 

  我没实操过,不过小破站有看到过教程可以搜到,有需求的小伙伴可以去小破站看本处略。

  可以上一些BBS

  对,你没看错,有些BBS可能已经存在很久了,虽然有web版,但是他们依旧保留了最原始的功能。试着输入下面这条命令吧

telnet bbs.newsmth.net

  可以上MUD游戏

  是不是有一种奔溃的感觉,那么试着输入下条命令吧

telnet mudzt.cn 6666

  登录IRC服务器(未复现)

  IRC是一款比较古老的聊天软件,目前国外仍很流行

4、HTTP 
  python开启http服务

  上面已经说过python开启http服务的用例,需要补充说明的是,上面开启的是python3.x的http服务,另外在只有python2的情况下,我们使用另外一条命令。python2和3开启http服务命令分别如下:

# 如果不知道python 是2还是3 可以用python -V查看

python3 -m http.server [端口号]

python2 -m SimpleHTTPServer [端口号]

  由于两种情况默认都是开启8000端口,所以下图右下分屏python3开启服务时报错了,因为端口已被占用了,所以python3需要用8000以外的端口再能开。

  请注意python开启http服务时的目录遍历,如果在有公网IP的电脑上,绝对不允许这么操作

   php开启http服务

  kali已经预装了php,使用下条命令就可以开启php的http服务,注意端口不要和已使用端口冲突。

php -S 0.0.0.0:7777

  浏览器访问下kali的地址(物理机或者kali虚拟机里都可以),可以看到如下访问页面,因为php开启的http服务是不允许访问目录的,这个和上面的python开启时的情况不一样。

    

  我们再在php开启http服务的路径下,放个php文件进去,内容如下:

<?php exec(phpinfo()); ?>

    然后访问时再加上这个文件名,就可以看到这个phpinfo()函数的信息。

 5、HTTPS
  利用vulhub复现心脏出血漏洞(heartbleed)

  这个漏洞是也叫心脏滴血漏洞,漏洞描述是:允许攻击者从内存中读取多达64KB的数据,可能导致用户的登录账号密码、电子邮件、加密秘钥等敏感信息泄露。本次漏洞复现利用vulhub进行展示。

  从安装docker开始(kali环境)

   vmware或者virtualbox预装的kali请先更新apt源,中科大镜像源(国内还有很多,都可以用)

  中科大镜像的apt源(参考源内说明进行操作)==> Kali Linux - USTC Mirror Help

sudo apt update && sudo upgrade -y

# 更新apt源,如觉得upgrade下载较多,则至少apt update

sudo apt install docker.io # 安装docker

sudo apt install docker-compose # 安装docker-compose,vulhub要用到

sudo mkdir /etc/docker  #etc下创建docker文件夹,准备修改docker镜像仓库

sudo touch /etc/docker/daemon.json  # 再创建一个 daemon.json 镜像仓库写在这个文件里

sudo vim /etc/docker/daemon.json  # 如果vim不会用,vim可以改成mousepad

# 写入下列文本,写入完成再执行下面的命令

sudo systemctl daemon-reload && sudo systemctl restart docker

# 到这里docker和docker-compose已经安装完毕,且docker源也改好了;

# 注意,如后续发生docker无法拉取话,可能是镜像仓库失效了,建议csdn或者小破站搜最新的docker仓库

┌──(kali㉿kali)-[~]
└─$ cat /etc/docker/daemon.json 
{"registry-mirrors" :
        [
        "https://docker.m.daocloud.io",
        "https://noohub.ru",
        "https://huecker.io",
        "https://dockerhub.timeweb.cloud",
        "https://docker.rainbond.cc"
        ]
}
  拉取vulhub 

cd ~/Desktop  

git clone https://github.com/vulhub/vulhub   #拉vulhub的仓库

git clone https://gitclone.com/github.com/vulhub/vulhub  #上面这条如果网络失败可以试试这条

cd ~/Desktop/vulhub/openssl/CVE-2014-0160 #我们要利用这个漏洞,可以看下里面的readme文档

sudo docker-compose up -d # 利用大神编写的docker编排文档拉取镜像

sudo docker ps -a # 拉取完毕后使用该命令检查下,默认是已经开启状态,如下图:

┌──(kali㉿kali)-[~/Desktop]
└─$ sudo docker ps -a
[sudo] password for kali: 
CONTAINER ID   IMAGE                              COMMAND                  CREATED          STATUS          PORTS                                                                            NAMES
6e783102308c   vulhub/openssl:1.0.1c-with-nginx   "/usr/local/nginx/sb…"   47 minutes ago   Up 47 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp   cve-2014-0160_nginx_1
                                                                                                                                                            
┌──(kali㉿kali)-[~/Desktop]
└─$ 
   漏洞复现过程

  使用浏览器访问服务,https://kali的ip:8443/index.html 如果遇到不安全什么的则忽略。访问的时候顺便开启开发者模式,看下发送的HTTP头。

  接下来使用vulhub该漏洞文件夹内的py文件,读取内存信息,因为输出会较长可重定向到个文本文件中。

┌──(kali㉿kali)-[~/Desktop/vulhub/openssl/CVE-2014-0160]
└─$ python3 ssltest.py 192.168.200.133 -p 8443 > output.txt

  有没有发现,这两块地方是不是很像。

  接下来重头戏来了,我们在网页的开发者模式,找到application(应用程序)这里,cookie这里给这个漏洞网站添加个cookie,地址导航这里再按下回车,让浏览器带着cookie重新访问。

    再运行py文件,读取到的信息如下:

  所以,如果web服务搭建在有问题的网站上面,第三方登录网站的cookie信息很容易被窃取。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值