解决nginx 反代 tomcat 应用不能获取到正确域名 技术文章

今天在帮朋友迁移部署tomcat应用得时候遇到了这么个问题:原来是在Windows服务器上直接使用tomcat部署到80端口的,新机器是Linux+宝塔面板,要是直接部署到80端口,其他网站或者nginx这类的就只能换端口,很是不方便,我就建议她使用nginx反代tomcat应用,那么问题就来了,我不是第一次使用nginx反代,但是之前都是反代后端的网络应用,不存在这些问题,使用宝塔添加了网站后,把应用上传到tomcat的webapps目录下,名称为shop,在网站设置启用tomcat,但是测试的时候就发现后端不能获得网站使用者正确的请求域名,获取的是本地的,http://127.0.0.1:8080/shop/xxxxxx,导致出现一些bug,返回的路径是本地的

后端返回的url信息.png

经过初略阅读+搜索应用源代码,找到了关键代码:

程序里的request.getServerName().png 

想吐槽一下这个程序员,不合格!!!这都9102年了,判断居然没有443???WTF!!!不让程序使用SSL???什么操作。。。

先说一下这个 request.getServerName() ,根据API上写的:

Reconstructs the URL the client used to make the request. The returned URL contains a protocol, server name, port number, and server path, but it does not include query string parameters. 

也就是说, getRequestURL() 输出的是不带query string的路经(含协议 端口 server path等信息).

并且,还发现:

request.getScheme()  //总是 http,而不是实际的http或https  
request.isSecure()  //总是false(因为总是http)  
request.getRemoteAddr()  //总是 nginx 请求的 IP,而不是用户的IP  
request.getRequestURL()  //总是 nginx 请求的URL 而不是用户实际请求的 URL  
response.sendRedirect( 相对url )  //总是重定向到 http 上 (因为认为当前是 http 请求) 



接下来就该批斗宝塔了!

看看默认的启用tomcat的配置里面没有 proxy_set_header Host $host; 

最关键的就是没有这个,导致后端的Java程序的 request.getServerName() 获取不到正确的域名!

所以解决办法也简单,那就是在你的反代location里面加上 proxy_set_header Host $host;  后端就可以正确获取到当前的浏览器域名了。完事儿。



最后说一下,如果后端不是我上面说的那个不合格的程序员写的没有判断HTTPS的话,只需要在location里面添加 
proxy_set_header X-Forwarded-Proto $scheme; 即可正确处理HTTPS了。



日常踩坑记录。。。



参考:

https://www.cnblogs.com/interdrp/p/4881785.html

https://blog.csdn.net/tpkey/article/details/18550039

标签: nginx Java

admin 发布于  2019-11-28 16:14 

Shodan 庆祝成立10周年,会员优惠1$ 资源分享

不多说,如果你搞渗透测试或者信安,这些东西不知道Shodan的话,就不用看了。

今天在Shodan 的官方twitter看到,他们的活动通知,

shodan.png

在UTC时间23号一天里只需要1$即可购买成为会员,算成北京时间就是明天早上八点结束。


可以使用PayPal或者是信用卡支付,你也可以找人代付,但是这个只有20次下载,但是你可以不用下载,自己写脚本用API查询,导出数据。活动地址,shodan.io/store/member 快上车,其他时间只有一年一度的黑五优惠,是5$,100次。

标签: 渗透测试

admin 发布于  2019-11-23 11:16 

最新iCloudBypass一键移除iphone 5s — iphone x 的ID锁 业界新闻

注:此方法适用于破解忘记ID密码的设备,支持iphone 5s — iphone x的全版本系统设备。

目前只能在Mac os系统环境下执行 (黑苹果可以而安装虚拟机则无法使用

适用设备:

iphone 5s — iphone x

所需工具:
checkra1in(越狱工具)
iCloudbypass(绕过iCloud的工具,无信号,可安装APP,当TOUCH用)


图文简要教程

使用checkra1in工具越狱:

手机连电脑,点start——next,start,跟着提示手动进DFU就好了

Snipaste_2019-11-19_22-38-02.png

下载及安装iCloudbypass
这是作者的github地址:

https://github.com/crazymind90/iCloudBypassCA

下载iCloudBypassCA.pkg文件,

如果不能安装,提示未知来源之类等,解决方法:登录管理员用户,从 Apple 菜单中选取“系统偏好设置”选取“安全性与隐私”打开,选择仍要打开,(勾选上任何来源,就不会显示通知了,但是不建议这么做!)不会设置的参考:https://support.apple.com/zh-cn/HT202491 ,还不会就不要折腾了。。。

安装后打开安装iCloudbypass后打开如图:
Snipaste_2019-11-19_22-38-48.png

打开终端:

Snipaste_2019-11-19_22-45-36.png

  1. 复制上图上的1所指小框框的内容,粘贴,回车

  2. 待跑完代码后,复制上图上的2所指小框框的内容,粘贴,回车

  3. 最后点击“Move iCloud to Trash”即可

Snipaste_2019-11-19_22-47-08.png

破解完成:
Snipaste_2019-11-19_22-47-50.png
 
 

作者的视频教程:

https://youtu.be/qSXzgrVhWgE

视频下载:
链接: https://pan.baidu.com/s/1BAzN0jw3iYFMpxHBSCIv5A 提取码: mrxn 

最后:

如果没有忘记ID密码的设备,不要自己加难度,强行试验,根本没有必要

此工具为第三方工具,理论上是有风险的,使用需谨慎。


标签: 苹果

admin 发布于  2019-11-19 22:28 

CVE-2019-12409/Apache Solr由于错误配置JMX RMI导致远程代码执行漏洞 业界新闻

0x1 背景

Solr是apache的顶级开源项目,它是使用java开发 ,基于lucene的全文检索服务器。

Solr仅新版本 8.1.1, 8.2.0受到该漏洞影响,Solr用户不应该把自身的 Solr 集群暴露于公网之中。

在Linux 下的环境下的Apache Solr 8.1.1和8.2.0版本中默认启用不安全配置(ENABLE_REMOTE_JMX_OPTS="true"),如果开启JMX监听服务,可能导致远程代码执行的风险,建议使用Apache Solr的用户尽快更新到无漏洞版本或

由于 Solr 新版默认启动时开启JMX服务,如果你的服务器是在公网上,请立即做好环境网络配置自查工作,或关闭JMX相关功能。

0x2 漏洞详情

Java ManagementExtensions(JMX)是一种Java技术,为管理和监视应用程序、系统对象、设备(如打印机)和面向服务的网络提供相应的工具。

JMX 作为 Java的一种Bean管理机制,如果JMX服务端口暴露,那么远程攻击者可以让该服务器远程加载恶意的Bean文件,随着Bean的滥用导致远程代码执行。

CVE-2019-12409漏洞:在Linux 下的环境下的Apache Solr 8.1.1和8.2.0版本存在默认不安全配置(ENABLE_REMOTE_JMX_OPTS="true"),通过该配置开启RMI服务(默认监听在TCP 18983端口)后,攻击者可利用网上公开的JMX漏洞利用工具进行远程代码执行(RCE)攻击,从而获取服务器权限。



    1.启动一个可以被用于远程类加载的 MLet web服务



    2.使用JMX服务使目标服务器远程加载恶意类



    3.调用恶意 Bean 实现代码执行



0x3 漏洞证明

CVE-2019-12409 shell.jpg

0x4 修复&缓解措施

临时缓解措施:

本次官方更新主要更新配置选项ENABLE_REMOTE_JMX_OPTS为false,因此在不影响业务系统正常运行的情况下,可以直接修改Apache Solr的bin目录里的solr.in.sh配置文件中的ENABLE_REMOTE_JMX_OPTS字段值为false,修改完配置需要重启服务才能生效。



附漏洞POC利用地址:

https://github.com/jas502n/CVE-2019-12409

参考地址:

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12409
https://nosec.org/home/detail/2544.html
https://www.n0tr00t.com/2015/04/17/JMX-RMI-Exploit-Demo.html
https://github.com/mogwailabs/mjet

标签: 漏洞 Java rce

admin 发布于  2019-11-19 22:03 

配合chrome浏览器console解密一段JSFuck代码["\x66\x69\x6c\x74\x65\x72"] 技术文章

在测试某个项目的时候,发现一段JavaScript代码,省略不重要的部分如下:

// 原内容如下,只知道有个正则

['mmh']["\x66\x69\x6c\x74\x65\x72"]["\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72"](((['mmh'] + [])[

    "\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72"]['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'][

    '\x61\x70\x70\x6c\x79'](null,

    "33s102Y117y110O99L116H105n111u110Z40g41U123u102m117c110M99m116T105y111d110"

        '\x73\x70\x6c\x69\x74'
)))('mmh');

// 在JavaScript中对于\x66这种开头的,\x代表这是一个16进制,直接在console里面打印出来就ok

// console.log('\x66\x69\x6c\x74\x65\x72') => filter

// 然后依次打印所有的类似字节即可得到如下转码后的JavaScript代码

// 如果你到这里不知道如何下手的话,怎么办?搜索啊!Google搜索以下 XXXX是什么 就有结果了

// 或者把全部\x66这种解密后得到的相关字符串去搜索就有结果了

jsfuck对照表.png

// 下面看一下jsfuck对照表,然后解密

// false       =>  ![]

// true        =>  !![]

// undefined   =>  [][[]]

// NaN         =>  +[![]]

// 0           =>  +[]

// 1           =>  +!+[]

// 2           =>  !+[]+!+[]

// 10          =>  [+!+[]]+[+[]]

// Array       =>  []

// Number      =>  +[]

// String      =>  []+[]

// Boolean     =>  ![]

// Function    =>  []["filter"]

// eval        =>  []["filter"]"constructor"()

// window      =>  []["filter"]["constructor"]("return this")()

// 解码后的代码如下,为了节省字符,使用mrxn123代替代码中的超长字符串

['mmh']["filter"]["constructor"](((['mmh'] + [])["constructor"]['fromCharCode']'apply'))('mmh');

// 根据jsfuck对照表,我们去掉mmh,这样就是熟悉的原滋原味的jsfuck格式的代码了

[]["filter"]["constructor"]((([] + [])["constructor"]['fromCharCode']'apply'))();

// 根据eval对照[]["filter"]"constructor"(),我们只需要把code部分代码直接console.log()出来就好

console.log(((([] + [])["constructor"]['fromCharCode']'apply')));

// 输出:{

console.log测试.png

// 同样的姿势将开始用mrxn123替换掉的字符串替换回去,回车,OK!JavaScript源码就出现在控制台了

jsfuck解密后源码.png 
注意:上面的步骤中,替换需要去掉原内容中的空格,不然会报错。

admin 发布于  2019-11-16 11:05 

Burp Suite Professional 2.1.05及burp-loader-keygen-2_1_05.jar下载 安全工具

其实Burp Suite Professional 2.1.05及burp-loader-keygen-2_1_05.jar出来好几天了,差不多就在burp官方portswigger 5号更新后第三天就流出来了,先上一张最新版的截图吧!必须要有图,哈哈

Snipaste_2019-11-14_23-56-27.png

但是最近很忙没有第一时间更新,知道的,要过年了!努力加班挣过年钱啊,没钱的年就和难过了啊!最近国内环境也不好,整个大环境也不太好,各方面的都收紧了。不可能暴富,那就只有积累了,不管是你的长辈积累还是自己积累都需要时间,见过娱乐圈内好几个暴富的都进去了!(Helen 进去了,他其实还不算暴富。。。)

子曰:君子爱财,取之有道;贞妇爱色,纳之以礼。——《增广贤文》

哔哔这么多只是想说:做个遵纪守法的好P民!不要信什么鬼闷声发大财,这就是赌博,简直是豪赌!如果你的运气好的爆棚自己搞,在下佩服,兄嘚牛逼!别后悔就行!



好了,言归正传,本次更新根据官网的说明,主要有以下几点:

1.支持在扫描时使用内嵌的Chromium 浏览器,一边支持使用JavaScript动态生成渲染的数据页面。

2.支持JavaScript的表单单击提交事件等等

3.burp内置的JRE升级到了Java12

但是也有很多的注意事项:

1.性能差,在接下来慢慢优化

2.支持链接和表单的JavaScript点击事件

3.接收XHR异步请求但是不会审查

4.在不和服务器交互的情况下,不能正确处理某些DOM

5.不支持Frames 和iframes 

6.不支持文件上传

总之,不推荐使用,如果希望尝鲜,就看下面的:



说一下最新版的Burp Suite Professional 2.1.05如何使用。


首先,所有的破解、汉化或使用burpsuite都是在你配置好了Java环境的前提下!!!推荐使用Java8比较稳定。

不知道如何配置Java环境的,GitHub项目里有一份如何在64位Windows 10下安装java开发环境的教程,请按照操作,其他的系统自行Google或者是多吉搜索(又名狗狗搜索,https://www.dogedoge.com/),百度搜教程真的是百毒。。。



在配置好了Java环境后,就可以开始破解burp、汉化、创建快捷方式等等操作。这些都有教程,具体的请在我的GitHub项目查看,项目在这篇文章已经说过:BurpSuite Pro破解版[BurpSuite Cracked version]+汉化脚本(windows)+常用插件(sqlmap.jar,bypasswaf.jar等)分享

Burp Suite Professional 2.1.05 2.1.04 1.7.37都可以在项目的release下载到,但是release默认没有打包插件和书籍这些。

大家可以关注我GitHub,star,fllow我!拉一波票 (~o ̄3 ̄)~,我一般是最新更新GitHub,博客最后看心情更新。



admin 发布于  2019-11-15 21:26