Pwnhub知识总结

0x00 前言

pwnhub的题目出的都挺好,强烈推荐~网址:https://pwnhub.cn/。 基本都没做到最后,复现了一下。记录学习到的知识~

0x01 另一份文件

这题flag就在upload文件夹下。只是php的权限删不掉它。
Glob是按字母顺序排序的,上传比flag文件名靠后的文件名。这样就能通过是否上传成功来判断Flag的文件名。

脚本:

0x02 WTF (xss,csrf,csp)

1. 构造xss

找到漏洞点,文章发布哪里可以构造xss。

过滤了"<>'等特殊字符。看到网页编码时GBK,加深了对GBK字符集造成注入的认识。

这样的方式正好利用在这个题目:

  • \x3c,\x3e(16进制编码)形式代表<>。还可以用八进制\74\76
  • 由于转义\\\,所以需要吞掉一个\。正好利用GBK编码。

检测Payload为:

关键点:

  • js引号里面支持16进制和8进制表示字符
  • GBK字符编码可以吞掉一个反斜杠\

2. URL任意跳转

发现有个url任意跳转漏洞:

测试在reportBug页面,发送给后台bot访问:

顺利接收到后台的访问,证明思路正确:

3. CSRF获取flag.php的内容

这里有两个限制:

  • phpsessionhttponly,无法打到cookie
  • 后台admin用户,不能访问其他人的文章。(这个有点奇妙)

对应的解决方案为:

  • 在xss中,使用ajax获取flag.php内容,传到服务器中。
  • 使用csrf,让admin用户自己发布一个带有xss的文章。然后访问之。(csrf)

(1) 本地获取flag.php内容

解决第一个问题:ajax读取文件,发送到服务器上:

遇到坑:

使用document.write来实现上述功能:

成功获取。

(2) csrf发文章

phpurldecode靠谱~ 用unescape不靠谱~

填写csrf的URL:

似乎不能有_,以及其他不知道的过滤。然后,发送文章的编号链接,到后台即可。

得到flag:

0x03 找呀找呀找朋友(实战综合)

1. 找到入口

将样本放到在线检测中,得到shell.pwnme.site域名。然后扫描子域名,得到:blog.pwnme.site

2. 文件任意下载漏洞

blog有个需要猜的/user_register。注册账号后,可以得到/file_download功能。这样就到了真正技术活的时候了。

3. 找到真实ip

由于使用了CDN,无法知道该域名的真实ip。

有两个思路:

  • 找个靠谱网站搜索历史ip记录
  • 存在文件任意读取漏洞,读读系统日志

最终在/proc/self/fd/4 里面读到日志信息: 找到54.223.115.219这个ip。

4. 破解Weblogic的密码

nmap扫描可以很容易得到有个weblogic服务,但是没有密码。weblogic是最新版,反序列化不成功。

首先,可以按照以下方式读到weblogic的PID和路径信息:

根据这篇文章http://bobao.360.cn/learning/detail/337.html,需要读取Weblogic的两个文件:SerializedSystemIni.datconfig.xml

过程如下:

解密的代码在github上:https://github.com/NetSPI/WebLogicPasswordDecryptor

尝试使用powershell执行脚本,先要设置:

运行提示没有aes模块:

最后改用java执行:需要下载bcprov-jdk15on-155.jar,复制到JDK的lib/ext下。
修改lib/security/java.security文件,增加:

用java解密成功:

登录后,找地方上传war包,这里我最后还找了半天。war包里面放个大马即可。还要激活更改,并且启动webapp。 查看目录,找到flag。

0x04 迷(内网代理)

1. 信息泄露

更新扫描器的重要性~

README.md泄露了敏感信息。

存在弱密码:proxy

2. 代理内网

ssh socks5 代理:

测试下:

经过测试,需要在一个终端内完成~~ 之后代理,都用后台运行~~

nmap扫本地端口(代理不成功~不知道原因~):

3. fastcgi 命令执行

fastcgi的9000端口漏洞利用:

  • 找到一个php文件:

在虚拟机里面执行命令:

随便找一个php文件即可。 这里使用/usr/share/php/OS/Guess.php

  • 执行ls /命令:

生成Payload,然后nc过去:

把Payload传到kali代理中:


0x05 深入敌后(内网渗透)

这个题目真是溜~~ kali中的msf终于用上了~

1. 扫描器的重要性

用御剑扫描目录,可以发现/file目录。接着在/file目录下扫描,发现login.html/.hg/源码泄露。
https://github.com/kost/dvcs-ripper来获取源码。

2. IIS+Windows+php 绕过黑名单

Cuit2015有这样的绕过例子:
使用NTFS流的方式

绕过黑名单,上传shell。根据源码可以知道上传位置。

shell上传在:http://54.223.229.139/file/users_file_system/angelwhutest123456/ecdeb33b306151aed0585301e5330660.php

3. 信息收集

提示信息为:

桌面上找到一个密码文件,ie-password.txt:

翻找软件,发现有xshell。找Administrator用户存储信息的地方:

发现有172.31.5.95.xsh,里面记录有用户名ubuntu

4. msf内网渗透

通过aliyun中转,连接msf

连接虚拟机Kali和目标主机。 http://www.angelwhu.com/blog/?p=309

成功连接了msf。

登陆172.31.5.95内网主机

将172.31.5.95的端口转发出来。真是神奇,直接使用msf:

直接将端口转发到本地kali主机了。新开个terminal:

密码为abc@elk,成功登陆~

172.31.5.95主机信息收集

该主机具有root权限:

last命令看到一个登陆ip地址:

172.31.13.133主机IPC漏洞

使用入口windows主机(54.223.229.139)里面安装好的Nmap扫描一下172.31.13.133机器:

根据提示:

密码策略为https://msdn.microsoft.com/zh-cn/library/cc786468(v=ws.10).aspx

猜测密码为abc@ELF~

139/135/445端口,说明是windows,可以IPC$攻击。 参考http://www.voidcn.com/blog/Ice_15/article/p-1890468.html

映射目标C盘到本地Z盘:

搜索z盘文件:for /r z: %i in (*flag*) do @echo %i

得到flag:

0x06 打开电脑(css injection)

题目介绍

1. unsafe port

对于chrome访问的端口,以下都会显示unsafe port,禁止访问:

使用firefox访问6666端口。

2. css 注入攻击

查看csp头:

关键:这里不一定要xss获取cookie~~

有个img-src的策略有点广泛:

查看XSS Filter Evasion Cheat Sheet。找到这个:

观察前台显示:

contributor处,没有引号,直接插入sytle:

测试不能执行js脚本。看能不能访问外网:

测试通过,可以得到访问的信息。

contact功能处,填写如下Payload测试:

得到访问信息,竟然并不需要cookie:

接下来就是访问后台http://52.80.1.108:6666/d04ea1a0f534f6e70c00dae30ba0af9f/admin.php了~

3. 访问后台

访问得到是404,加上X-forwarded-for:127.0.0.1,要猜到flag.php,得到flag:

4. 总结

学习到的知识:

  • 仔细看csp,如何bypass~
  • css 样式注入
  • 能够访问外网,可以得到有用的信息~ (nc -lvvv port)

0x07 another php

这个题目,有web和pwn部分。最后需要竞争上传脚本,最后也木有成功~总结下知识点。

1. php源码泄露

记录下几个,以后补充:

目录方面的源码泄露:

后面是一个svn泄露,查看wc.db文件得到一个用户名。还需要有个爆破md5的脚本:

2. wget 低版本重定向漏洞(CVE-2016-4971) 与条件竞争

详情请看 http://legalhackers.com/advisories/Wget-Arbitrary-File-Upload-Vulnerability-Exploit.txt。 本来服务器严格过滤了文件名为pwnhub.jpg,通过这个漏洞,就可以将文件名改为任意名称了。

附上我参考wp也没有成功的竞争脚本:

0x08 大物必须过

知识点:RPO

http://blog.innerht.ml/rpo-gadgets/

payload:

解释: 多个{},是使其能够正确解析成css语法。最好加上%0a换行。

原理:利用服务器解析地址和浏览器不一样来攻击

浏览器在寻找../../classes.css时,便访问:

0x09 总结

未完待续~~