# 2 常规服务器对攻防检测手段列表

**1.端口扫描**\
步骤：

&#x20;  首先扫描目标ip下面的端口是否开放 如 22 3306 3389 6379 常见可弱口令登录和redis未授权漏洞的程序。

推荐程序：

&#x20;    nmap和<http://coolaf.com/tool/port?t=1532611200209> 一般我会先使用 shodan分析

一般的弱口令爆破程序可以在github上就能得到，若有需求可自己编写一个，如端口扫描市面上很少有全端口扫描（即 0 - 65535）下面我会贴出Java代码

<https://github.com/616891266/wechatyai-bot/blob/master/src/test/java/com/smwsk/bot/TcpScanner.java>

防范措施: 一般推荐只打开80,443端口，若有22 ssh需求也不能使用弱密码且推荐使用密钥文件登录

**2.扫描域名下的子域名**

&#x20;   步骤：

&#x20;    如端口号无任何突破口和从该域名下的子域名入手（如后台管理、其他有爆出漏洞的程序），扫描该域名下的子域名

推荐工具： <https://phpinfo.me/domain/>

防范措施:  内部人员使用的系统勿与客户使用的为同一域名或只允许在其内网访问

**3.xss注入**

&#x20;   步骤：

&#x20;  xss注入分为两种，一种是存储型xss，一种是反射型xss

存储型xss：其原理就是 黑客在某网站提交一段\<script>代码，然后这一段代码被存到数据库中，然后网站管理员打开后台管理，在网站未过滤xss的情况下，浏览器会把这一段\<script>当做网页的一部分，也会执行。随之带来的结果就是网站的账号密码被盗，再不济也能拿到管理员在此网站的cookie或者别的信息。黑客拿到这些信息就可以登录进后台。\<script>的代码一般是一个已经写好的js，此js中会获取打开者在当前网站的cookie，有些网站的保存密码机制是明文保存到cookie中。js拿到信息之后会一起提交到黑客的xss后台中。

反射型：某网站有一个搜索框，比如你去搜索“1”，等你点击搜索后，网站会给出搜索的结果和"您搜索1的结果"等字样，如网站未过滤xss，黑客可以生成一个恶意的url，当你打开这个url时会跳转到该网站，然后自动搜索，搜索内容是一段\<script>，网站在未过滤xss情况下会执行这一段\<script>的，同理也是获取cookie等信息。反射型一般会由黑客主动发送url给用户或者管理员，当他们打开url时就会中招！

比如使用这个链接：<http://test.ctf8.com/level1.php?name=test>

在这个链接下输入一段script   alert(1)，如果测试不通过是返回1

<http://test.ctf8.com/level1.php?name=%3Cscript%3Ealert(1)%3C/script%3E>

防范措施：

&#x20;  后端在每次提交数据时过滤xss，<>和script等符号字样

一个xss的小案例: <https://www.cnblogs.com/qmfsun/p/7517395.html>

**4.sql注入**

&#x20; 步骤：

&#x20; 某网站有一个搜索框，用户正常搜索"衣服"时 sql为 SELECT \* FROM test WHERE keyword = '衣服'

此时返回2条结果

此时黑客再输入“衣服' AND 1=2” sql为SELECT \* FROM test WHERE keyword = '衣服' AND 1=2

返回0条结果

还有一种情况，某新闻网站 精确到某条新闻时，一般的请求参数是id=1  这里的1是这条新闻在数据库中的的id，此时黑客也可以在1后面追加条件或者拼接sql AND 1=2即为SELECT \* FROM news WHERE id=1 AND 1=2;

sql注入一般都是出现在sql为拼接且不过滤的情况下，上面的小例子是检测网站中有没有sql注入漏洞的方法。如果网站中存在sql注入漏洞，那么黑客可以继续拼接其他sql 获取库，获取表，获取字段，然后自定义sql获取网站中的数据，甚至可以执行UPDATE语句。

&#x20;推荐工具： sqlmap是python编写的一个工具，按照前面的方法不用sqlmap也能看出是否存在sql注入漏洞

防范措施：

1.对于服务器配置层面的防范，应该保证生产环境的Webserver是关闭错误信息的，比如PHP在生产环境的配置文件php.ini中的display\_errors应该设置为Off，这样就关闭了错误提示

2.检查变量数据类型和格式

&#x20;  如果你的SQL语句是类似where id={$id}这种形式，数据库里所有的id都是数字，那么就应该在SQL被执行前，检查确保变量id是int类型；如果是接受邮箱，那就应该检查并严格确保变量一定是邮箱的格式，其他的类型比如日期、时间等也是一个道理。总结起来：**只要是有固定格式的变量，在SQL语句执行前，应该严格按照固定格式去检查，确保变量是我们预想的格式**，这样很大程度上可以避免SQL注入攻击。

3.过滤特殊符号

&#x20;  对于无法确定固定格式的变量，一定要进行特殊符号过滤或转义处理。以PHP为例，通常是采用addslashes函数，它会在指定的预定义字符前添加反斜杠转义，这些预定义的字符是：单引号 (') 双引号 (") 反斜杠 (\\) NULL。

4.使用预编译绑定变量的SQL语句。

5.做好数据库帐号权限管理

6.严格加密处理用户的机密信息。

Sql注入攻击篇 <https://www.hacking8.com/MiscSecNotes/mysql.html>

**5. 跨站伪造请求攻击 - CSRF**

步骤：CSRF漏洞和XSS有相似的地方，都是利用cookie等信息，但是CSRF无需获取目标的cookie。其原理就是用户在使用网站系统，系统保存了一些cookie等信息在本地，黑客根据网站特征生成了一个payload的网页，当用户没有退出目标系统且cookie等信息未过期时 黑客可以利用这些信息在网页伪造个请求（修改密码，支付等）只要黑客诱导用户点击这个网页，那么用户本地的浏览器就会使用未过期的信息进行请求。

推荐工具：CSRFTester

防范措施：随机token，referer值校验

**6. 通过文件上传获取权限**

&#x20;           文件上传漏洞就是利用文件的上传功能去上传可执行的：<https://blog.csdn.net/weixin_34979632/article/details/119402710>脚本文件，并通过此脚本文件获得服务器的访问服务。常见的站点一般都有文件上传功能，例如上传用户头像、上传附件、编辑文档等。当我们没有过滤上传的文件时或者服务器配置不安全就会造成文件上传漏洞。

步骤：

1.客户端JavaScript验证，把一个执行文件，通过修改文件名为txt文件就行上传

<figure><img src="https://1134366649-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5RBRCQnbuAWVIfaubnHU%2Fuploads%2F34dvXnpBvTD2d2ALASRl%2Fimage.png?alt=media&#x26;token=b804a6f8-04a1-4c23-a835-9a4b3720cef5" alt=""><figcaption></figcaption></figure>

​2.通过工具 (1) 通过burp suite软件，抓到正常上传的请求报文，修改报文的内容，发送报文，便可以绕过javaScript检验。

(2)通过修改javaScript,改变其中的关键函数。

![](https://1134366649-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5RBRCQnbuAWVIfaubnHU%2Fuploads%2FxI2zUPjrTG95OslFKhU5%2Fimage.png?alt=media\&token=5b8e441e-eba6-4a23-90c2-8937f2f4c761)

推荐工具：burp suite

防范措施：对文件内容进行检测,对中间件作安全的配置,文件扩展名使用白名单

参考：<https://blog.csdn.net/weixin_34979632/article/details/119402710>

7\. 避免邮箱仿造 服务器如何配置

邮件服务器管理员做SPF配置时，其实是需要两个步骤的，首先在域名中增加SPF记录，向支持SPF功能的邮件服务器提供验证信息，使别人能验证自己；另外，需要配置邮件服务器支持 SPF，这样才可以验证别人。

那么，在SPF配置过程中，也常常因为配置不当导致绕过，比如：

(1)域名增加了SPF记录，但是邮件服务器不支持SPF检查或邮件网关未开启SPF检测，无法验证邮件来源。这种情况下，我们声明了自己是谁，但却无法验证对方是谁，SPF检测无效，可伪造任意用户发送到你的域名邮箱里。

(2)SPF解析在公网DNS，邮件服务器配置内部DNS，内部DNS无法进行SPF解析，从而导致绕过，可从公网伪造任意用户发送邮件。

(3)攻击者在公司内网，内网SMTP服务器开启匿名邮件发送或者在信任中继服务器IP段，就可以使用任意用户发送邮件。
