太原理工大学网安姿势总结(下)

二十、文件上传漏洞姿势

什么是文件上传漏洞:

文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

.htaccess攻击:

.htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。

所以这个攻击方式就是利用文件上传点上传.htaccess文件,然后在里面配置一些特殊后缀的文件,让服务器能够将这些后缀的文件像php文件一样被解析,就达到了我们攻击的目的!

.htaccess攻击防御:

  1. 禁用或限制.htaccess文件

    • 在服务器的主配置文件(如httpd.conf)中,将AllowOverride指令设置为None或仅允许特定的指令,以禁用或限制.htaccess文件的功能。
    • 可以使用AccessFileName指令更改.htaccess文件的默认名称,以增加攻击者上传该文件的难度。
  2. 严格文件上传验证

    • 在文件上传功能中,实施严格的验证机制,不仅检查文件的扩展名,还要检查文件的实际内容和MIME类型。
    • 使用白名单机制,仅允许上传特定类型的文件,如图像、文档等,并拒绝所有其他类型的文件。
  3. 限制执行权限

    • 在Web服务器配置中,限制或禁止对上传目录中文件的执行权限。
    • 确保上传的文件被存储在安全的位置,并且只有经过验证的文件才被允许上传。

太厉害了,终于有人能把文件上传漏洞讲的明明白白了-优快云博客

二十一、CSRF XSS XXE 相关姿势

CSRF(跨站请求伪造)、XSS(跨站脚本)和XXE(XML外部实体注入)是三种常见的Web安全漏洞,它们各自具有不同的特点、原理和危害。以下是对这三种漏洞的详细比较:

一、CSRF(跨站请求伪造)

  1. 原理

    • 服务器端没有对用户提交的数据进行随机值校验,且对HTTP请求包内的Referer字段校验不严。

    • 攻击者可以利用用户的Cookie信息伪造用户请求发送至服务器。

  2. 危害

    • 攻击者可以盗用用户的身份,以用户的名义发送恶意请求。

    • 这些请求可能包括发送邮件、发消息、盗用账号、购买商品、虚拟货币转账等。

  3. 防御措施

    • 筛选出需要防范CSRF的页面,然后嵌入Token。

    • 在执行敏感操作时,要求用户再次输入密码。

    • 检验Referer头,以验证请求的来源。

二、XSS(跨站脚本)

  1. 原理

    • 服务器对用户输入的数据没有进行足够的过滤。

    • 当客户端浏览器在渲染服务器返回的HTML页面时,出现了预期值之外的脚本语句被执行。

  2. 危害

    • 盗取各种用户账号和Cookie资料,冒充用户身份进入网站。

    • 劫持用户会话,执行任意操作。

    • 刷流量,执行弹窗广告。

    • 传播蠕虫病毒。

  3. 分类

    • 反射型XSS:JS代码在web应用的参数(变量)中,如搜索框的反射型XSS,具有一次性特点。

    • 存储型XSS:持久性跨站脚本,XSS代码被写进数据库或文件等可以永久保存数据的介质中,具有隐蔽性。

    • DOM型XSS:基于DOM的XSS攻击,其中攻击的payload由于修改受害者浏览器页面的DOM树而执行,不会传到服务器上,比较难以检测。

  4. 防御措施

    • 对字符实体进行转义。

    • 使用HTTP Only来禁止JavaScript读取Cookie值。

    • 输入时进行校验。

    • 浏览器与Web应用端采用相同的字符编码。

三、XXE(XML外部实体注入)

  1. 原理

    • 当应用程序解析XML输入时,如果没有正确地处理外部实体的引用。

    • 攻击者就可以通过构造恶意的XML输入来读取服务器上的任意文件、执行命令、进行拒绝服务攻击等。

  2. 危害

    • 读取服务器上的敏感文件。

    • 执行系统命令。

    • 进行拒绝服务攻击(DDoS)。

    • 内网探测等。

  3. 防御措施

    • 禁用外部实体引用。

    • 使用安全的XML解析器库。

    • 对输入的XML数据进行严格的验证和过滤。

综上所述,CSRF、XSS和XXE是三种不同的Web安全漏洞,它们各自具有独特的原理、危害和防御措施。为了保障Web应用的安全性,开发人员需要充分了解这些漏洞的特点和防御方法,并在实际应用中采取相应的安全措施。

二十二、csrf 、ssrf 、重放攻击

 CSRF(跨站请求伪造)和SSRF(服务器端请求伪造)是两种常见的Web安全漏洞,它们在攻击方式、目标和防御措施上有所不同。以下是两者的详细对比:

一、CSRF(跨站请求伪造)

  1. 定义
    CSRF是一种由攻击者构造形成,由用户端(通常是浏览器)发起请求的安全漏洞。攻击者通过伪造用户提交的请求,将恶意请求发送至受信任的网站,导致用户在不知情的情况下执行恶意操作。

  2. 攻击方式

    • 攻击者诱导用户访问一个包含恶意请求的网页(如通过邮件、消息或恶意网站)。

    • 如果用户已经登录目标网站,该恶意请求看起来就像是来自用户本人,因此被目标网站信任并执行。

  3. 目标

    • 利用网站用户的浏览器,迫使用户在已认证的Web应用中执行非预期的操作。

  4. 防御措施

    • 使用CSRF令牌(也称为anti-CSRF令牌),确保每个请求都是用户明确意图的结果。

    • 验证HTTP请求的Referer头部,以确保请求是从可信的源发起。

    • 设置Cookie的SameSite属性,限制Cookie在跨站请求中的发送。

    • 在Ajax请求中使用自定义HTTP头,由于跨站请求通常不能设置自定义头,这增加了安全性。

二、SSRF(服务器端请求伪造)

  1. 定义
    SSRF是一种服务器端请求伪造的安全漏洞。攻击者通过构造指定URL地址,利用存在缺陷的Web应用作为代理攻击远程和本地的服务器。

  2. 攻击方式

    • 攻击者将恶意请求发送到服务器端应用。

    • 服务器端应用在没有充分验证输入的情况下,执行了这个请求,可能访问了内部系统或向外部发送敏感数据。

  3. 目标

    • 迫使服务器端应用发起对内部或外部资源的请求。

  4. 防御措施

    • 对用户提供的数据进行严格的验证和过滤,特别是那些用于指定资源位置(如URLs)的输入。

    • 限制服务器可以访问的URL或IP地址,使用白名单机制。

    • 禁用不需要的协议,如file://、gopher://、ftp://等。

    • 尽量隔离内部网络,防止服务器直接访问关键内部资源。

    • 限制服务器发出的数据流量和请求频率,以减少潜在的危害。

三、CSRF与SSRF的主要区别

  1. 攻击发起者

    • CSRF:用户端(浏览器)发起请求,攻击者利用用户的Cookie信息伪造用户请求发送至服务器。

    • SSRF:服务器端发起请求,攻击者通过构造指定URL地址获取网页文本内容、加载指定地址的图片、下载等方式进行攻击。

  2. 攻击目标

    • CSRF:利用网站用户的浏览器,迫使用户在已认证的Web应用中执行非预期的操作。

    • SSRF:迫使服务器端应用发起对内部或外部资源的请求,可能访问内部系统或向外部发送敏感数据。

  3. 防御侧重点

    • CSRF:重点在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于cookie之中,如使用CSRF令牌、验证Referer头部等。

    • SSRF:重点在于对用户提供的URL进行严格的检测和限制,避免被攻击者利用,如使用白名单机制、禁用不需要的协议等。

综上所述,CSRF和SSRF在攻击方式、目标和防御措施上存在显著差异。为了保障Web应用的安全性,开发人员需要充分了解这些漏洞的特点和防御方法,并在实际应用中采取相应的安全措施。

重放攻击看这篇文章,重点关注三者原理,攻击方式的不同,以及了解如何防御他们! 

什么是重放攻击(Reply attack)?-优快云博客

二十三、多站点共享数据库

二十四、无法连接3389端口  

无法连接3389端口时,可以按照以下步骤逐一排查原因:

一、检查网络配置

  1. 网络连通性

    • 确认客户端与远程服务器之间的网络连接是否畅通。

    • 使用ping命令或telnet工具测试网络连接,查看是否存在网络延迟、丢包等问题。

    • 如果网络连通性存在问题,检查网络设备如路由器、交换机等是否正常工作,以及网络线路是否出现故障。

  2. IP地址和端口号

    • 确保远程服务器的IP地址和端口号(默认为3389)配置正确,且没有发生更改。

    • 如果使用了非默认端口,需要在连接时指定正确的端口号。

  3. 路由配置

    • 检查路由器或防火墙的路由配置,确保数据包能够正确地从客户端路由到远程服务器。

    • 如果路由配置有误,可能导致数据包无法到达目标地址。

二、检查系统设置

  1. 远程桌面服务

    • 确认远程服务器上已启用远程桌面服务。

    • 在Windows操作系统中,可以通过“系统属性”中的“远程”选项卡来检查和启用远程桌面功能。

  2. 用户权限

    • 检查远程服务器上是否为用户分配了远程桌面连接的权限,并且该用户是否处于活动状态。

  3. 操作系统版本

    • 确认服务器和客户端的操作系统版本是否满足远程桌面连接的要求。

    • 某些较旧的操作系统版本可能不支持远程桌面连接或存在已知的兼容性问题。

三、检查防火墙设置

  1. 本地防火墙

    • 检查客户端和远程服务器上的本地防火墙设置,确保允许3389端口的入站和出站连接。

    • 可以在防火墙的入站规则和出站规则中添加允许3389端口的规则。

  2. 网络防火墙

    • 如果网络环境中存在网络防火墙或安全设备,如硬件防火墙或入侵检测系统(IDS),确保这些设备已配置为允许通过3389端口的RDP流量。

四、检查安全策略

  1. 安全组策略

    • 在Windows域环境中,检查域控制器上的组策略设置,确保没有禁止远程桌面连接的相关策略。

  2. 认证机制

    • RDP连接使用特定的认证机制来验证用户身份。如果认证机制存在问题,如证书过期或无效,可能导致连接失败。

五、其他排查步骤

  1. 检查端口占用

    • 使用网络工具(如netstat命令)检查3389端口是否被其他应用程序占用。

    • 如果3389端口已被占用,关闭占用该端口的应用程序或更改远程桌面服务的端口号。

  2. 检查服务器状态

    • 检查服务器是否出现死机、蓝屏等系统故障,或者远程桌面服务是否突然停止工作。

    • 查看系统日志以获取相关错误信息,并采取相应的解决措施。

  3. 检查客户端设置

    • 检查远程桌面客户端的设置,确保输入的服务器IP地址、用户名和密码正确。

    • 如果使用的是域名连接,确保域名解析正常。

  4. 检查网络代理

    • 如果客户端通过网络代理连接服务器,检查代理服务器的设置,确保代理服务器允许3389端口的连接。

综上所述,无法连接3389端口可能涉及多个层面的因素,包括网络配置、系统设置、防火墙设置、安全策略以及其他一些潜在问题。在排查时,需要综合考虑这些因素,并按照一定的顺序和逻辑进行排查,以便快速定位并解决问题。

二十五、udf提权

udf是什么:

UDF(Userdefined function)可翻译为用户自定义函数,其为mysql的一个拓展接口,可以为mysql增添一些函数。比如mysql一些函数没有,我就使用UDF加入一些函数进去,那么我就可以在mysql中使用这个函数了。

udf提权思路:

使用过MySQL的人都知道,MySQL有很多内置函数提供给使用者,包括字符串函数、数值函数、日期和时间函数等,给开发人员和使用者带来了很多方便。MySQL的内置函数虽然丰富,但毕竟不能满足所有人的需要,有时候我们需要对表中的数据进行一些处理而内置函数不能满足需要的时候,就需要对MySQL进行一些扩展,幸运的是,MySQL给使用者提供了添加新函数的机制,这种使用者自行添加的MySQL函数就称为UDF(User Define Function)。

提权条件:

  1. 掌握mysql数据库的账户,该账户对mysql拥有insert和delete权限,以创建和删除函数(最好直接是root账户)

  2. secure_file_priv=(未写路径)

 提权原理:

攻击者通过编写调用cmd或者shell的共享库文件(window为.dll,linux为.so),并且导入到一个指定的文件夹目录下,创建一个指向共享库文件的自定义函数,从而在数据库中的查询就等价于在cmd或者shell中执行命令。

防御方法:

首先就是把我们的数据库做好防护,参考sql注入的防御措施,其次就是配置文件中对secure_file_priv= 这个参数进行设置,比如设置为空,限制文件的上传和写入!

渗透测试:MySQL数据库UDF提权详解_mysql udf提权-优快云博客

Mysql之UDF提权-优快云博客

二十六、IP地址姿势

什么是公有IP地址(公网IP):

组建一个企业级网络,需要去向“电信运营商ISP”申请一个接入Internet的宽带,同时ISP还会给我们分配一个或多个IP地址,这些IP地址可以供我们企业内部上网,这些ISP分配给我们的IP,就是公有IP。

公有地址(Public address,也可称为公网地址)由Internet NIC(Internet Network Information Center因特网信息中心)负责。这些IP地址分配给注册并向Internet NIC提出申请的组织机构。通过它直接访问因特网,它是广域网范畴内的。

什么是私有IP地址(私网IP):

我们企业或家庭内部组建局域网用的IP,一般都会用私有IP。

私有地址(Private address,也可称为专网地址)属于非注册地址,专门为组织机构内部使用,它是局域网范畴内的,私有IP禁止出现在Internet中,在ISP连接用户的地方,将来自于私有IP的流量全部都会阻止并丢掉。

《如果在企业内部的电脑要访问Internet,则需要在企业边界上用“NAT技术”将私网IP转成公网IP才能正常的上网。》

全部IP地址的范围:

在《IP地址作用》这篇文章里,我们也介绍过IP地址的范围,这里再来看一看。

IP地址,一共分成了5类,范围分别如下:

A类IP:从0.0.0.0 – 127.255.255.255,共有16777216个IP

B类IP:从128.0.0.0 – 191.255.255.255,共有65536个IP

C类IP:从192.0.0.0 – 223.255.255.255,共有256个IP

D类IP:从224.0.0.0 – 239.255.255.255

E类IP:从2240.0.0.0 – 255.255.255.255

而其中,能在Internet或被用户使用的A、B、C三类,而D类用作组播地址,E类作为科研保留地址段

公有IP地址的范围:

A类的公有IP:
1.0.0.0~9.255.255.255
11.0.0.0~126.255.255.255

B类的公有IP:
128.0.0.0~172.15.255.255
172.32.0.0~191.255.255.255

C类的公有IP:
192.0.0.0~192.168.255.255
192.169.0.0~223.255.255.255

私有IP地址的范围:

A类私有IP地址:
10.0.0.0~10.255.255.255

B类私有IP地址:
172.16.0.0~172.31.255.255

C类私有IP地址:
192.168.0.0~192.168.255.255

二十七、http请求方式

http协议:

Http协议是“超文本传输协议”(不仅可以传输文本,也可以传输图片,音频,视频等),属于应用层协议,并且它是一种无状态协议,这就表示,服务器不会保存任何关于客户端状态信息,也就是说服务器处理的每个请求都是独立的。其次它默认使用的是80端口进行通信,而且,HTTP协议定义了客户端和服务器之间请求和响应的格式,支持多种请求方法,和响应状态码。

 get请求和post请求:

GET 和 POST 的区别???

首先,GET 方法的含义是用于获取资源,在访问一个网页时,使用 URL 向服务器发送了一个GET方法请求,从而获取到网页资源,POST方法的含义是用于传输实体,比如在上传图片时,发送的就是一个 POST方法的请求,但是,传输实体使用GET方法的请求也是没有问题的,获取资源使用POST方法请求也是没有过问题的,所以,它们是没有本质区别的,只是在使用习惯上是有区别的;

GET 请求经常把传递给服务器的数据放到URL中,POST 请求经常把传递的数据放到body中,但是这种情况也并不是绝对的,对于 GET 请求,也可以把数据放到body中,POST请求也可以放到URL中,但前提是,客户端和服务器都得按照一样的方式来处理代码,就像,你使用 POST 方法了,数据都放在 body中,那么在服务器这边,就要获取 body 中的数据进行处理,如果使用 GET 方法,那么在服务器这里,就要拿到 URL 中的数据进行处理。
语义上的差别
对于 GET 和 POST,网上会有一些比较错误的说法❌:

1、GET请求能传递的数据量有上限,POST请求传递的数据量没有上限

因为早期的浏览器,对URL的长度是有所限制的,限制了URL不能太长,但是呢,RFC标准文档中并没有对URL的长度进行规定,在当前的浏览器上,URL也是可以非常长的~~

2、GET请求传递数据不安全,POST请求传递数据更安全

这句话的依据是,在登录的场景下,如果使用GET 请求的话,用户名和密码都是可以在地址栏中看到的,而POST请求的话,账号和密码都是看不到的,这种现象,也就是哄一哄小白,对于程序员来讲,通过抓包就可以简单的获取到body中的账号和密码,而真正的安全措施是,要对账号和密码进行加密,而这个加密也就做到了相对来说比较安全一点,所以,此处的安全性是和POST无关的

3、GET 只能传输文本数据,POST 可以传输文本和二进制数据,这句话也是不准确的,因为:

也可以直接把二进制数据放到GET 的body中,body中是可以直接放二进制数据的,也可以将二进制数据通过base64转码放到query string中的

put请求,关于这些请求直接给一篇文章,大家都了解一下: 

 探索 HTTP 请求方法:GET、POST、PUT、DELETE 等的用法详解_请求方式put-优快云博客

状态码: 

状态码表示这次请求所获得的响应是一个什么样的状态,表示这次请求是成功,还是失败,还是其他………

状态码的种类非常多,不需要全部都记住,只需要记住一些比较常用的即可,例如下图:

状态码主要分为五大类:

一些比较重要的状态码:

200:表示请求成功

202:表示请求已经收到,但还未响应

301(永久重定向):表示请求资源的URL已经永久更改,在响应中给出了新的URL,当浏览器收到这种响应时,后续的请求都会自动更改成新的地址;

302(临时重定向):表示请求资源的URL被暂时更改,后续还有可能会改成其他的

重定向的意思:相当于电话号码中的 “呼叫转移”,例如我原来的手机号码是 123456, 现在我换了新的手机号456789, 那么,我就不用告诉朋友我的新手机号,只需要办理一个呼叫转移,后续朋友们通过123456手机号给我打电话时,就会自动跳转到456789这个手机号上

在重定向的响应报文中,会使用 Location 这个属性表示当前新的URL地址

404:表示服务器找不到请求的资源,在浏览器中,这也意味着无法识别URL

403:表示客户端没有访问的权限,也就是说,资源存在,但是你没有访问权限,因此服务器拒绝提供请求资源

500:表示服务器内部错误,无法处理请求

501:表示服务器不支持请求方法

504:表示扮演网关或者代理的服务器无法在规定的时间内获得想要的响应。例如在双11活动中,请求比较多的时候,服务器在短时间内无法进行处理,就会报这样的状态码

二十八、网站动态脚本语言

常见的这几种动态脚本语言的特点大家了解一下:

常用的三种动态网页语言_最流行的三种实现动态网络设计语言-优快云博客

常见各种语言的一句话木马,话不多说直接甩一篇马子大全:

 史上最全的一句话木马-优快云博客

二十九、Linux查询端口

主要掌握两个命令 natstat和ss

Linux查看端口使用状态、关闭端口及配置端口方法 详细_linux中怎么关掉50000端口-优快云博客

Linux ss 命令 | 菜鸟教程 (runoob.com)

三十、文件包含漏洞

什么是文件包含漏洞:

和SQL注入等攻击方式一样,文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。

什么叫包含呢?以PHP为例,我们常常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数,这一过程叫做包含。

有时候由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。

以PHP为例,常用的文件包含函数有以下四种
include(),require(),include_once(),require_once()

区别如下:

require():找不到被包含的文件会产生致命错误,并停止脚本运行
include():找不到被包含的文件只会产生警告,脚本继续执行
require_once()与require()类似:唯一的区别是如果该文件的代码已经被包含,则不会再次包含
include_once()与include()类似:唯一的区别是如果该文件的代码已经被包含,则不会再次包含

 分类:分为本地文件包含和远程文件包含

常见的伪协议,漏洞利用技巧,伪协议利用条件,漏洞利用条件,防护措施都在这篇文章里,大家好好看看即可!

这里大家要知道只要文件内容符合php语法不论什么类型的文件,都可以解析!

文件包含漏洞全面详解-优快云博客

三十一、http头相关姿势

三十二、渗透测试那一套理论

渗透测试流程:

信息收集、漏洞扫描与分析、漏洞利用、权限提升、权限维持、清理痕迹、报告与修复建议

渗透测试工具:Nmap(网络探测和端口扫描)、BurpSuite(爆破)、Metasploit(美少妇)、OWASP ZAP(也是个Web应用渗透测试工具) 

三十三、NAT姿势

NAT(地址转换技术)详解_nat技术-优快云博客

三十四、nmap姿势

 把这篇文章里的命令以及执行效果看一下即可!

网络扫描神器:Nmap 保姆级教程(附链接)_虚拟机怎么安装nmap-优快云博客

三十五、tcp、udp

 

 

大家选择性看一下这两篇文章,重点掌握 tcp udp协议 报文结构 各个字段的含义什么的

TCP/IP 报文格式(IP数据包、TCP报头、UDP报头)_tcpip报文-优快云博客

OSI七层模型、TCP/IP四层模型(超详细!!!!!)-优快云博客

三十六、hydra姿势

就是一个爆破用的脚本,大家了解一下常用用法和支持哪些常见协议即可!

重用用法: 

使用语法:hydra 参数 IP地址 服务名
帮助命令:hydra -h
常用命令:hydra [-l 用户名|–L 用户名文件路径] [-p 密码|–P 密码文件路径] [-t 线程数] [–vV 显示详细信息] [–o 输出文件路径] [–f 找到密码就停止] [–e ns 空密码和指定密码试探] [ip|-M ip列表文件路径]

支持的协议:

Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTPHTTPS, ICQ, IMAP, IRC, LDAP, MEMCACHED, MONGODB, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, Radmin, RDP, Rexec, Rlogin, Rsh, RTSP, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5, SSH (v1 and v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP。

Hydra(九头蛇)工具使用(非常详细)从零基础入门到精通,看完这一篇就够了。_hydra工具-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值