ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

网络安全入门必学技术栈全解析:从操作系统到渗透侦察

网络安全入门必学技术栈全解析:从操作系统到渗透侦察 零基础入行网络安全到底要学哪些东西很多人一开始就扎进漏洞利用工具里却连操作系统目录都认不全。这篇文章把网安入门路上绕不开的七大技术模块一次性讲透——Windows、Linux、MySQL、PHP、Docker、HTTP 协议、信息收集每个模块都告诉你「学什么」和「跟安全有什么关系」。一、Windows 系统攻防的第一战场Windows 至今仍是桌面端占有率最高的操作系统也是内网渗透中最常见的目标。理解 Windows 的基础结构是做主机安全、应急响应和内网渗透的前提。1.1 系统重要目录搞安全的第一步是知道文件都在哪目录作用安全意义Program Files64 位程序默认安装目录排查可疑软件、提取工具版本信息Program Files (x86)32 位程序安装目录注意 x86 是 x86_32 简写x64 是 x86_64Windows系统程序核心目录系统文件篡改、驱动级恶意程序的藏身地用户Users多用户桌面目录每个用户的独立文件夹浏览器记录、桌面文件都在这应急响应中攻击者常常把木马伪装成系统文件放在Windows\System32下或者在用户目录的AppData\Roaming里放持久化程序。认识目录结构才能一眼看出「不该出现的东西」。1.2 开机自启动持久化的常用入口攻击者拿到一台 Windows 主机后第一件事往往是「留后门」开机自启动就是最基础的持久化手段。设置方法按Win R输入shell:startup回车打开的文件夹路径形如C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup把应用程序的快捷方式拖进这个文件夹开机就会自动运行安全视角做应急响应时这个启动文件夹是必查项之一。很多初级木马就是靠扔一个快捷方式在这里实现自启的。1.3 查看 IP 与共享资源ipconfig这是 Windows 下查看网卡 IP 地址最基础的命令内网信息收集时人手一条。Windows 共享资源在内网中极其常见也极其危险设置共享文件右键 → 属性 → 共享 → 添加everyone访问共享在运行或资源管理器输入\\192.168.1.5\Tools如果设置了密码需要用户名和密码登录经典漏洞MS17-010永恒之蓝就是利用 Windows SMB 共享服务的远程代码执行漏洞。理解共享资源的工作方式才能理解这类漏洞的攻击面。1.4 注册表Windows 的「中枢神经」打开方式运行输入regedit。注册表Registry是 Microsoft Windows 中的核心数据库存放着系统的各种参数直接控制着 Windows 的启动、硬件驱动加载以及应用程序运行在整个系统中起着核心作用。安全视角注册表是恶意程序持久化的「重灾区」——Run、RunOnce等键值可以让程序开机自启浏览器劫持、文件关联篡改也都通过注册表实现。做主机加固和应急响应注册表是必须掌握的领域。二、Linux 系统服务器端的必修课互联网上绝大多数服务器跑的都是 Linux。做 Web 安全、运维安全、云安全Linux 命令是基本功中的基本功。2.1 远程连接SSH 是入口从 Windows 远程连接 Linux 服务器用的是 SSH 协议# 语法ssh用户名ip地址# 示例sshroot192.168.61.131安全视角SSH 是服务器的「大门」也是攻击者最常爆破的服务。弱口令、默认端口 22、未禁用 root 远程登录都是最常见的安全隐患。做安全加固时修改 SSH 端口、禁用密码登录改用密钥、限制登录 IP是标配操作。2.2 基础指令生存必备操作命令说明远程登录ssh root192.168.202.136连接远程服务器断开连接exit退出当前 SSH 会话重启系统reboot或shutdown -h now重启服务器关机shutdown默认 30 秒后关机立即关机shutdown -h now立刻关机定时关机shutdown -h 1010 分钟后关机2.3 文件与目录操作新建文件 ——touch# 创建单个文件touch1.txt# 批量创建文件花括号展开touchtest{1..10}.txttouchtest{a..f}.txt# 在指定目录下创建文件touch/root/4.txt注意如果 touch 的文件名称重复了不会覆盖原文件只会更新时间戳。查看目录内容 ——lsls全称 list常用参数参数作用-a显示隐藏文件以.开头的文件-l竖向列表展示详细信息注意是字母 L不是数字 1-h以易于阅读的形式显示文件大小需与-l一起用-1每行只显示一个文件名注意是数字 1# 查看文件是否存在lstest09.txt# 查看所有 txt 结尾的文件ls*.txt# 一行一个文件显示ls-1# 查看所有文件包括隐藏文件ls-a# 查看所有文件并详细显示ls-al# 类似 Windows 的详细列表ls-l安全视角Linux 下以.开头的文件是隐藏文件攻击者经常把木马或后门脚本命名为.cache.php、.config.py之类的隐藏文件来躲避排查。用ls -a才能看到这些「看不见的文件」。三、MySQL数据库安全的核心数据库是网站的「数据心脏」用户信息、文章内容、后台账号密码都存在里面。SQL 注入、拖库、提权几乎都绕不开 MySQL。3.1 安装与初始化CentOS 7 默认安装的是 MariaDBMySQL 的开源分支版本 5.5.68 或 5.5.65。查看版本rpm-qa|grepmariadb安装最新版 MariaDB修改 yum 源为清华镜像# 编辑 yum 源配置文件vim/etc/yum.repos.d/mariadb.repo写入以下内容[mariadb] namemariadb laster version baseurlhttp://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.6/centos7-amd64/ gpgcheck0安装并启动# yum 安装 mariadbyuminstallmariadb-server-y# 启动并设置开机自启systemctl start mariadb systemctlenablemariadb# 安全初始化必做mysql_secure_installationmysql_secure_installation是安装后的标准安全加固步骤设置 root 密码、删除匿名用户、禁止 root 远程登录、删除测试数据库。很多新手跳过这一步直接给服务器留下了「无密码 root 远程登录」的致命漏洞。3.2 用户授权权限最小化原则默认情况下MySQL 和 MariaDB 都不允许 root 用户远程连接登录。授权语法grant操作(增删改查,all)on库名.表名to用户名%identifiedby密码;实际示例-- 给 root 用户授权从 192.168.31.% 网段远程登录grantallon*.*toroot192.168.31.%identifiedbyaini;-- 给 wordpress 用户授权操作 wordpress 库的所有表grantallonwordpress.*towordpress192.168.61.%identifiedby123456;-- 给 jaden 用户只授权操作 wordpress 库的 t1 表grantallonwordpress.t1tojaden192.168.61.%identifiedby123;核心原则网站代码中连接数据库用的是哪个用户那个用户有什么权限网站代码就能对数据库做什么操作。这就是为什么 SQL 注入的危害程度取决于数据库用户权限——如果网站用 root 连库注入后直接可以读写所有库、甚至写文件拿 shell如果用最小权限用户危害就小得多。用户管理常用命令-- 查看某个用户有哪些权限showgrantsforroot%;-- 单独创建用户无任何权限只能登录createuserwang%identifiedby123;-- 给用户授权grantallonwordpress.*towang%;-- 删除用户dropuserwang%;-- 查看用户权限showgrantsforjaden192.168.61.%;四、PHPWeb 漏洞的「母语」PHP 曾经是互联网上使用最广泛的服务端脚本语言WordPress、Discuz、DedeCMS 等经典建站程序都是 PHP 写的。学 Web 安全PHP 是绕不开的。4.1 变量与常量PHP 中的变量用美元符号$后面跟变量名表示变量名区分大小写。?php$num3.1415;$a5;$b6;echo$a$b;// 输出 11?定义常量常量名一般都是大写字母// 方式1define()define(website,php中文网);// 方式2constconstFOOBAR;// 注意const 方式不能用在 if 判断中4.2 单引号、双引号与字符串拼接这是 PHP 中最基础也最容易踩坑的地方?phpheader(Content-Type: text/html; charsetutf-8);$namekobe;echo$name;// 变量不加符号遇到字符串拼接需要用 . 连接echo最喜欢的NBA球星是.$name.br;// 单引号不解析变量原样输出echo最喜欢的NBA球星是$namebr;// 双引号解析变量echo最喜欢的NBA球星是$namebr;?安全视角单双引号的区别直接关系到 SQL 注入的利用方式。如果代码用单引号包裹 SQL 语句中的变量注入时需要先闭合单引号如果用双引号情况又不同。理解字符串解析机制是手写注入 Payload 的基础。4.3 数据类型PHP 支持 8 种数据类型类型说明示例布尔型非 0 为 true0 或 false 为假true/false整型整数-99999/99999浮点型小数-1.9/3.25/3.00005字符串字符序列hello/hello数组容器类型可存放各种基础数据$d array(a, 1, c, array(1,2,3));对象需要学到类之后使用object资源类型文件等资源数据ResourceNULL空提前定义但不赋值$a null;查看变量类型// 只显示类型gettype(传入一个变量var);// 显示类型和具体内容打印数组用这个var_dump(传入一个变量var);// 打印数组$aarray(1,2,3);print_r($a);数组注意点echo只能输出字符串直接echo $d会报错数组通过索引取值索引从0开始即$d[0]。4.4 Session登录态的核心Session 是 PHP 中管理用户登录状态的标准机制?php// 验证的地方session_start();isset($_SESSION[user]);// 登录成功设置session_start();$_SESSION[user]$u;$_SESSION[login_time]time();$_SESSION[id]123;$_SESSION[login_status]1;?Session 存放位置在php.ini配置文件中可以找到session.save_path。安全视角Session 劫持、Session 固定、Session 文件包含LFI 包含 session 文件 getshell都是经典的 PHP 安全攻击手法。理解 Session 的工作原理和存储位置才能理解这些漏洞的成因。五、Docker容器化时代的安全新边界Docker 改变了应用的部署方式也带来了新的安全攻击面——容器逃逸、镜像漏洞、错误配置导致的权限提升都是现代云安全的重要课题。5.1 CentOS 安装 Docker# centos7 上用 yum 安装yuminstalldocker-y# 启动 dockersystemctl startdocker# 设置开机自启systemctlenabledocker快速体验# 体验 docker 版 nginx 最新版dockerrun-d-p80:80 nginx# 体验 docker 版 nginx 1.16dockerrun-d-p81:80 nginx:1.16# 体验 wordpress先跑 mysql再链接 wordpressdockerrun--namemysql-eMYSQL_ROOT_PASSWORD123456-dmysql:5.7dockerrun-d--linkmysql:mysql-p86:80 wordpress:5.65.2 Kali 安装 DockerKali 属于 Debian 系列用 apt 安装# 添加 docker 的 gpg 密钥签名用curl-fsSLhttps://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg|sudoapt-keyadd-# 添加 docker 的 apt 源echodeb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable|sudotee/etc/apt/sources.list.d/docker.list# 更新 apt 缓存aptupdate# 安装 dockersudoapt-getinstalldockerdocker-compose-y# 或sudoapt-getinstalldocker.io# 安装完成后 docker 自动启动systemctl statusdocker# 查看 docker 版本docker-v一句话总结CentOS 用 yum 安装Kali 用 apt 安装Kali 属于 Debian 系列。5.3 Docker Compose多容器编排docker-compose.yml示例片段restart:alwaysenvironment:WORDPRESS_DB_HOST:dbWORDPRESS_DB_USER:wordpressWORDPRESS_DB_PASSWORD:123456常用 docker-compose 命令# 创建并启动启动后可通过浏览器访问docker-composeup-d# 停止并删除docker-composedown# 重启docker-composerestart# 停止docker-composestop# 启动docker-composestart安全视角Docker 的安全问题往往出在配置上——--privileged特权模式、挂载宿主机/var/run/docker.sock、容器以 root 运行、镜像中存在已知漏洞。做容器安全核心是「最小权限原则」不用特权模式、不挂载敏感目录、以非 root 用户运行、定期扫描镜像漏洞。六、HTTP 协议与抓包Web 安全的语言HTTP 是 Web 通信的基础协议。做 Web 渗透你看到的每一个请求、每一次交互本质上都是 HTTP 报文。不懂 HTTP就看不懂 Burp Suite 里的流量更写不出 Web 漏洞的利用脚本。6.1 常用端口速查表应用层常见的端口和对应传输层协议服务端口传输层协议HTTP80TCPDNS53TCP 和 UDPHTTPS443TCPSMB445TCPTELNET23TCPFTP20/21TCP安全视角端口就是服务的「门牌号」。信息收集中的端口扫描Nmap本质就是在探测目标开了哪些「门」每个门后面跑的是什么服务、什么版本进而查找对应漏洞。比如看到 445 端口开放就会想到 SMB 服务和永恒之蓝看到 23 端口开放就知道 Telnet 这种明文传输的古老服务可能存在弱口令。七、信息收集渗透测试的第一步渗透测试的标准流程中信息收集是第一步也是最关键的一步。收集到的信息越多后续攻击面就越大。信息收集分为主动信息收集和被动信息收集域名信息查询是被动收集中最基础的环节。7.1 域名 WHOIS 信息查询WHOIS 是用来查询域名注册信息的协议可以查到域名注册人、注册邮箱、注册电话、注册商、DNS 服务器、注册时间和到期时间等关键信息。常用查询网站平台地址站长工具https://whois.chinaz.com/中国万网阿里云https://whois.aliyun.com/西部数码https://whois.west.cn/新网http://whois.xinnet.com/domain/whois/index.jsp纳网http://whois.nawang.cn/中资源https://www.zzy.cn/domain/whois.html安全视角WHOIS 信息是信息收集的金矿——注册邮箱可以用来撞库、钓鱼注册人姓名可以关联到其他资产DNS 服务器可以用来做 DNS 域传送漏洞测试注册时间可以判断网站的新旧程度。当然现在很多域名开启了 WHOIS 隐私保护但通过历史 WHOIS 查询如 SecurityTrails、Whoxy仍然可以挖到曾经暴露过的信息。八、总结技术栈如何串成安全能力回头看这七个模块它们不是孤立的知识点而是一条完整的能力链Windows/Linux 系统基础 ↓ 理解操作系统如何工作 MySQL PHP ↓ 理解网站如何存储和处理数据 Docker ↓ 理解现代应用如何部署和隔离 HTTP 协议 ↓ 理解 Web 通信的语言 信息收集 ↓ 在真实目标上应用以上所有知识 渗透测试 / 安全运维 / 应急响应不懂操作系统你拿到 shell 之后连文件都找不到更别说提权和内网漫游不懂数据库你看不懂 SQL 注入的原理也不知道如何加固数据库权限不懂 PHP你读不懂漏洞代码写不出 Exploit不懂 Docker你在云原生环境下寸步难行容器逃逸更是无从谈起不懂 HTTP你看不懂抓包流量Burp Suite 就是个摆设不懂信息收集你面对一个目标根本无从下手。网络安全的本质是对计算机系统各层知识的综合运用。把基础打牢后面的漏洞原理、工具使用、攻防技巧都是水到渠成的事。—给大家准备了一些学习资料有需要的自取本文基于网络安全入门学习笔记整理涵盖了从零开始学习网安必须掌握的核心技术模块。建议按照「系统 → 数据库 → 语言 → 部署 → 协议 → 侦察」的顺序逐步学习每个模块都动手实操不要只看不练。
返回列表