一、web安全基础入门
1、Windows命令
- 文件和目录操作
dir
:列出当前目录下的文件和子目录。cd
:切换目录,例如cd C:\Users
切换到C盘的Users目录。md
或mkdir
:创建新目录,如md testdir
。rd
或rmdir
:删除空目录,例如rd testdir
。copy
:复制文件,如copy source.txt destination.txt
。move
:移动文件或重命名,move oldname.txt newname.txt
可重命名文件,move file.txt C:\newpath
可移动文件。del
或erase
:删除文件,del test.txt
删除test.txt文件。
- 系统信息
systeminfo
:显示详细的系统信息,包括操作系统版本、安装的补丁等。ipconfig
:查看网络配置信息,如IP地址、子网掩码等。tasklist
:列出当前正在运行的进程。taskkill
:结束指定的进程,例如taskkill /F /IM notepad.exe
强制结束记事本进程。
- 网络操作
ping
:测试网络连接,ping www.example.com
检测与example.com的连通性。tracert
:跟踪数据包到达目标主机的路径,tracert www.example.com
。
2、Linux命令
- 文件和目录操作
ls
:列出当前目录下的文件和子目录,ls -l
以长格式显示详细信息。cd
:切换目录,cd /home/user
切换到/home/user目录。mkdir
:创建新目录,mkdir newdir
。rmdir
:删除空目录,rmdir emptydir
。cp
:复制文件或目录,cp source.txt destination.txt
复制文件,cp -r olddir newdir
递归复制目录。mv
:移动文件或重命名,mv oldfile.txt newfile.txt
重命名文件,mv file.txt /newpath
移动文件。rm
:删除文件或目录,rm file.txt
删除文件,rm -r dir
递归删除目录及其内容。
- 系统信息
uname
:显示系统信息,uname -a
显示所有系统信息。cat /proc/cpuinfo
:查看CPU信息。cat /proc/meminfo
:查看内存信息。ps
:查看当前进程,ps -ef
显示所有进程的详细信息。kill
:结束进程,kill pid
结束指定PID的进程,kill -9 pid
强制结束。
- 网络操作
ifconfig
或ip a
:查看网络接口信息。ping
:测试网络连接,ping www.example.com
。traceroute
:跟踪数据包路径,traceroute www.example.com
。netstat
:显示网络连接、路由表等信息,netstat -tuln
查看监听的端口。
3、. 专业术语
- POC:全称“Proof of Concept”,中文“概念验证”,常指一段漏洞证明的代码。
- EXP:全称“Exploit”,中文“利用”,指利用系统漏洞进行攻击的动作。
- Payload:中文“有效载荷”,指成功 exploit 之后,真正在目标系统执行的代码或指令。
- Shellcode:简单翻译“shell 代码”,是 Payload 的一种,由于其建立正向/反向 shell 而得名。正向代理与反向代理区别?
- 正向 shell:攻击机A,受害者 B
正向 shell: A 主动连接 B,直接使用 ssh 命令;受害者的命令行的输入输出转到控制端 - 反弹 shell:
控制端监听在某 TCP/UDP 端口,被控端发起请求到该端口,将受害者的命令行的输入输出转到控制端. - 结论:
无论是正向 shell还是反弹 shell,都是 A 控制 B,只是请求端不一样,一个是主动控制,一个被动控制,与正向代理和反向代理一样,反弹 shell就会更加的稳定,用途更大。
- 正向 shell:攻击机A,受害者 B
- poc 与 exp 区别:
- POC 是用来证明漏洞存在的,EXP 是用来利用漏洞的,两者通常不是一类,或者说,POC 通常是无害的,Exp 通常是有害的,有了 POC,才有 EXP。
4、 环境架构
- 开发语言,程序源码,中间件容器,数据库类型,服务器操作系统,第三方软件等
- 开发语言&开发脚本:
- asp,php,asp.jsp,java,python,ruby,go,html,javascript 等
- 程序源码:根据开发语言分类;应用类型分类;开源 CMS 分类;开发框架分类等
- 中间件容器:IIS,Apache,Nginx,Tomcat,Weblogic,Jboss 等
- 数据库类型:Access,Mysql,Mssql,Oracle,db2,Redis,MongoDB 等
- 服务器操作系统:Windows 系列,Linux 系列等
- 第三方软件:phpmyadmin,vs-ftpd,VNC,Openssh 等
5、 web漏洞种类
- SQL 注入,文件安全,RCE 执行,XSS 网站,
- CSRF/SSRF/CRLF,
- 反序列化,逻辑越权,未授权访问,XXE/XML,弱口令安全等
6、 权限的划分
- 后台权限,数据库权限,部分权限,web 权限,系统权限
- 系统权限:admin, system, users(admin 管理员,users 普通用户)
- 提权到 system
7、数据包
- 通信过程
- 浏览器建立与 web 服务器之间的 connect
- 浏览器将请求数据打包(生成请求数据包)并发送到 web 服务器
- web 服务器将处理结果打包(生成响应数据包)并发送给浏览器
- web 服务器关闭连接
- 过程:
- 建立连接—> 发送请求数据包—> 返回响应数据包—> 关闭连接
8、请求方式
- GET 方法
- 用于使用指定的 URI 从给定服务器中检索信息,即从指定资源中请求数据。使用 GET 方法的请求应该只是检索数据,并且不应对数据产生其他影响。在 GET 请求的 URL 中发送查询字符串(名称/值对),需要这样写:/test/demo_form.php?name1=value1&name2=value2
- 说明:GET 请求是可以缓存的,我们可以从浏览器历史记录中查找到 GET 请求,还可以把它收藏到书签中;且 GET 请求有长度限制,仅用于请求数据
- 注:因 GET 请求的不安全性,在处理敏感数据时,绝不可以使用 GET 请求。
- HEAD 方法
- 与 GET 方法相同,但没有响应体,仅传输状态行和标题部分。这对于恢复相应头部编写的元数据非常有用,而无需传输整个内容。
- POST 方法
- 用于将数据发送到服务器以创建或更新资源,它要求服务器确认请求中包含的内容作为由 URI 区分的 web 资源的另一个下属。POST 请求永远不会被缓存,且对数据长度没有限制;我们无法从浏览器历史记录中查找到 POST 请求。
- PUT 方法
- 用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容。它会将包含的元素放在所提供的 URI 下,如果 URI 指示的是当前资源,则会被改变。如果 URI 未指示当前资源,则服务器可以使用该 URI 创建资源
- DELETE 方法
- 用来删除指定的资源,它会删除 URI 给出的目标资源的所有当前内容。
- CONNECT 方法
- 用来建立到给定 URI 标识的服务器的隧道;它通过简单的 TCP/IP 隧道更改请求连接,通常实使用解码的 HTTP 代理来进行 SSL 编码的通信(HTTPS)
- OPTIONS 方法
- 用来描述了目标资源的通信选项,会返回服务器支持预定义 URI 的 HTTP 策略。
- TRACE 方法
- 用于沿着目标资源的路径执行消息环回测试,它回应收到的请求,以便客户可以看到中间服务器进行了哪些(假设任何)进度或增量。
以上介绍了 HTTP 的 8 种请求方式,其中常用的是 GET 和 POST(GET 是从服务器上获取数据,POST 是向服务器传送数据)。
7. 状态码
常见状态码
- 1**:提示信息 - 表示请求已收到,继续处理
- 2**:发送成功(200)
- 3**:重定向(302)
- 4**:客户端错误
- 400:发送请求有语法错误
- 401:访问页面没有授权
- 403:没有权限访问页面
- 404:没有该页面
- 5**:服务端错误
- 500:服务器内部异常
- 504:服务器请求超时,没有返回结果