作者: admin

  • 深入解读MS14-068漏洞:微软精心策划的后门?

    0×0 背景

    初次认识该漏洞是在1024rd上对该漏洞的预警《漏洞预警:系统权限提升漏洞(CVE-2014-6324)影响全版本Windows服务器》

    微软今天(2014-11-18)发布了一个紧急补丁,修复了一个影响全部版本Windows服务器的严重漏洞。今天发布的MS14-068漏洞补丁用于解决Microsoft Windows Kerberos KDC漏洞(CVE-2014-6324),该漏洞允许黑客提升任意普通用户权限成为域管理员(Domain Admin)身份。也就是说,你在一台普通域用户的机器上利用这个漏洞,那么这个域用户就变成域管理员权限,然后,该域用户就可以控制整个域的所有机器了。http://www.1024rd.com/articles/system/52127.html

    那么,问题来了,该漏洞的威力真的有这么大吗?

    网上出现了Github上爆出的该漏洞的Python利用程序,Python Kerberos Exploitation Kit,也就是PyKek,当然,其它站点也都开始了转发。经过测试,Win7的普通域用户运行该漏洞程序确实能够成为域管理员权限。但网上大家的测试都是在域用户的本地账户中才能测试成功。

    为什么Windows关于MS14-068的公告板中并没有提出这一点?按道理来说,越是有限制的漏洞利用对软件开发人员越是有利的,漏洞利用的机会越少,他们受到的谴责就会越少。

    那么,问题又来了,真的只能用域用户的本地账户漏洞才能利用成功吗?

    自从1024rd发布该漏洞预警后,再也没看到另有分析文章出现,甚至也没有POC,这让我为心目中伟大的1024rd捉急哇,心情低落到极点,所以,自己决心从头开始研究该漏洞。

    这样的话,问题又来了,作为不懂Kerberos协议的小白,这个漏洞到底是怎么产生的?

    带着种种疑问,我开始了分析之旅,时隔半月,分析完成后,没想到却发现了一个天大的秘密,我从下面几点向大家分析一下关于这个漏洞的方方面面,来揭示这个笔者认为有人精心策划的漏洞。

    0×1 Python版PoC的测试利用

    首先网上的Python版PyKek,搭建域环境、Python环境,对该漏洞进行了测试:

    (1)测试环境

    目的:将普通域用户权限提升为域控权限(漏洞利用后,net
    use //swg.server.com/c$可以直接访问域控的网络资源)

    深入解读MS14-068漏洞:微软精心策划的后门?

    (2)测试步骤

    A.利用域账户domainuser/Dom12345登录普通域机器Win7,获得该域账户的域SID:

    深入解读MS14-068漏洞:微软精心策划的后门?

    B.以本地账户test/123456登录普通域机器Win7,运行PyKek漏洞利用程序:

    深入解读MS14-068漏洞:微软精心策划的后门?

    此时在C:/Users/test文件件会产生MIT格式的TGT文件TGT_domainuser@SERVER.COM.ccache

    C.利用mimikatz工具将得到的TGT_domainuser@SERVER.COM.ccache写入内存,创建缓存证书:

    深入解读MS14-068漏洞:微软精心策划的后门?

    利用klist命令能够看到mimikatz创建缓存证书前后的区别。

    创建缓存证书之前:

    深入解读MS14-068漏洞:微软精心策划的后门?

    创建缓存之后:

    深入解读MS14-068漏洞:微软精心策划的后门?

    D. 在普通域机器Win7的本地账户中执行:

    深入解读MS14-068漏洞:微软精心策划的后门?

    你会惊奇地发现,不用提供Win2003域控的账号密码就直接可以连接到其C盘,也就是说,现在可以访问Win2003域控机器C盘:

    深入解读MS14-068漏洞:微软精心策划的后门?

    正如宣称的那样,漏洞成功利用后,域用户在不知道域控密码的情况下,可以随意访问域控上的资源,怪不得大家都说,有了这个漏洞,再也不用狂扫密码了。

    这是网上普遍转发的一种漏洞利用姿势,需要注意的是,域SID是以域用户登录Win7域机器获得的,而漏洞利用则是在该域机器的本地账户下才能测试成功。如果搭建了测试环境,你会发现,“先用域账户获得SID,然后不得不再登录本地账户测试漏洞”这一过程是多么繁(dan)琐(teng)。

    当然,后面会讨论为什么在域账户下无法利用成功,并提出一种绕过方法。

    漏洞利用就是这样的,接下来我们分析一下这个漏洞到底是怎样产生的。

    0×2 关于Kerberos协议

    在谈MS14-068漏洞之前,有必要先了解一下Kerberos协议。

    Kerberos协议是一种基于第三方可信主机的计算机网络协议,它允许两个实体之间在非安全网络环境(可能被窃听、被重放攻击)下以一种安全的方式证明自己的身份。

    下面我们从Kerberos是如何设计出来的来学习该协议的原理。

    这个协议解决的根本问题,假设A和B共有一个秘密,在一个非安全网络环境中,A怎样才能向B证明自己就是A。

    最简单的方式就是,A直接将秘密发送给B,由B来判断这个秘密的真伪。但在非安全网络环境中,秘密可能会被窃听或中间人攻击,所以这种方式不可取。

    接下来考虑的是,A用秘密作为密钥加密一段文字生成一段密文,然后将文字本身和密文一起发给B,B接收后用秘密解密密文得到文字,然后和接收的文字对比,如果两者一致,那么也能证明秘密的正确性,从而也能验证A的身份。

    但如果该认证请求被窃听,攻击者能得到加密后密文和加密前的明文,只要时间允许,总能推导出密钥的数值,也就是秘密肯定会被窃取。所以密码界有个规定,长期存在的密钥不适合在网络中传输,否则总会有被窃取的风险。

    不使用长期存在的密钥,那使用短期存在的密钥进行验证应该是没问题的,关键是,谁来提供这个短期存在密钥给A和B?于是就出现了第三方可信机构KeyDistribution Center,KDC。

    在请求认证之前,Client-A先去向KDC申请本次向Server-B认证需要的SessionKey,由KDC将SessionKey分发给Client-A和Server-B,最后Client-A就可以利用这个SessionKey向Server-B进行认证了。为了SessionKey不被窃取,该SessioKey用A和B自身的密码分别加密:

    深入解读MS14-068漏洞:微软精心策划的后门?

    这里会有两个问题:

    (1)A向KDC申请SessionKey,它可能很快就收到SessionKey,但B可能因为网络环境原因,很晚或者根本收不到SessionKey,这样就导致认证无法进行,解决办法就是,KDC将两份加密的SessionKey都发给A,由A在向B发出认证请求时将原本属于Server-B的SessionKey一同发送给Server-B

    (2)A提出SessionKey的申请时,KDC凭什么就生成了SessionKey给了A,也就是说,KDC缺乏对A的认证,所以在分发SessionKey之前,KDC需要增加对A的认证,解决办法就是,将KDC机构分成两部分:

    AS:Authentication Service,用于KDC对A的认证 TGS:Ticket Granting Ticket,用于KDC向A和B分发Session Key

    另外,还有一点需要注意的是,为了对短期有效的SessionKey进行验证,Kerberos协议要求系统内的所有主机基于时间同步,所以Client-A向Server-B进行认证就不用SessionKey加密一段密文后还得发送一段明文过去,直接用SessionKey加密当前时间即可。

    到此为止,整个Kerberos协议大体框架已经出来了:

    深入解读MS14-068漏洞:微软精心策划的后门?

    需要注意的是,这里涉及到两个SessionKey的申请,一个是SessionKeya-kdc,另一个是SessionKeya-b,这是因为基于刚才的三方认证以及尽量使用短期有效密钥的思想,本协议变成了两次三方认证:

    (1)AS作为Client-A与TGS之间的第三方,需要完成对A进行认证,同时为Client-A向TGS提出SessionKeya-b请求提供一个SessionKeya-kdc,根据刚才的分析,为了防止TGS无法收到SessionKey,如图第②步,原本需要发往TGS的SessionKeya-kdc(被KDC密码加密为TGT)会一同发往Client-A,由Client-A在第③步中转交给TGS

    (2)TGS作为Client-A与Server-B之间的第三方,需要为A和B分别提供SessionKeya-b,为了防止Server-B无法收到SessionKey,如图第④步,原本需要发往Server-B的SessionKeya-b(被Server-B密码加密为service Ticket)会一同发往Client-A,由Client-A在第⑤步中转交给Server-B

    上述过程也就是Kerberos协议的基本框架,基于微软对Kerberos的介绍,上面其实对应的是下面微软提供的Kerberos协议流程:

    深入解读MS14-068漏洞:微软精心策划的后门?

    或者你也可以认为,是网上解释MS14-068漏洞时用的这张示意图:

    深入解读MS14-068漏洞:微软精心策划的后门?

    具体来说,Kerberos协议分为以下步骤(第六步可选):

    第①步:KRB_AS_REQ:Client-A发送Authenticator向KDC的AS服务认证自己的身份(通过提供自身密码加密的一个时间戳TimeStamp)

    第②步:KRB_AS_REP:AS通过KDC数据库中存储的Client-A密码的副本,解密收到的Authenticator,如果解密出的TimeStamp符合要求,则AS服务认为Client-A就是所谓的Client-A。认证成功后,AS服务生成一个短期有效的SessionKeya-kdc,将该Key使用A的密码副本加密成密文1,另外将Key连同时间戳标志(控制该SessionKey的有效时间)通过TGS服务的密码也就是KDC的密码加密为密文2(称为TGT),将这两个密文组合成KRB_AS_REP返回给Client-A

    第③步:KRB_TGS_REQ:Client-A在接收到KRB_AS_REP后,首先使用自身密码解密密文1得到SessionKeya-kdc,此时需要注意的是,密文2(TGT)是被KDC的密码加密的,所以Client-A无法解密,这也是Kerberos协议设计的精妙之处,既解决了Server端(TGS相对于Client-A也称之为Server端)无法及时接收SessionKey的问题,又不怕Client-A对该TGT的伪造,因为Client-A不知道Server端的密码

    得到SessionKeya-kdc后,Client-A利用其加密时间戳生成Authenticator用于向TGS申请Client-A与Client-B进行认证所需的SessionKeya-b,连同刚才KRB_AS_REP接收的TGT一同组合成KRB_TGS_REQ发送给TGS

    第④步:KRB_TGS_REP:TGS在接收到KRB_TGS_REP之后,利用KDC密码解密TGT获得本来就该发送给自己的SessionKeya-kdc,然后用其解密KRB_TGS_REQ中的Authenticator得到Client-A发送过来的时间戳,如果时间戳符合要求,则生成一个短期有效的SessionKeya-b,注意此时利用SessionKeya-kdc将SessionKeya-b加密为密文1,然后利用Server-B的密码将SessionKeya-b加密为密文2(称为ServiceTicket),两个密文一同构成KRB_TGS_REP返回给Client-A

    第⑤步:KRB_AP_REQ:Client-A在接收到KRB_TGS_REP之后,首先使用缓存的SessionKeya-kdc将密文1中的SessionKeya-b解密出来,然后利用其加密时间戳生成Authenticator用于向B进行对自身的验证,另外,和刚才TGT一样,密文2也就是ServiceTicket是用Server-B的密码加密的,所以Client-A无法解密,也就无法伪造,这也同样解决了在三方认证中作为Server端的B无法及时接收SessionKey的问题,又不怕Client-A对ServiceTicket的伪造

    第⑥步:KRB_AP_REP:Server-B受到KRB_AP_REQ之后,利用自身密码解密ServiceTicket,得到SessionKeya-b,然后用SessionKeya-b解密Authenticator得到时间戳,验证A的身份

    这就是整个Kerberos协议的基本流程。

    0×3 PAC与Kerberos的关系

    上面是标准Kerberos协议的基本流程,MIT也实现了一套标准的Kerberos协议,而微软在Windows平台上的Kerberos并没有采用MIT的实现,而是对Kerberos协议进行了一些扩充,其中最重要的扩充就是增加了认证过程中的权限认证,也就是在协议中增加了PAC(Privilege
    Attribute Certificate),特权属性证书。

    为什么会增加这些呢?可以这样理解,当用户Client-A与Server-B完成认证,只是向Server-B证明了Client-A就是所谓的Client-A,但此时Client-A如果需要访问Server-B上的网络资源,但Server-B现在其实并不知道Client-A是否有访问自身网络资源的权限(Kerberos协议中并没有规定权限问题)

    难不成此时Server-B必须再向KDC验证Client-A是否有访问网络资源的权限?当然不是,微软实现Kerberos认证协议的同时巧妙地引入了PAC解决了这个问题。(至少MS14-068漏洞之前大家是这样认为的)

    在一个域中,如何才能知道某个域用户所拥有的权限呢?自然是需要提供User的SID和所在组Group的SID。必须了解的一个前提是,KDC、A和B三者中,B只信任KDC所提供的关于A到底是什么权限,所以在一个域初始时,KDC上拥有A和B的权限。现在需要解决的是,KDC必须告诉B关于A的权限,这样B验证A的权限后才能决定让不让A访问自身的网络资源。

    为了最终使得Server-B能知道Client-A所具有的权限,微软在KRB_AS_REP中的TGT中增加了Client-A的PAC(特权属性证书),也就是Client-A的权限,包括Client-A的User的SID、Group的SID:

    深入解读MS14-068漏洞:微软精心策划的后门?

    可以看到被KDC加密的TGT中,不仅包括了被加密的Session
    Keya-kdc,还包括KRB_AS_REQ中申请者(Client-A)的权限属性证书,为了防止该特权证书被篡改(即使被KDC加密,Client-A无法轻易解密,但谁也无法保证绝对的安全),在PAC的尾部增加了两个校验Server Signature和KDC Signature:

    这两个校验一个是Server Signature,另一个是KDC Signature,对于Client-A与AS服务来说,Server代表的是TGS服务,KDC代表的是AS服务(AS作为Client-A与TGS的第三方信任机构),而AS服务与TGS服务具有相同的krgtgt账号,所以这两个校验都是krgtgt账号的密码生成的,当然,整个TGT也是用KDC的密码也就是krgtgt账号密码加密的,它们三者不同的是,用的算法和加密内容有所不同。

    微软是这样打算的,无论如何也要把PAC从KDC传送到Server-B,为了在Kerberos认证过程中实现,微软选择了如下做法:

    将PAC放在TGT中加密后从AS服务经Client-A中转给TGS服务,再放在由TGS服务返回的Service
    Ticket中加密后经Client-A中转给Server-B

    深入解读MS14-068漏洞:微软精心策划的后门?

    需要注意的是,在KRB_TGS_REQ阶段,携带PAC的TGT被TGS服务接收后,认证A的合法性后(解密Authenticator符合要求)会将PAC解密出来,验证尾部两个签名的合法性,如果合法则认为PAC没有被篡改,于是重新在PAC的尾部更换了另外两个签名,一个是Server Signature,这次是以Server-B的密码副本生成的签名(因为对于Client-A和Server-B,这次的第三方机构是TGS服务),另外一个是KDC Signature,这次不再使用KDC的长期有效的Key,而是使用在AS阶段生成的短期有效的SessionKeya-b,(网上说的是第二个签名仍旧是KDC Key,但如果用KDC中krgtgt账号密码生成签名,最后转发给Server-B后,由于没有krbtgt的密码而无法验证第二个签名的正确性,所以这里用SessionKeya-b生成签名才是合理的,或许这里理解错了,敬请指出)最终成为New Signed PAC被拷贝在ServericeTicket中被加密起来。

    最终绕过来绕过去,KDC上所拥有的关于Client-A的权限证书PAC终于发给了Server-B,Server-B在对Client-A进行认证的同时,同时也能判断Client-A有没有访问网络资源的权限。

    到这里PAC与Kerberos协议的关系也就明朗了。

    0×4 从Pykek源码分析MS14-068漏洞

    现在切入正题,开始研究MS14-068漏洞的产生。

    首先看一下微软关于MS14-068公告板:

    This security update resolves a privately reported vulnerability in Microsoft Windows Kerberos KDC that could allow an attacker to elevate unprivileged domain user account privileges to those of the domain administrator account. An attacker could use these elevated privileges to compromise any computer in the domain, including domain controllers. An attacker must have valid domain credentials to exploit this vulnerability. The affected component is available remotely to users who have standard user accounts withdomain credentials;this is not the case for users with local account credentialsonly.

    仔细看看,其实这个公告板就是说了这个洞的危害,可以把没有域控权限的普通域用户提权为域控权限。另外,网上也有两种对该漏洞产生原因的说法:

    从客户端解释:

    当用户进行登录身份验证服务,服务会验证PAC中的签名,并使用PAC中的数据为用户创建一个登录令牌。譬如说,如果PAC能够携带有效的签名表明“Secpulse”是“域管理”安全组的成员,那么创建的登录令牌就将Secpulse当作“域管理”组中成员。这样的Kerberos认证存在问题,攻击者可以伪造身份,从域用户提升到域管理权限。

    从服务端解释:

    微博@jacktang310 程序员在实现KDC服务器的PAC signature时没有严格控制使用checksum的算法,在原来的设计中要用到HMAC系列的checksum算法,也就是必须要有key的参与,但实现的时候允许所有的checksum算法都可以,包括MD5,这样客户端就可以伪造PAC的包了。

    从上面的说法来看,该漏洞利用是通过客户端来伪造高权限的PAC产生的,但根据前面对PAC与Kerberos关系的分析,貌似没有破绽来说明客户端有机会伪造PAC,那到底是怎么回事呢?带着这个疑惑,我开始分析了Github上很火的PyKek攻击包源码。

    首先,在0×1小节POC代码测试步骤C中,使用Pykek攻击包期间利用Wireshark抓包如下:

    深入解读MS14-068漏洞:微软精心策划的后门?

    mimikatz在内存新建缓存证书后,net
    use过程中的抓包如下:

    深入解读MS14-068漏洞:微软精心策划的后门?

    看到抓包结果,我立即产生了两个疑惑:

    (1)传说中Kerberos协议中的KRB_AP_REQ和KRB_AP_REP过程哪里去了? (2)为什么会产生两次TGS_REQ和TGS_REP过程??

    第一个问题的原因很好解决,查阅资料得知,由于Kerberos协议是一种认证网络协议,它通常是其它网络有关协议的前提,比如说SMB、FTP等,在SMB等协议的实现中SMB第一个请求包实际上会包含KRB_AP_REQ,这也就是协议整合吧,我们通过打开第一个SMB请求的数据包就可发现:

    深入解读MS14-068漏洞:微软精心策划的后门?

    而第二个问题,到底为什么会产生两次TGS_REQ和TGS_REP过程,这个疑惑基本是我在全部分析完整个漏洞才搞懂的,但它却影响了我整个分析过程,下面一点点向大家解释。

    既然网上都说,本次漏洞利用是通过客户端伪造高权限PAC产生的,那PyKek工具产生的AS_REQ、AS_REP和TGS_REQ、TGS_R
    EP过程中肯定有端倪,下面我们从PyKek源码仔细分析一下

    深入解读MS14-068漏洞:微软精心策划的后门?

    可以看到,真个漏洞利用过程经历了以下几步:

    深入解读MS14-068漏洞:微软精心策划的后门?

    不知道你是否注意,接收AS_REP后,能解密得到TGT,但接收TGS_REP后,却同样接收的是TGT,这是怎么回事?原理上不是说TGS_REP之后,Client端接收的是ServiceTicket吗?其实这就是该漏洞的根源,下面根据源码逐步分析一下具体过程。

    0×4.1 构造AS_REQ

    首先看一下AS_REQ的构造过程,这里是代码主体:

    深入解读MS14-068漏洞:微软精心策划的后门?

    上面对于AS_REQ的构造,主要用current_time和Key构造了用于提交给AS服务验证的Authenticator,另外,却增加了一个include-PAC标志,通过查看源代码,发现该include-PAC标志被设置为了false:

    深入解读MS14-068漏洞:微软精心策划的后门?

    查阅资料得知,微软在实现PAC的过程中,特意增加了一个include-PAC标志,通常情况下,AS_REQ请求中如果该标志被设置为true,只要AS服务对Client-A通过认证,那么会在返回的AS_REP数据包中的TGT中加入PAC信息;而如果在AS_REQ请求时,include-PAC标志被设置为false,那么AS_REP返回的TGT中就不会包含PAC信息。

    这一点,我们在刚才Wireshark抓包中显示AS_REQ数据包和AS_REP数据包的大小就可以看出来(通常携带PAC信息的AS_REP数据包可以达到上千字节)。

    0×4.2 接收AS_REP

    将AS_REQ发送给KDC后,KDC按照协议规定将会返回两个东西:利用user_key加密的Session
    Keya-kdc和被KDC密码加密的TGT(不包含PAC信息)。下面我们看一下PyKek是如何接收AS_REP并解密的:

    深入解读MS14-068漏洞:微软精心策划的后门?

    具体对session_key的解密也和之前的原理类似:

    深入解读MS14-068漏洞:微软精心策划的后门?

    根据上面的接收过程,并参考Wireshark对AS_REP的截图更形象地理解整个解密过程:

    深入解读MS14-068漏洞:微软精心策划的后门?

    0×4.3 构造PAC及TGS_REQ

    之后,PyKek就开始了最重要的一步:构造PAC并放入TGS_REQ中。下面是整个过程:

    深入解读MS14-068漏洞:微软精心策划的后门?

    分别看一下两个过程。

    0×4.3.1 构造PAC

    深入解读MS14-068漏洞:微软精心策划的后门?

    由于前面我们学习了PAC的整个结构,所以不难看出来该地方构造的PAC由三部分组成:

    1. User SID & Group SID 2. Chksum of Server_key 3. Chksum of Kdc_key

    通过深入跟踪源码,可以看出,User
    SID & Group SID的构造中,其实是将该域用户的SID截断,留取前面的部分:

    深入解读MS14-068漏洞:微软精心策划的后门?

    然后构造高权限的User
    SID & Group SID:

    深入解读MS14-068漏洞:微软精心策划的后门?

    对于后面两个chksum的构造:

    深入解读MS14-068漏洞:微软精心策划的后门?

    由前面的定义可知:

    深入解读MS14-068漏洞:微软精心策划的后门?

    可以很容易看出,这里直接用不需要Key的MD5构造的签名。也就是说什么什么意思呢,只要用户构造了前面的data(User
    SID & Group SID),只需对data进行MD5运算,生成一个32位的MD5值即可。

    服务端对于MD5签名又是如何验证的呢?它只需要将前面的data取出来,进行MD5运算,如果得到的MD5值,与后面的签名一致,则认为该签名合法。

    但是,到这里,可能会有疑问,关于PAC尾部的签名,不是说需要server_key和kdc_key的参与吗?这就是微软犯的第一个错误:

    在KDC机构对PAC进行验证时,对于PAC尾部的签名算法,虽然原理上规定必须是带有Key的签名算法才可以,但微软在实现上,却允许任意签名算法,只要客户端指定任意签名算法,KDC服务器就会使用指定的算法进行签名验证。

    所以PyKek在客户端的攻击代码中很巧妙地利用了这个漏洞,规定使用不需要Key的MD5进行签名,只要签名构造的User
    SID & Group SID权限信息在传输过程中不改变,那么服务端肯定能验证通过。

    那肯定有人还有疑问,PAC不是被放在TGT中吗?但根据include-PAC标志设置为false后,AS_REP解密得到的TGT是不携带PAC信息的,难不成要把构造的PAC放在TGT中?但TGT是被KDC密码加密的,客户端根本无法解密。

    这就是微软犯的第二个错误:

    PAC没有被放在TGT中,而是放在了TGS_REQ数据包的其它地方。但可笑的是,KDC在实现上竟然允许这样的构造,也就是说,KDC能够正确解析出没有放在其它地方的PAC信息。

    下面我们通过TGS_REQ的构造过程来看一下这个错误。

    0×4.3.2 构造TGS_REQ

    调用:

    深入解读MS14-068漏洞:微软精心策划的后门?

    定义:

    深入解读MS14-068漏洞:微软精心策划的后门?

    通过上面的构造过程,结合Wireshark对TGS_REQ的截图:

    深入解读MS14-068漏洞:微软精心策划的后门?

    可以得知,PAC被放在了TGS_REQ数据包中的REQ_BODY中,被subkey加密了,而TGT被放在REQ_BODY前面的PADATA中,这也就是说,TGT中没有携带PAC信息,并且可以注意到,TGS_REQ中也设置了include-PAC标志信息为false。

    另外得知,PAC信息被subkey加密,我们看一下subkey的来源:

    深入解读MS14-068漏洞:微软精心策划的后门?

    subkey竟然是Client端生成的一个随机数!

    PyKek为了使得KDC能够解密获取被加密在REQ_BODY中的PAC信息,也一并把这个生成的subkey随机数放在TGS_REQ数据包中的Authenticator发给了KDC服务器。

    在KDC接收TGS_REQ后,可笑的是,它
    可以把PAC信息给解密出来了,并且由于微软犯的第一个错误:允许任意加密算法的签名,很明显,该PAC信息会被验证为合法的PAC信息。

    也就是说,微软所犯第二个错误触发的两个关键:

    (1)在TGS_REQ的REQ_BODY中放上被加密的PAC信息,并把加密用到的Subkey放到Authenticator中

    (2)TGS_REQ数据包中的include-PAC标志被设置为false

    只要按照上面的要求构造TGS_REQ数据包,KDC就会“错误地”将PAC信息解密并验证签名正确性,但你以为这样就完了吗?接下来,还有更令人吃惊的事情会发生。

    0×4.4 接收TGS_REP

    深入解读MS14-068漏洞:微软精心策划的后门?

    下面是具体解密的实现过程:

    深入解读MS14-068漏洞:微软精心策划的后门?

    根据Kerberos协议原理可知,在返回的TGS_REP中,TGS服务会返回给Clinet-A两个东西:被SessionKeya-kdc加密的SessionKeya-b,另外一个是Service
    Ticket,但从上面解密的过程中,Client-A解密获取SessionKeya-b竟然用的是Subkey,而我们知道,subkey是一个客户端随意生成的随机数,这到底是怎么回事?

    起初,我也很是疑惑,甚至都想放弃,因为实在分析不下去了,自己分析的过程和协议原理竟然有着这么多不同,我也怀疑过PyKek作者是不是写错了,但通过无数次的查找资料,终于在国外一个安全博客上找到了说法,这也是微软犯的第三个令人吃惊的错误:

    只要TGS_REQ按照刚才那两个要求设置,KDC服务器会做出令人吃惊的事情:它不仅会从Authenticator中取出来subkey把PAC信息解密并利用客户端设定的签名算法验证签名,同时将另外的TGT进行解密得到SessionKeya-kdc;

    在验证成功后,把解密的PAC信息的尾部,重新采用自身Server_key和KDC_key生成一个带Key的签名,把SessionKeya-kdc用subkey加密,从而组合成了一个新的TGT返回给Client-A

    没错,是重新生成一个TGT,而不是ServiceTicket。

    如果你对前面对协议的介绍,很容易知道,TGT原本是通过AS_REP过程返回给Client-A的,而现在“毁人三观”的事情发生了,在TGS_REP过程中,KDC竟然返回个Client-A一个TGT。

    到这里就明白了,PyKek攻击包中TGS_REP过程接收的其实是TGT,SessionKey为SessionKeya-kdc。

    最终,这个TGT和SessionKeya-kdc制作成了TGT_domainuser@SERVER.COM.ccache文件。

    而接下来观察mimikatz工具创建的内存证书,也可以验证上述微软所犯的第三个错误:

    深入解读MS14-068漏洞:微软精心策划的后门?

    利用TGS_REP接收的Ticket和Session
    Key创建的内存证书,其Server为krbtgt/SERVER.COM,再根据我们队两次三方认证的理解,很容易就知道这是AS_REQ和AS_REP过程中才会将Server端认定为krbtgt,也就是说,接收的Ticket实质为TGT。

    这样就能理解为啥net use时,会再多一次TGS_REQ和TGS_REP过程了,因为漏洞利用过程中的TGS_REQ和TGS_REP所完成的并不是申请ServiceTicket,而是通过“畸形”TGS_REQ请求申请的另外一个伪造后又增加了PAC信息的TGT,所以在net use之前必须再进行一次TGS_REQ与TGS_REP过程,利用缓存的TGT证书,申请用于net use(其Server为cifs)的ServiceTicket,这里从net use成功后,klist命令增加的内存证书中可以验证这一现象:

    深入解读MS14-068漏洞:微软精心策划的后门?

    对于缓存证书,这里根据微软的说明,可以补充一点背景知识:

    Credentials Cache The credentials cache is managed by the Kerberos SSP, which runs in the LSA's security context. Whenever tickets and keys need to be obtained or renewed, the LSA calls the Kerberos SSP to accomplish the task. From the client's point of view, a TGT is just another ticket. Before the client attempts to connect to any service, the client first checks the user credentials cache for a service ticket to that service. If it does not have one, it checks the cache again for a TGT. If it finds a TGT, the LSA fetches the corresponding logon session key from the cache, uses this key to prepare an authenticator, and sends both the authenticator and the TGT to the KDC, along with a request for a service ticket for the service. In other words, gaining admission to the KDC is no different from gaining admission to any other service in the domain—it requires a session key, an authenticator, and a ticket (in this case, a TGT).

    也就是说,net use之前,系统会从Credentials
    Cache中查看是否有ServiceTicket,如果没有则寻找TGT,找到后就发送给KDC申请ServiceTicket。

    到这里,整个漏洞的原因就清晰了。

    0×5 铁证如山:这是谁的精心策划

    下面我们总结一下通过上面的分析找到的微软所犯的三个错误:

    第一个错误:

    在KDC机构对PAC进行验证时,对于PAC尾部的签名算法,虽然原理上规定必须是带有Key的签名算法才可以,但微软在实现上,却允许任意签名算法,只要客户端指定任意签名算法,KDC服务器就会使用指定的算法进行签名验证。

    第二个错误:

    PAC没有被放在TGT中,而是放在了TGS_REQ数据包的其它地方。但可笑的是,KDC在实现上竟然允许这样的构造,也就是说,KDC能够正确解析出没有放在其它地方的PAC信息。

    第三个错误:

    只要TGS_REQ按照刚才漏洞要求设置,KDC服务器会做出令人吃惊的事情:它不仅会从Authenticator中取出来subkey把PAC信息解密并利用客户端设定的签名算法验证签名,同时将另外的TGT进行解密得到SessionKeya-kdc;

    在验证成功后,把解密的PAC信息的尾部,重新采用自身Server_key和KDC_key生成一个带Key的签名,把SessionKeya-kdc用subkey加密,从而组合成了一个新的TGT返回给Client-A

    在我分析出来这些之后,我感到深深地震惊,这个漏洞的产生真实太不可思议了,明明PAC需要放在TGT中,而微软添加了一个include-PAC标志设置为false两次后,就能导致PAC可以放在其它地方;明明是需要key的签名,微软却允许任意签名算法,包括不带key的;明明是TGS_REP返回的是ServiceTicket,微软却根Kerberos协议开了天大的玩笑,返回了一个TGT。

    我只想说,这(TMD)得需要多么大的疏忽,才能让微软的员工犯下如此“巧妙的”错误,而且这个漏洞的触发真的是(TMD)太需要技巧了。

    到这里,我只能以一个疑问结束我的震惊:这是谁的精心策划?答案留给读者思考吧。

    0×6 干货:如何突破“本地账户才能漏洞利用”的限制

    按照网上的测试,该漏洞一般用域用户的本地账户会利用成功。

    但如果做过这个漏洞测试的童鞋肯定明白,首先必须登录域用户得到其在域中的SID(如果大家知道如何在本地账户下得到域用户的SID,请告知我!@#¥%……&*)

    然后再登录本地账户测试漏洞,这是一件多么蛋疼的事情,于是,基于这个问题,我开始分析为什么在域用户下该漏洞无法利用成功。

    当然,我在域用户下也测试过这个漏洞,当然,起初是不成功的。但利用PyKek是可以生成TGT_domainuser@SERVER.COM.ccache,并且mimikatz也可以将该文件写进缓存证书,也就是说TGT在域用户下可以被写入内存作为缓存证书。那问题出在哪里呢?net
    use命令肯定没问题,最终我把问题定位在了缓存证书上。

    为什么这样说呢?是因为偶然的一次测试中,我发现了一个奇怪的现象:

    在本地账户中没有使用mimikatz向内存注入缓存证书之前,其内存中的缓存证书个数为0,而用mimikatz注入之后,变成1个,net
    use之后,变为2个。

    也就是说,net
    use后会产生一个ServiceTicket被放进内存中。这点没有什么变化。

    而当我在域用户下做类似测试时,却惊奇地发现:

    在域用户中没有使用mimikatz向内存注入缓存证书之前,其内存中的缓存证书个数是4个,如下面:

    深入解读MS14-068漏洞:微软精心策划的后门?

    而当我使用mimikatz注入缓存证书以后,变为:

    深入解读MS14-068漏洞:微软精心策划的后门?

    可以发现,之后TGT改变了,后面的三个缓存证书没有改变(第二个就是net
    use所使用的Service
    Ticket)

    这里我突然又想到了缓存证书的作用:

    net
    use之前,系统会从Credentials
    Cache中查看是否有ServiceTicket,如果没有则寻找TGT,找到后就发送给KDC申请ServiceTicket。

    也就是说,mimikatz工具注入后,改变的是TGT,但net
    use使用的ServiceTicket没有被修改,还是域用户登录时生成的普通域用户权限的ServiceTicket,而根据对本地账户中测试的了解,起初内存中是没有net
    use的ServiceTicket对应的缓存证书的,而是注入后,net
    use重新生成的缓存证书。

    那关键就来了,有没有办法在域用户环境中清除net
    use需要用到的普通域用户权限的ServiceTicket对应的缓存证书,然后注入漏洞利用生成的高权限TGT,最后由net
    use重新生成一个高权限的ServiceTicket对应的缓存证书(本地账户漏洞利用过程就是这样的)?

    于是,我怀着好奇的心理,阅读了列举缓存证书的命令klist,果然发现:

    深入解读MS14-068漏洞:微软精心策划的后门?

    果然发现purge这个单词,经Google翻译,为“清除”之意,心中窃喜,于是在域用户下使用该命令:

    深入解读MS14-068漏洞:微软精心策划的后门?

    果然,缓存证书被清空了,那接下来就好办了,再次利用mimikatz注入高权限TGT的缓存证书,然后执行:

    深入解读MS14-068漏洞:微软精心策划的后门?

    你会发现,在域用户下,该漏洞也是可以利用的!

    [

  • 一个人,你孤独吗

    一个人,你孤独吗

    网上热传一个贴子,是孤独的十个层级:

    一等孤独:一个人逛超市

    二等孤独:一个人上快餐厅

    三等孤独:一个人上咖啡厅

    四等孤独:一个人上电影院

    五等孤独:一个人吃火锅

    六等孤独:一个人去上海

    七等孤独:一个人去游乐场

    八等孤独:一个人去KTV

    九等孤独:一个人搬家

    十等孤独:一个人做手术

    我感觉所有的孤独是分不出层次的,因为都是一个人,一个人喝咖啡未必比一个人做手术好多少,孤独的心,汹涌的海是一样的孤独。

    一个人,你孤独吗

    ”姑娘来看演出,看完演出直接付了次日观看下午场和晚上场的两场座位票,她说为了我推迟了一天回程。又一位姑娘一早来到平江路等我们店开门,没想到我们店要下午才开门,听说晚上演出更精彩她又等到了晚上。晚上演出结束合影,姑娘说:老师,为了看你的演出我在平江路等了你整整一天……唉!我只希望这些姑娘们以后有人陪着她们一起来,孤身只影的女子太多,看得我都心疼。”

    这是苏州平江路伏義昆曲会馆吕成芳老师发的朋友圈。一个女子,一个人听戏,这是几等孤独?虽然吕老师“心疼”,但三毛说“学着主宰自己的生活。即使孑然一身,也不算一个太坏的局面。不自怜、不自卑、不怨叹,一日一日来,一步一步走,那份柳暗花明的喜乐和必然的抵达,在于我们自己的修持。”

    一个人,你孤独吗

    就是跑步,糖也跑出了名堂,竞然跑完了全程马拉松,原本那么文艺的糖竞蜕变成一个跑者,多少让我惊讶。

    我这个人是那种喜爱独处的性情,或说是那种不太以独处为苦的性情。每天有一两个小时跟谁都不交谈,独自跑步也罢,写文章也罢,我都不感到无聊。和与人一起做事相比,我更喜欢一个人默不作声地读书或全神贯注地听音乐。只需一个人做的事情,我可以想出许多来。村上春树在《当我跑步时我谈些什么》说的就是她吧。

    你必须很喜欢和自己作伴 。好处是:你不必为了顺从别人或讨好别人而扭曲自己 。一个人的世界,不必顺从,不必讨好,做喜欢的事,哪怕是发呆也那么惬意。 ​这也是糖较之工作享受当前这种状态的主要原因吧。

    一个人,你孤独吗

    来到海南鹭湖已经又有几天了,老同学问我是不是有点孤独了,因为此时正是淡季,候鸟老人都回老家了,若大的园区真是十分静谧。我笑笑说,那里会。是呀,自从公司和自己身体出了状说,我过这种自由散漫的日子已经有一段时间了。和以前那种热热闹闹的日子相比,还真没有感觉这种孤独有那里不好。

    正如余华说的那样:我不再装模作样地拥有很多朋友,而是回到了孤单之中,以真正的我开始了独自的生活。有时我也会因为寂寞而难以忍受空虚的折磨,但我宁愿以这样的方式来维护自己的自尊,也不愿以耻辱为代价去换取那种表面的朋友。

    在光芒万丈之前,我们都要欣然接受眼下的难堪和不易,接受一个人的孤独和偶尔的无助。 ​​​​有时候孤独是好事,一个人就自己多长本事,多看世界,多走些路,把时间花在正事上,变成自已打心底喜欢的那种人。

    一个人,你孤独吗

    来到鹭湖,认识了冰姐。当所有人都选择了回老家过夏天,但冰姐留了下来。不但留了下来,还成立了个人艺术工作室。那天和她聊天,她说一天过的好快,画副画,一个上午就过去了,沏杯茶,一个时辰就过去了,看会书,太阳就落山了。

    “有一天我们也长成了成年人,这才知道,孤独是人生中一种自觉的独处,而不是惩罚,不是受伤者的退隐,也不是怪癖,而是作为一个人生活的唯一、真正的存在状态。知道这些后,就不会那么困难地忍受它了,你会感觉自己呼吸着清新的空气,活在一个辽阔的空间里。”

    冰姐向我介绍她的好茶和美器,一个人将日子过得如此滋润和自由,更让人心生羡慕。只有当一个人独处的时候,他才可以完全成为自己。谁要是不热爱独处,那他也就是不热爱自由,因为只有当一个人独处的时候,他才是自由的。 叔本华如此论述独处。

    如果世间真有这么一种状态:心灵十分充实和宁静,既不怀恋过去也不奢望将来,放任光阴的流逝而仅仅掌握现在,无匮乏之感也无享受之感,不快乐也不忧愁,既无所求也无所惧,而只感受到自己的存在,处于这种状态的人就可以说自己得到了幸福。别人眼中的孤独,可能就是自已心中的幸福。所以吕老师也不必为那两个形单影支的姑娘“心疼”了,幸福如水,冷暖自知。

    一个人,你孤独吗

    每个人的生命都在孤单中成就,来的时候一个人,离开的时候也是一人, 没有人会陪着你一起来到这个世界,也没有人会一直陪着你走到生命的尽头。路途中的风景再多,能与你共的人也只有那么几个,只有自己一路跟随,而其他人 ,总会随着时空的转变而改变轮换。如同过客般匆匆出现,又急急走远 。当生活没有了更多的感动和惊喜,孤单就是你最大自由。

    一个人,你孤独吗?

    一个人,你孤独吗

  • 曹斐私语《千字文》044:得能莫忘

    曹斐私语《千字文》044:得能莫忘

    这一句的意义比较明确,但仅仅是比较明确。因为有两个点是会让人产生一丝疑惑的,它们分别是能与忘。

    咱们先说能。

    能是熊的原字,也就是说,能最初的意思就是熊。而熊反而是后期的衍生字。

    能在现代汉语语境中,是可以的意思。这样强烈的转变是如何产生的?

    熊,在动物届时比较特殊的一种存在。力气大、速度快,平原可行、山丘可过、会爬树、善泅水,除了不会飞,它几乎就没有不会的了。

    这样的一位动物界的全才,就好像是漆黑中的萤火虫一样,那样的鲜明,那样的出众,无法不引起古人的关注。

    当人类世界中,也出现了一位近乎于天才一般的人士的时候,古人就会自然的联想到了熊。于是就是指着这位人类中的全才说,哇!你就好像熊一般。

    天长日久,人们就习惯了这样称呼什么都会的人,而熊被逼无奈只能改一个名字了。(熊的原名叫做能,因为这个字被人类抢走了,只得改名为熊。)

    能在字义,在后期又发生改变,但这一次的改变就不是颠覆性的了,而是衍生性的改变。

    这一次的改变,是在夸奖别人的基础上,增加了对自己的认同。在原本只有“贤能”的基础上,增加了“我可以”的意思。

    关于能咱搁一下,先说说忘。

    忘的上半部是亡,这是一个常用字,组词死亡。下半部分是心,也是常用字,心脏。

    心,是一个含义极其丰富的字。

    首先,心,是身体当中的一个器官。

    同时,心还是一个人的精神象征,更倾向于一种感受、感觉,是没有实质的。

    比如心旷神怡、心无旁骛、心猿意马……中文组词中用到心的情况,最常见的就是将它做为一个精神象征。

    回过头来说说忘,这里的心也是一个精神上的心,一种感觉、一种感受的消失被称为忘。

    忘解释过了,回过头再来看看这一句的整体意思。

    得是得到的意思。

    得到了什么?能。

    基于前面的解释,能就可以衍生出两个解读。一,可以给我提供帮助的人。二,我拥有了更为完备的力量。

    莫的意思是不要。

    不要忘。

    不要忘记什么?这就是这一句的核心关键点。

    无论是得到了可以给我提供帮助的人,或者是我个人得到了更为完备的力量,都是说明我的综合实力得到了提升,有了好的转变。在这样的前提条件之下,我不要忘记什么?

    总体来说,应当是不忘初心。至于初心在哪?仁者见仁智者见智吧。

    曹斐私语《千字文》044:得能莫忘

  • 北京的秋天似天堂

    秋天一定要住北平。天堂是什么样子,我不知道,但是从我的生活经验去判断,北平之秋便是天堂。—老舍

    北京的秋天似天堂

    文/临界冰

    仿佛一转眼的功夫,在北京已经住了15年了,老家的一草一木在记忆中逐渐模糊,幻化成红墙灰瓦的小巷,古色古香的四合院,阳光下斑驳树影的柏油路和数不清的高楼大厦立交桥…

    记忆中的故乡不知什么时候变成了北京的模样,想想也对,迄今为止,生命中差不多一半的时间都是在这里度过的,说它是故乡也不为过。

    北京一年中最美的时节是秋天,最美也最短暂,8月末9月初,北京正式进入到秋天,11月份差不多就到了尾声,秋天在北京只有两个月的时间。我们常说的“金九银十”原来说的是北京的秋天。

    北京的秋天似天堂

    北京的秋天,气候宜人,不冷不热,没有冬季一连几天遮着太阳乌蒙蒙的雾霾,没有春季来自内蒙草原漫天的大风扬沙,没有夏季烈日当空地面都返着热气的酷暑,丝丝缕缕的白云如轻烟袅袅,不经意间拂向蓝得透亮的天空,撩得你的心痒痒的,莫名的畅快。

    北京的秋天是梵高笔下重彩的油画,色彩浓烈又不夸张,随手一拍就是一张明信片。

    北京的秋天似天堂

    地坛公园的银杏大道

    细看地坛公园那金灿灿的银杏大道,状如精致小扇的银杏叶,错落有致的叠排着,从上到下毫不吝惜的霸占视线所及的空间。每到秋日都吸引了周边很多市民前去拍照赏秋。

    娇艳似火的枫叶在这个季节热闹起来,豆沙红,艳阳红,玫瑰红,朱砂红,点缀着深黄浅黄深绿浅绿一起热腾腾的铺天盖地晕染漫山遍野。这个季节登上香山似乎是全民向往的事情,但本地人绝不会选择这个时段去登香山,因为熙熙攘攘的人群会让你看不到脚下的路。

    北京的秋天似天堂

    香山红叶

    还有天坛的月季,北海的菊花,延庆百里画廊的千亩向日葵…..都在这个季节千娇百媚争奇斗艳。

    北京的秋天似天堂

    这个季节不论走在哪里,总是说不出的心旷神怡。总是忘不了人民医院门前那条老街。刚到北京的时候曾在那附近住了差不多一年。后来儿子也在人民医院出生。

    二环内的风景透着老北京独有纯正的味道。秋天里,胡同里的大爷们搬出小板凳,端着小茶壶围坐在树荫下,中间支着的小桌上摆着破旧不堪的象棋盘,角逐的双方被周围聒噪的京片子指点江山。

    北京的秋天似天堂

    北京的胡同

    国庆前后,大妈们带着红色胳膊箍儿的身影,风风火火的游走在社区邻里之间,遇到不符合首都文明的行为,自会揪住教育半天。临了不忘加上一句,

    “嘛呢?甭给姆们北京人丢脸啊!”

    处女座儿子出生在秋天的北京,所以每到这个季节,我总禁不住回忆起,在人民医院待产的日子,爱人陪着我在那条老街上转悠,暖暖的阳光照在身上,慵懒惬意。

    街边的水果摊各色时令水果令人垂涎欲滴,粉红色的平谷大桃,紫色的玫瑰香,鲜绿的无籽露和深绿薄皮的地雷西瓜,价钱便宜实惠,让那时候即将为人父母的我们,期待着甜蜜着幸福着…

    当那个粉红色襁褓中的小人儿,带着光洁的小脸儿,聚精会神的看着我时,心都化了。在北京最美的日子里,年轻的我初尝为人母的喜悦。

    每每想到那段时光,心里总会涌起柔柔软软的情愫,仿佛一生的时光都定格在秋日的艳阳里。

    北京的秋天似天堂

    长安街

    北京的秋天如同风情万种的小美妇,丰腴但不肥腻,明艳但不轻佻,灵动但不乖张。在秋天,北京显出她所有的大气、澄澈、质朴、壮美和动人的人间烟火。

    写了一辈子北京的老舍,“不远千里,要从杭州赶上青岛,更要从青岛赶上北平,只为饱尝故都的秋味。”

    再过一个月,北京美艳的秋天将变成全国最嫉妒的地方,

    难怪老舍说,北平之秋就是人间的天堂,也许比天堂更繁荣一点呢


    无戒21天写作训练营 第8天

  • 大三时我与学弟谈了7天恋爱

    人在青春年少时,阴差阳错,总会遇到几个生命中的过客,在美好的发亮的青春里组成回忆的画卷,亲爱的,原谅我不懂爱情……

    大三时我与学弟谈了7天恋爱

    真不知道,我这榆木脑袋瓜,是怎么想的,以前我喜欢的男孩都是那种很阳光明媚的。见过一个男孩,纯净美好的像一个瓷娃娃,那是个美好的午后,他就那样站在距离我一米远的地方,挨着我那个200斤重的胖娃娃学长,他们站在那里聊天,他偶尔挠挠头发,笑起来,让我觉得整个南郊上的长安城里空气里弥漫着阳光的味道。

    我告诉闺蜜楠楠,我遇到一个多么纯净美好的男生。楠楠把他称为瓷娃娃,只是我怎么也想不到有一天我会遇到我生命中的瓷娃娃-一样美好纯净的面庞,瘦高的个子,黑黑的头发,那是个晚自习,我和一个同学,去我们自习室,忘记了那天是大一在上自习。只有几个男生,他们说没事,老师不来,进来坐吧。刚巧找不到其他教室,我们就悄悄坐在中间靠后的地方。课余时间,他就那么走了过来,问我大学英语题目,谁让我是英语专业呢?我很认真的讲给他,后来下了自习,他没带伞,姐姐我又好心,借给他,羽佳说她感觉到那个男生有点喜欢我。没缘由的脸庞不由发红。心也扑通扑通跳个不停。许仙和白娘子好像也是因为一把伞,暗生情愫。

    后来我们就熟悉了,他隔三差五的出现在我的学习生活里,只要我有需要,有时候他穿着拖鞋几秒中就出现在我面前,你们说那是不是喜欢?

    他叫我学姐,我也很淡定的拿他当作学弟,不越城池。那次我生日,铁哥们过来,叫了他一起作陪。

    我和好友还有学长学姐们一起去丰裕口爬山,他也想一起去,因为他跑的太快,到半生腰不见人影,还吓我一跳,以为他跑丢了,他却生龙活虎出现在我面前。就是那次我遇到了一位清新脱俗带着斗笠,着一袭灰色衣衫的小和尚,看起来和我们年龄相仿,他和我擦肩而过,面目清秀,皮肤白净,感觉就是从小在深山里长大,没有沾惹尘埃。原来这世间真有潜心向佛的人!

    回来学校,大家听说我遇到了很多人期待遇到的那个小和尚,原来人与人的遇见,真的是靠缘份,后来听说一些人也去了那里都无缘相见。

    一晃大三,假期回家的前夜,他和我聊天,他说:或许你喜欢的人,就在你身边。我说是你吗?不想戏剧性的玩笑,我们就这样在一起了,你每天都会准时打电话给我。我们俨然一对小情侣,假期你和你爸去山东送无花果,那一夜,我睡的很晚,害怕你在车上犯困,不安全,我们一直发信息,感觉两颗心跨越千里靠的那么近。开学前你穿过人潮涌动的街头,来车站接我。还是冬天,有些清冷,我穿着黄色的外套,裙子,披着一头黑色的波浪卷发。你扮演着男友的角色,拿着我的行李箱,我们想对而坐,隔着人群,你在靠近窗户的位置,疲惫的脸上洋溢着幸福。你把我介绍给宿舍的铁哥们儿,我们晚上一起出去吃饭。

    然后,上课自习时间外,我们就腻在一起,或是洒满阳光的午后,我穿着红色的呢子大衣,你紧紧的拥着我,你178,我165,是不是最佳情侣身高呢?我闻到你头发上洗发水的淡淡味道。或是郊外星辰满天的夜晚,你牵着我的手,也有时候你的手会不太安份,你大胆的摸了我少女般的胸脯,我慌张的脸都红到脖子根儿了,这样合适吗?初恋时因为害怕被接触,而分开。却为你作了妥协。然后,我感觉到你身体某个部位的变化,你说要不然我们翻墙出去住一晚吧,我落荒而逃,带了你的手机。

    你哥哥打来电话,第二天,你说你哥不让在大学里恋爱,你说他哥供你上学,看着你为难的样子,我果断帮你作了选择,骄傲如我,怎会把选择权交给你?你不肯松开我的手,你说我们一起还不到一个月。

    记得我还买了多肉植物,你守护在我身旁,和我的舍友们打招呼。那天晚上,我曾经等了三年的初恋不偏不倚这个时候打来电话,我的心片刻下起了暴雨,他总是能够轻易晃动我的生活,他喜欢我的时候我还不懂爱情,离开后才懂得可惜刚好错过。

    看到白百合演的那个电影,不由想起你,你们长得太相像,电影里他们在樱花树下散步微笑,电影外想起逝去的青春还有,你们,我笑着哭了……

    谢谢你们,我曾经痴傻等待过的,带给我温暖与心碎的男孩们,教会我成长。如果没有你们,我的青春年华大抵都是伴随着书卷,愿我们都幸福快乐!

  • 那个荷兰男人的眼里有火

    那个荷兰男人的眼里有火

    文/名贵的考拉熊

    我喜欢的画家叫文森特·梵高,喜欢,疯了一般。他红头发,高个儿,看起来很凶,却沉默得像颗土豆。他一定深爱这个世界,你看他画长夜星空,那种灿烂。

    《梵高传》读过四遍,我从不敢说自己了解他。这个少了右耳的荷兰人一生都被荒诞拉扯着。直至终场,他走进曾经激发自己灵感的麦田,望着太阳朝自己开了一枪——我说过,荒诞。他竟没有如愿死去,神是在嘲弄他或是挽留他,不得而知。

    亲爱的文森特又在世间徘徊两日,留下遗言:苦难永无止境!

    是的,世界并没有回应他的爱意。生于商人世家的梵高憎恶商业对于艺术家的摧残,拒绝接手家族产业,决心信仰上帝并一生追随,却在识遍人间疾苦之后愤然与《圣经》决裂。

    当他拿起画笔,已经27岁了。此时看来文森特一事无成,未来想必亦是有限。没有人理解他。即使是一生为哥哥提供经济援助的提奥,也不过基于对兄长赤诚的崇拜之情——那是距离理解最为遥远的感情。

    梵高给提奥写信,他说:每个人心里都有一团火,路过的人只看到烟。这是我在这个世界上最喜欢的一句话。

    他自幼孤僻,厌世,原生家庭理所应当的紧密联系使他不适,用强硬的态度遮掩自己心里的怯弱。梵高一直很害怕去上学,孩子们称他为“红发佬”,其实文森特拥有一头漂亮的红发。

    当他遇到爱情,也如同世间所有少年,不惜用哗众取宠的方式谋得心上人一瞥。他爱过房东的女儿,表姐凯,怀孕的妓女,梵高分别做过:拒不承认对方已有未婚夫的事实、穷追猛打并将手放在蜡烛上加以威胁、不惜与家族决裂却无力承担两人的开支。

    这份对爱情的执着丝毫不值得称颂。片面的爱情令梵高陷入漫长的疼痛,炽烈的表白令女子退却与恐惧。真正的执着该是把心思敞敞亮亮地摆在对方眼前,不遮掩,不夸张,等待对方最终的回应——当然这是很现代的表述方式了。

    欧文·斯通在书中倾注了对梵高的怜悯,为从未收获爱情的他虚构了一个名为玛雅的女人,美丽,神秘,带给梵高蜜糖般的爱抚,望着他的伤口流下纯粹的眼泪。

    当年我第一次读到这个情节,脑海里闪现的竟是《天龙八部》里,天龙寺外月华明,菩提树下观音灵,刀白凤对着段延庆轻解衣衫。

    奇怪的联想。然而段延庆真的因此复活,成为天下第一恶人。梵高却只能转过身去:噢,色彩。我们不离不弃。

    事实上,人们从未中断过对梵高的人文关怀。BBC王牌英剧《Doctor Who》里,第五任博士不惜打破规则,引领梵高穿越时空来到现代,让他倾听美术馆馆长对梵高的评价。

    馆长说:梵高是这个世界上最好的画家。也是世界上存在过的,最伟大的人。

    梵高讶异地听着,哭得像个孩子。他生前只卖出过一幅画,贫穷潦倒,孤独得无以复加,表达痛苦是最简单不过的事,梵高却以自己经受的苦难去刻画这个世界的美丽,欣喜与跳跃。

    那个片段百发百中地击中我。正如梵高在《盛开的桃花》上的题词:如果活着的人还活着,那么死去的人就不会死去。你看,文森特,大家都记得你,曾落满你双眼的星光正照耀着更多的人。

    有句话说:正义从不缺席,只是偶尔迟到。我极不喜欢这句话。映射到梵高的生平,我只想说:早干嘛去了,啊!?

    在他死后,那些布满灰尘的画作忽然发了光得了道升了仙,人们纷纷纪念他,痛悔失去了一个如此卓越的天才,《加歇医生像》成为史上最昂贵的画作之一。我劝慰自己,It’s meant to be。文森特·梵高跑得太快,时代跟在他身后气喘吁吁。

    那个荷兰男人的眼里有火

    《向日葵》

    我艺术细胞贫瘠,不懂绘画,看不出《星月夜》《麦田里的乌鸦》《向日葵》是怎样的鬼斧神工,却被一种汹涌的激情紧紧攥住。他的用色是那样激烈甚至惨烈,仿佛画纸很大,天地倒小。

    那是一种孩子气般的表达,是最充沛,直白,纯粹的,被我们遗忘的方式。而在为数众多的自画像(因为穷得请不起模特)里,梵高始终流露出的是,超越了所有时代的,孤独者心碎的神情。

    其实我们哪有资格怜悯他。我们这些人,经过深思熟虑后刻意节制的情感,在他看来不过是太温吞的色彩,四平八稳,不痛不痒。

    二十一年来,我从未有过如他强烈的情感。浑身战栗的热爱,至死不渝的相思,天雷地火的憎恨,没有,都没有。看我多聪明,平平淡淡才是真。

    于是我永远体会不到荡气回肠。我的心里没有火。

    在生命的尽头,梵高画出了真正令自己满意的作品,他说:如果生活中不再具有某种无限的,深刻的,真实的东西,我将不再眷恋人间。

    英勇无畏的文森特忍得住饥寒,熬得过相思,从不在意自己的潦倒,紧握画笔面对世界的冷漠,却毫不迟疑地败给自己的精神分裂。也好,也好。打败他的,始终是文森特·梵高,那个被人嫌弃傻到留下耳朵给情人做装饰的怪客。

    梵高可能不是最苦逼的人,论生活困难还有霍金垫着呢。但他是一个受尽白眼却始终坚持下去的人,他从不知道自己将变得伟大,心中燃起的火焰几乎与梦想无关,而是成为了生命的常态。灵魂所受的鞭笞与对艺术的追问同时发生,直至长眠于星空下依旧坚贞。

    20岁生日的那天,我在宿舍里疯狂地打着火炬之光,盯着屏幕上的“GAME OVER”不厌其烦地读档重来,一个好朋友给我打电话,于是我屁颠儿屁颠儿地下楼领礼物去了。

    冬天的校园很冷,她站在道旁的台阶上缩着脖子,我说:哎!

    她抬起头,从怀里拿出一本书,有点儿腼腆地递给我。那是一本介绍西方名画家的画册,言语活泼,花样繁多,当然——

    “这里面有梵高。”她缓缓地说。

    像画里的向日葵一样,我也开始微笑。

  • 【漏洞预警】Apache Struts2再曝远程代码执行漏洞(S2-046 附PoC)

    【漏洞预警】Apache Struts2再曝远程代码执行漏洞(S2-046 附PoC)

    Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web应用的开源MVC框架。

    本月初,Strust2漏洞爆出一个RCE远程代码执行漏洞(S2-045)可致远程代码执行。而时隔两周,又出现一个相似的远程代码执行漏洞。

    漏洞编号

    CVE-2017-5638

    漏洞简介

    使用恶意的Content-Disposition值或者使用不合适的Content-Length头就可能导致远程命令执行。该漏洞与S2-045 (CVE-2017-5638)相似,但使用了不同的攻击向量。

    触发漏洞需要满足的条件:

    JakartaStreamMultipartRequest已开启。也就是说,Struts2需要通过Jakarta stream parser配置(非默认)。在Struts2配置文件中检查<constant name=”struts.multipart.parser” value=”jakarta-stream” />

    上传的文件大小根据Content-Length头的声明要大于Struts2默认允许的2GB大小

    文件名中包含OGNL payload

    PoC

    POST /doUpload.action HTTP/1.1 Host: localhost:8080 Content-Length: 10000000 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAnmUgTEhFhOZpr9z Connection: close ------WebKitFormBoundaryAnmUgTEhFhOZpr9z Content-Disposition: form-data; name="upload"; filename="%{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('X-Test','Kaboom')}" Content-Type: text/plain Kaboom  ------WebKitFormBoundaryAnmUgTEhFhOZpr9z--

    解决方案

    如果你正在使用基于Jakarta的文件上传Multipart解析器,请将Apache Struts升级到2.3.32或2.5.10.1。

    和先前的漏洞一样,也有相应的变通方案,即采用其他Mutipart解析器实施方案。Apache也提供2个插件作为解决方案(点击这里)——如果使用的是Apache Struts 2.3.8 – 2.5.5或者2.3.20 – 2.5.5版本,即可采用该解决方案。

    另外也可以从堆中移除File Upload Interceptor,定义自有堆并设为默认(具体怎么做可以点击这里),该解决方案针对Struts 2.5.8 – 2.5.10有效。

    *参考来源:Apache & HPE

  • 一只叫“东源”的小狗

    一只叫“东源”的小狗

            照片中这个小不点是生活在我们当地一个名叫东源长岛小区附近的流浪狗,虽然它居无定所的流浪着,但是我不得不说它是个十分幸运的家伙!

            怎么说呢?首先是因为它并不孤单,和它一起浪迹天涯的还有另外两只小狗,一公一母,所以,当我们市的流浪狗救助站的工作人员找到它们时就给它取了“东源”这个名字,而另一只公狗则叫“长岛”,唯一的女士大家都叫它为“花花”;据通知救助基地的爱狗人士讲,它们三个狗关系很好形影不离,而且“花花”是东源的老婆。你看,这左手拥有爱情右手拥有兄弟情的东源难道还不算幸运吗?

            其次,是它们仨个小家伙流浪的地点非常的幸运,因为这个小区里有好多户人家都是养了狗狗的,所以它们都会有很多好心人轮流给他们食物,根本不用像其他流浪狗一样整天为食物而发愁,平日里它们和小区的狗狗在一起玩的时候,这些爱狗人士也就等于它们的半个主人,至少不会允许别人伤害它们仨个小家伙,所以啊,“东源”真的是一条非常幸运的流浪狗,生活得自由又不乏滋润!

            但是,就是这样一个大家都不怎么起眼的小家伙却以行动为我们演绎了一段传奇又感人的故事,故事里,我们看到了“东源”的情深意重,坚韧不拔和忠贞不渝。

            一切还要从那个冬天说起。

            秋天一过,所有人都穿上了厚重的衣服,天气一天天冷了起来,小区里那些善良的爱狗人士为了不让“东源”它们仨个小家伙冷着,就决定找个角落给它们搭个温暖的窝,在这个过程中,爱狗人士十分惊讶的发现“东源”的老婆居然有了,而且都快生了,想着外面的天气对狗狗的生产和对新生命的种种不利因素,爱狗人士决定求助本市流浪狗救助基地帮忙,接到求助后,救助站工作人员很快赶了过去!

            由于考虑到它们从来没有离开过东源长岛小区,为了不影响花花的情绪,能够让它安全的经历这次分娩,大家商量决定让花花暂时住在小区的一户人家里!等花花完成了生育再和东源长岛一起接到基地生活!

              花花不在的几天里,东源变了,变得不吃东西,变得慌里慌张,它四处找花花,那种担心又急切的眼神看着令人心疼,救助站的工作人员看到东源的状态很是担忧,于是决定先将东源和长岛接回基地。

              别看东源个头小,绝对是个狗精,抓住他费了志愿者们好大的力气,然后东源也无奈的跟着基地工作人员坐了将近40分钟的车来到基地。车上,东源都很乖巧的呆着,所有的人松了一口气,以为事情就这样圆满了。谁不曾料到,东源正在谋划一场天大的计划!

              如大家所愿,几天后花花顺利产下四个狗宝宝,东源终于当爸爸了。本是值得欢喜的时候,救助站却传来了令人失望的消息,东源不见了。

              工作人员说前两天就发现东源有点反常,不吃不喝,老是在围栏处徘徊,低声呜呜。比两个人还高的围栏东源就算想翻也是不可能的事。况且大家都知道东源心里惦记着花花,所以对它的行为异常也就没多在意!谁知,当天却发现东源真的不见了!事到如今,也没有谁知道东源是怎么样翻出去的,但是不难想象,以它的身形翻阅这样一个围栏不知道跌倒摔伤了多少回。但是东源一心牵挂妻儿的信念支撑着它。它也终于成功了!

              可是,出走的东源去哪里了呢?当时来基地一路都是坐车。它没有打下任何标记,这边它一点都不熟悉。一定会迷路的!再加上天寒地冻,大家都很担心。

              接下来的两天时间志愿者们自发到处寻找东源的下落,两天的时间过去了,大家都以为再也找不到东源的时候,一个志愿者在离花花住的不远处发现了东源,天啊,那时的东源还在一路小跑着,脚步虽然有些蹒跚,但一直坚持的寻找着它的妻儿。当志愿者靠近东源,抱起它时,浑身湿漉漉的。一身不停的发抖,所有人都不敢相信东源是如何熬过这两天又是如何找到路的!

            与此同时,花花那边也传来不好的消息,花花快不行了,于是志愿者以最快的速度将东源带到花花身边。花花看到东源后终于闭上了眼睛,说起大家可能不信。但是这确确实实是真实的故事!

              如果狗也可以转世投胎,希望它们下辈子做人。做真正的夫妻,并且不忘这一段传奇的经历!

              现在,东源和它的好兄弟长岛以及它的一个儿子在基地生活着!

           

             

         

           

  • 世间事星探计划 |似舞:流年里惊起一行白鹭

    星探:梨笑
    我本想做个闲散写文人,不意却认了真。 那就拥着我的小情怀,细写人间冷暖事!
    星探宣言:我只想用最真实的文字,记录真实的人与事。不浮夸,不虚幻。譬如今天的主角:似舞

    作品里藏着经历,文字里裹着思想。了解一个人,可以先从文章开始。

    似舞作品传送:

    《时光往复,而你不在》

    《遇见你不早不晚,刚刚好》

    《爱上生活,从五月的早餐开始》

    《后来的时间,都与你有关》

    世间事星探计划 |似舞:流年里惊起一行白鹭

    可爱小女生

    缘分这词已用得很滥,想换个词,却又没有找到一个词,比它更能准确地形容一段从天而降的关系。

    佛说前世五百次的回眸,才换来今世的擦肩而过。两个人的相遇如若不是相约,便是缘分。

    似舞是我在世间事群里遇到的姑娘。许是我们前世回眸了百次,方有了这共群相识的缘分。

    她每天尽职尽责组织夜评活动,维持群内秩序,认真传达专题新消息。

    认真的姑娘最可爱!我去她主页翻到照片,果然,小丫头瞪着大眼睛,歪着小脸对着镜头卖萌。还把脸p上了小猫咪的胡子,童心未泯。

    似舞这个名字,让人生出无限遐想:似舞,恰似精灵起舞,优美灵动,翩若惊鸿,矫若游龙。

    她说是取意:岁月如歌,跋涉似舞。文字充满对生活的热爱与期待。跋涉二字,深深隐藏着病痛曾经带来过的忧伤。度过每日闭口不言,焦躁不安的日子。她如飞燕一般划破长空,惊艳了整个青春。

    我长期在厦门,偶尔去广东或回来,都要经过潮汕地区。从前对这里并没有特别的感觉,印象里不过是经停的某个服务站。

    但知道似舞是潮汕人之后,再经过便会多看一眼,深深呼吸这里的空气。想像似舞就在这片蓝天下生活,自由自在快乐地飞翔。

    很小就会做饭的似舞,做的便当,像杂志上美食栏目的展品。荤素搭配,颜色互补,光影利用,都恰到好处地把食品最本真的味道,通过图片呈现出来,让人垂涎欲滴,食指大动。这么年轻的姑娘,热爱厨房的不多。

    她的烘焙更惊艳。在别人流连逛街娱乐时,她在钻研甜点配比。爱迪生做试验似的,一克克计较配料多寡在甜品中产生的不同反应。

    恰好我也爱烘焙,不过只是初涉,能入口而已,在外观上没什么追求。远没她做的这么精细,更对她佩服得不得了。

    她的成品堪比专业出品,看造型已知用心程度,处处体现精致与对生活的热情。日常尚且如此,其性情可见一斑,定是个温婉俏佳人。

    世间事星探计划 |似舞:流年里惊起一行白鹭

    似舞出品

    聊天中得知,我比她早三天入驻简书。她早已粉丝过万,实力过人。

    去她主页看了好多文章,文字清丽闲适,亲切异常。尤如邻家小妹,捧着一杯清茶,娓娓道来。甘甜回味,馨香久绕。

    这次世间事搞星探活动,我在群里呼:谁与我组队啊?单着的都在喊,就是没人互相组一个。场面尤如相亲,甚是好笑。莫不是写文章的人都一根筋?

    似舞姑娘私问我,你组了吗?答没,那我俩组呗。

    班子迅速搭起来,她说想找个认识的人搭。是个简单直白的人!

    她说在同一个公司同一份工作做了两年。这么浮躁的社会,这么小的年纪居然抵得住繁华诱惑,不容易了。

    都说老实人吃亏,我倒觉得踏踏实实的人,才会有春天。

    因为心有丘壑,善良美好。便觉得全世界都是可爱的人,一切都充满阳光。文字里透着现世安好的气息。

    我笑问似舞桃花运:红鸾星动否?答:多年不恋了!

    21岁的姑娘说多年不恋,这是早恋过啊!像她这么多情又温柔的女子,该是男生的最佳初恋吧!

    我们断断续续地聊,不拘一格。从不知如何着手到东拉西扯,谈话开始接地气。常常可见我大段大段的文字,而她简短精炼。遇上我这话唠,生生将其逼成个倾听属性的姑娘。善解人意大抵就是指她吧!

    似舞说我们从哪聊呢?写点什么好呢?我说我也不知道。平生乏善可陈,没有什么特别值得书写的事,她说她也是。两人便笑了,仿佛找到共鸣。

    她说有四个问题想问我,我也发了四个问题过去,以期公式化的去了解对方,结果聊着聊着给忘了。

    我俩努力地把自己的习性爱好等等,向对方展示。她爱唱歌写文做饭,我爱写文画画。生硬的介绍,其实什么头绪也没有。最后放弃,有事没事聊聊天。无目的的交流,一下轻松起来。

    无肉不欢的似舞,练过点钞的似舞,爱旅游的似舞,爱笑的似舞,温暖的似舞……都在言谈间逐渐浮现,字字句句带着温度。

    我们都不爱过多在文章里提及生活;都爱烘焙;都觉得要多培养些兴趣,来度过生命里不得不独处的时光;我们都说名字是随手起的,结果又自觉饱含深意;甚至,我们的头像都用的是背影……

    世间事星探计划 |似舞:流年里惊起一行白鹭

    背影组

    素不相识的两个人,因缘际会的相遇。却有着这许多共同之处,除了说缘分,我词穷了。

    我把文章发给似舞,让她看看有没有要增减的地方。她的善良再次淋漓尽至地表现出来,使劲儿地夸我写得好!直夸得我脸红心虚。

    末了她弱弱地说,你能别老夸我吗?也损损我,否则都不好意思了。

    我也是醉了!在这个没优点还想杜撰点什么出来吹一吹的年代,居然有人求损!

    我笑:你说损什么?

    半天回我,一时想不起来。

    那咱们就不强损了,实事求是,正如文首我说的:不浮夸,不虚幻。

    可爱的似舞!因了这“缘分”二字,我们可否来一个厦门之约?

    篔筜湖的白鹭纷飞,鼓浪屿的异国风情。还有我,陌生话少熟了话唠的我,都在等你来!

    《世间事星探计划:让更多的人认识你》

    福利|参与互动
    亲爱的读者,欣赏完本期“星星”的故事,你有什么感受?
    评论区回答,点赞最多者可获得两元打赏。

  • 我们认为荒度时间,只是自己没有目标

    我常常一边玩手机一边觉得自己浪费了青春,一边看泡沫剧一边觉得浪费了时间,一边吃零食一边抱怨自己控制不住自己,在生活中,对自己的抱怨太多,无奈太多。

    每个朝阳升起的早上,我希望自己可以去外面感受新鲜的空气,随着太阳的升起去奔跑,去忙忙碌碌,才能让自己的生活更充实,想法总是格外美好,所以才会败给现实。现实自然是我窝在屋子里,玩手机,打游戏,刷微博,逛朋友圈,然后看着无聊乏味却不得不看的电视剧。因为我觉得,如果我不看电视剧,就会特别特别的无聊,特别心慌,因为不知道自己能干什么,该去干什么。这样的我,等到在站在窗边看外面的风景时,应该就是看夕阳西下,天已经开始慢慢的变暗了。

    说实话,我很讨厌这样的自己,无比讨厌,特别讨厌,甚至厌恶,游手好闲,没有目标,没有梦想,看不见未来,哪怕一个虚无缥缈的未来,都不愿意让自己去追寻。心中总会有着许多鸿鹄之志,想干这个,想成为那样的人,却不愿意付出辛苦,付出努力,光是想想就觉得好累。感觉别人都好幸运,好成功,渴望成为他们那样的人,梦想跟他们能走上一样的路,可是亲爱的你,有没有想过,你看见别人的成功,是他们多少次失败换来的,你看见的风光,是他们经历了多少个无助又彷徨的黑夜换来的。你会感觉自己累了的时候就早点睡,告诫自己不要熬夜,会衰老,然而有的时候却胡思乱想,睡不着的时候,你可曾为自己规划过未来?在凌晨的时候,这个世界有多少人在为着生活奔波,梦想努力,你不过是逛淘宝,刷微博,除了让自己鼻梁上的眼镜多了一圈又一圈,让自己支付宝里的钱由四位数变成三位数变成两位数直至成为零,你还有什么能够证明那些你思绪万千的时光?

    真恨这样的自己,成为不了自己喜欢的模样。不够优秀,不够突出,在人群中永远找不到,从小在别人家孩子的阴影中长大,琴棋书画样样不会,唱歌跳舞全没天赋,性格不好,脾气不好,就连学习,都学不明白。不止一次认为自己,很笨,笨的无可救药。一个连自己都不爱自己的人,谁又会爱你?

    上课的时候永远是在玩手机,玩着连自己都不知道再玩些什么的手机。课余时间对自己说,我要看些书来充实自己,可是拿起书的时候连自己都想嘲笑自己,你装什么文艺?看的书,不管是感兴趣还是不感兴趣,通通看过就忘,没有领悟到书中的道理,没有记住优美的文字,可能过几天,连书中说的是什么都不知道,做不到一目十行,做不到过目不忘,怨天怨地,为什么不能成全自己一个聪明伶俐的好脑袋,为什么要让自己和别人有着那么大的差距。出去逛街永远都是买买买,有用的,没用的,该买的,不该买的,永远都是什么时候逛街什么时候就算过完了一个月,不管是当月的几号,父母是不是刚刚给完生活费,挥霍无度,回来后无比后悔,委屈的跟父母说,这个月接下来的日子过不下去了,父母永远都是那么那么的惯着孩子,听到没有饭钱时绝对是跳起来给打钱,一分钟都不敢耽误,生怕饿到他们的宝贝。而他们的宝贝呢,除了在跟父母说的时候有过后悔,埋怨自己不该乱花钱以外,有那么些许自责外,当又一笔钱到账时,只会继续挥霍这笔钱。

    每天晚上躺在床上,玩了一天手机疲惫不堪,告诉自己总玩手机对身体不好,趁着年轻应该做该做的事,想做的事,要认真对待每一天,不能让日子过的这么碌碌无为。但是当睡醒了以后,日子照旧,并没有一点点的偏差,吃饭,睡觉,玩手机,连窗外的风景都懒得看一眼。然后躺在床上继续埋怨自己不该浪费这一天的好时光,对自己说着我有好多好多想要做的事情,明天开始做,可是明天的你,还会记得吗?现在的你,是否还记得,以前的理想或梦想,定下的目标立下的誓言?或许你还记得,只是从未去努力过。

    小时候假期在奶奶家长大,因为性格内向不愿意出去玩,就在屋里看电视,以至于学习不好却戴着度数甚高的近视镜。然而却继续看,度数继续涨,每次配新眼镜看自己的度数涨了后都会无比后悔,无比懊恼,无比埋怨自己,可是这样的感觉会陪伴自己多久?一天?两天?很可能一天都不到吧?新眼镜度数够了,会继续玩电脑,甚至没日没夜,废寝忘食。

    上大学开始就希望自己可以变成自己管自己的学费生活费,不管父母要钱,甚至节假日可以用自己的钱给父母礼物的人,真的在想,天天想怎么能做到,到现在为止都在想,想了好几年,还是那个到月等着父母给生活费,到年等着父母给学费的孩子。好像我一直幻想着,不停歇,在宿舍坐着仰头,就能有这么一笔钱狠狠地砸向我的脸。

    爱看那些心灵鸡汤,虽然看的时候感慨万千,无比赞同,格外欣赏,看过之后皆被遗忘,继续过着自己平平淡淡,在生活中扔块石头都不会激起任何波澜的日子。可能会偶尔感叹自己已经老了,看着一批又一批新来军训的孩子,知道自己真的不小了,却撑不起一片天。

    总想给父母更好的生活,让他们无忧无虑,就像他们给小时候的自己一样,为此可能很多个日夜碾转反侧,却迟迟没有任何的行动,然后就是他们还在为着你的学费奔波。

    亲爱的你,是不是特别特别无助,觉得以后的道路上,自己只能一个人,觉得身边的人都和自己不一样,他们的路和自己不同,可是你真的知道,自己想要走哪条路么?

    你现在荒度时间,只不过是自己不知道想要干什么,以此来打发自己的时间,至少这样才会感觉到自己还好好的。

    亲爱的你,应该给自己更好的生活,你应该活的精致,过的开心,不去依赖任何人,靠自己,给自己一切想要的。不管你喜欢什么,想做什么,专一些,认真点,选择你真正热爱的,选择你不会后悔的,选择你会不管多难一直坚持下去的,放弃自己仅仅只是感兴趣却不能为此付出一切的,只选择一件事去做,只选择一类人去成为,只选择一种工作去对待,然后为此付出整个心。我喜欢文字,却在大一大二最闲的时候迟迟不愿意为此付出,等到忙了,事情多了,责任重了,才发现自己真的喜欢,不愿意放下,那就开始吧,至少在做喜欢的事情时是开心的。如果你在做你认为你应该喜欢的事情时,并不是很开心,甚至很累,每天都有点强迫性的逼自己去做,那你应该好好想想,未来的日子,真的要这么过么?你是真的热爱么?真的热爱是乐此不疲,废寝忘食,你,做得到么?

    对自己好点,一天三餐,按时吃饭,想熬夜的时候熬夜,想赖床的时候赖床,绝对不强迫自己做不喜欢的事情,享受自己的生活。

    做自己喜欢的事情,哪怕只能触摸到它的边缘,坚持下去,每天一点点,或许以后它可能不会存在你的生活中,但谁又说的准呢?至少你此刻是开心的,并且过的有意义。

    少看没有营养的泡沫剧,多看一些书,多出去走走,攒些钱出去旅游,看看没看过的风景,走没走过的路,遇没遇过的人。想买东西的时候在去逛淘宝,有事情的时候再去聊微信,当你不再大把的浪费时间,你会发现,原来飞速流逝的时间,其实可以很长很长,完成许多许多事情。

    规划自己的未来,想要活成的模样,并且为那个样子每天做一点改变,让自己更加接近,每天看几页书,每天攒几块钱,不为以前后悔,更加憧憬明天,不埋怨,不抱怨,鼓励自己,表扬自己,我希望,我们都可以变成想变成的模样,感谢过去的时光,期待未来的日子。