本笔记为 泷羽sec 《红队全栈课程》学习笔记,课程请可自行前往B站学习,课程/笔记主要涉及网络安全相关知识、系统以及工具的介绍等,请使用该课程、本笔记以及课程和笔记中提及工具的读者,遵守网络安全相关法律法规,切勿进行违法违规违纪的操作。
写在最前面的话,我们为什么要学习网络安全这门技术:
- 维护国家安全
防范网络攻击:网络安全威胁已成为国家安全的重要挑战。学习网络安全有助于识别和防范来自国内外的网络攻击,防止敌对势力通过网络手段窃取敏感信息、破坏关键基础设施或干扰社会正常运作。
保护关键基础设施:现代社会高度依赖网络技术,金融系统、交通网络、电力供应等关键基础设施都依赖于稳定的网络环境。掌握网络安全知识有助于保护这些基础设施免受网络攻击,确保国家的正常运转。
- 促进经济发展
保障数字经济安全:数字经济已成为国家经济增长的重要引擎。通过学习网络安全,可以保障数字经济的健康发展,防止数据泄露和网络犯罪对经济活动的干扰。
增强国际竞争力:在全球化的背景下,网络安全技术水平直接影响国家的国际竞争力。掌握先进的网络安全技术和策略,有助于提升国家在全球数字经济中的地位。
- 提升社会稳定
防范社会风险:网络犯罪和网络恐怖主义对社会稳定构成严重威胁。学习网络安全有助于及时发现和应对这些风险,维护社会的和谐与稳定。
保护公民权益:网络安全直接关系到公民的隐私权和信息安全。通过学习网络安全,可以更好地保护公民的合法权益,增强公众对政府和企业的信任。
- 推动科技进步
创新安全技术:网络安全领域的技术创新不断推动信息技术的进步。学习网络安全有助于推动新技术的研发和应用,提升国家在科技领域的整体实力。
促进国际合作:网络安全是全球性问题,需要各国共同努力应对。通过学习网络安全,可以参与国际网络安全合作,共同制定国际标准和规范,提升全球网络安全水平。
- 强化法治建设
完善法律法规:学习网络安全有助于推动和完善相关法律法规的制定和实施,确保网络安全工作有法可依、有章可循。
提升执法能力:掌握网络安全知识可以提升执法部门的网络侦查和取证能力,有效打击网络犯罪,维护法律权威。
- 培养专业人才
构建人才梯队:网络安全领域需要大量高素质的专业人才。通过系统学习和培训,可以培养出一批具备专业知识和实战经验的网络安全专家,为国家的网络安全事业提供坚实的人才保障。
总之,学习网络安全不仅是个人职业发展的需要,更是维护国家安全、促进经济发展、保障社会稳定和推动科技进步的重要手段。通过不断提升网络安全意识和能力,我们可以更好地应对日益复杂的网络安全挑战,为实现国家的长期稳定和发展贡献力量。
以下为windows基础之病毒编写(完结)视频对应的内容 视频传送门 ==> Windows基础之病毒编写(完结)_哔哩哔哩_bilibili
一、常用端口介绍
1、端口汇总(目前只写了3个,其他会陆续补充)
| 端口号 | 对应服务 | 说明 |
| 21 | FTP | File Transfer Protocol,文件传输协议,可能存在匿名登录 |
| 23 | Telnet | 一种比较古老的传输协议,一年会用到几次 |
| 80 | HTTP | HTTP服务,和HTTPS不一样。另外80-89都有可能是WEB服务 |
| 443 | HTTPS | HTTPS服务,这里介绍了一个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信息很容易被窃取。
5675

被折叠的 条评论
为什么被折叠?



