安全培训-Web漏洞利用
标签:Security

Day2

今天是第二天,今天增加了很多实验,也了解到了如何从0开始获取到一个网站的web权限

声明

以下内容纯粹的进行学习,只是实验环境进行学习测试,并无在互联网上实验,读者也不要使用下面的技术对互联网上的网站进行攻击,对于擅自攻击的行为,本网站概不负责。

1. 信息泄露

1.1 御剑扫描

对于一个网址,如果最开始找不到入口,可以使用御剑进行扫描

image-20181204214906671

我们只需要点击左下脚添加指定的域名或ip,选择好可用的字典,就可以开始扫描了,一些可以的地址就会被列出来,上图就可以发现网站的源码备份被扫描到了。还有我们可以发现robots.txt,对于一些Disallow的地址,我们不要直接写在robots.txt里面,尽量采用通配符等相关方式。防止一些故意针对robots进行攻击的行为

解决方案

1.2 GitHack获取源码

对于Git管理的项目,我们可以通过/.git目录下载相关的源码

image-20181204215202187

对于GitHack需要使用Python运行,可以采用python 2.7的版本来进行

image-20181204215303963

上面就是我们通过GitHack获取到的源码

解决方案

2. 目录遍历

通过在url中或 者在有特殊意义的目录中附加../、或者附加../的一些变形 (如..\..//甚至其编码,或类似的跨父目录字符串,完 成目录跳转,读取操作系统各个目录下的敏感文件。导致攻击者能 够访问未授权的目录,以及能够在未授权的web服务器的根目录外 执行命令。

image-20181204220523637

例如上面我就遍历到了passwd相关文件

解决方案:

3. 注入漏洞

3.1 两种注入方式

内联SQL注入

内联注入是指插入查询注入SQL代码后,原来的查询仍然会全 部执行,下图展示内联注入的示意图:

image-20181204221852568

终止式SQL注入

终止式SQL语句注入是指攻击者在注入SQL代码时,通过注释剩 下的查询来成功结束该语句。

image-20181204221930796

下面我们采用or 1=1将可能遍历出所有的数据

xxx.xx.xx/home.php?id=1 or 1=1

image-20181204231033991

我们可以通过拼接字符串的方式获取到信息:

image-20181204221700091

3.2 常用暴露语句

查看数据库版本信息:Version()

爆数据库名

  1. 爆出所有数据库名
union select 1,2,group_concat(SCHEMA_NAME),4 from information_schema.schemata

image-20181204222256041

但是在使用的时候,记得在前面添加上 and 1=2让前面查询的东西不被显示出来

  1. 爆出当前数据库名
union select 1,2,database(),4 from information_schema.schemata

image-20181204222414536

爆表名

union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema=database()

image-20181204222441389

爆字段名

union select 1,2,group_concat(column_name),4 from information_schema.columns where table_name = '表名'

image-20181204222504815

爆字段值

union select 1,2,group_concat(字段1,0x7c,字段2),4 from 表名

image-20181204222523712

3.3 Pangolin(穿山甲)注入

image-20181204222621435

3.4 SqlMap注入

3.4.1 Get型注入

image-20181204231142835

上面是使用方式

image-20181204222721291

通过上面的使用,我们可以查看到获取到相关的信息,还可以对里面的一些常用的md5加密的数据进行解密

3.4.2 POST型注入

下面是先抓包再分析的过程:

Step 1 对于burpsuite,我们需要先开启浏览器代理

image-20181204223124640

Step 2 :确认burp的代理

image-20181204223257477

Step 3 抓包并保存到文件

image-20181204223325771

Step 4 进行分析

image-20181204223344011

3.5 预防方案

针对Sql注入防护主要有以下几点:

  1. 针对用户提交的数据进行过滤

  2. 使用参数化的代码体制

  3. 开启php.ini中的gpc转义防护

  4. 安装第三方软件的防护

4. 越权访问

一般对于用户管理或者后台登录都会进行有效的过滤。常见的检测 方案一般利用

  1. Javascript检测验证(不安全)

  2. Cookies验证(一般安全)

  3. Session验证(安全)

  4. 数据库信息匹配验证(安全)

如果网站只是简单的js验证的话,我们可以尝试关闭js从而跳过

Step 1 关闭浏览器js

在firefox下使用about:config

image-20181204223600432

Step 2 御剑扫描

通过御剑找到可疑域名

image-20181204223625096

Step 3 进入域名

image-20181204223715071

Step 4 尝试添加管理员

image-20181204223741955

成功🤓

可以在谷歌、百度中使用下面进行搜索地址,找到大量的可疑域名

inurl:admin_left

但千万不要进行攻击测试

5. 命令执行

下面针对Struts2进行漏洞分析

Step 1 Struts2漏洞扫描

方法一:

image-20181204224327891

方法二:

image-20181204224353174

Step 2 利用方法一的扫描进行文件上传

image-20181204224434610

Step 3 记录相关的文件地址和密码

image-20181204224518037

Step 5 菜刀连接

image-20181204224543351

Step 6 遍历文件

image-20181204224610488

Step 7 可以尝试进入虚拟终端

image-20181204224643344

Step 8 尝试添加超级管理员

image-20181204224705757

5.1 防御

对于这类漏洞防护主要有以下几点

  1. 尽量不要执行外部命令,

  2. 使用自定义函数或函数库替代外部命令的功能

  3. 对于用户提交的数据一定要进行过滤

  4. 对于php应用程序,php中用于执行系统命令的函数在php.ini配 置中进行禁用。

6. 文件上传漏洞

文件上传漏洞与webshell

文件上传漏洞本身就是一个危害巨大的漏洞,WebShell更是将 这种漏洞的利用无限扩大。大多数的上传漏洞被利用后攻击者都 会留下WebShell以方便后续进入系统。攻击者在受影响系统放 置或者插入WebShell后,可通过该WebShell更轻松,更隐蔽的 在服务中为所欲为。

利用上传漏洞可以获取网站服务器的WebShell,而WebShell的 植入远不止文件上传这一种方式。(比如:命令执行,数据库插 入等等)

web应用程序检测手段

  1. 客户端JavaScript检测验证(通常检测文件后缀名)

  2. 服务器端文件扩展名检测 (检测文件上传文件的后缀名是否合 法)

  3. 服务器端MIME文件类型检测 (检测Content-Type 内容)

  4. 服务器端文件内容检测 (getimagesize函数)

  5. 服务器端目录路径检测

6.1 JS校验上传

方法一:

可以采用上面类似的方案,关闭浏览器js执行

方法二:改包

Step 1 先修改后缀名

image-20181204225150328

Step 2 抓包并修改

image-20181204225222041

Step 3 验证上传成功

image-20181204225242288

6.2 MIME验证上传

也是先改文件名,保证Content-Type校验通过再改包

image-20181204225333679

image-20181204225418684

6.3 文件后缀名验证上传

主要是修改一句话木马的后缀名

image-20181204225448488

6.4 内容验证上传

这个时候我们需要在图片或其他文件后面添加上我们的一句话木马

Step 1 使用copy命令重建文件

我们可以多试几次下面这个命令

copy /b aa.jpg+bb.php cc.jpg

image-20181204225609542

Step 2 验证文件改写是否成功

image-20181204225755419

里面的pass就是我们连接的密码

Step 3 菜刀连接

image-20181204225842972

6.5 预防方案

  • 10 min read

CONTRIBUTORS


  • 10 min read