7

低端姿势拿下某IDC公司主站

 3 years ago
source link: https://zhuanlan.zhihu.com/p/26658739
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

低端姿势拿下某IDC公司主站

我不生产代码,我只是代码的搬运工。

开头之前先说一些废话,有一些是对我之前渗透,编程之路的自学回忆,也有一些是自己的感悟。不敢说自己的见解有多高深,但是敢保证完全都是真实经历。

距离上一次做渗透测试还是很久以前的时候了,很久以前自己还只是一个脚本小子,在学习我人生中自学的第一门编程语言VB6.0之后,借助仅有的VB基础了解了一下VBScript以及ASP3.0几大内置对象之后,就开始上手使用过气的ASP开始做一些小网站小功能。

俗话说得好,知己知彼百战百胜,那个时候,IIS6.0+ASP3.0+Access的技术栈还是非常流行的,大大小小的新闻站博客站企业宣传站,甚至是各地政府机关事业单位的系统都是使用这一套技术栈做的(比如我老家的政府市长信箱,高考志愿填报系统等等)。因为Windows平台+Office套件+IIS的可视化服务器配置,这一套技术栈的入门做的非常新手友好。没过多久时间把前端HTML+CSS+JavaScript复习一下,我算是正式走上了WEB开发的道路。

大概在一个月明星稀的夜晚,对高考无望的我在网上自己搜索了一些关于Access注入的文章之后,结合自己之前已有的基础,像是打开了新世界的大门。原来show.asp?id=1997的id参数还可以提交除了数字以外的内容啊!果然我的以往的思维受到了局限,就像是之前做数学题总是忘记考虑变量为零,忘记考虑开根之后有负数的情况一样,很多程序员同样也和我一样没有考虑到id这里是可以人为修改,提交非数字的内容导致系统错误,甚至是可以提取敏感数据的SQL指令,或者根本不用提交恶意SQL指令,因为系统错误里面可能就暴露了敏感数据,导致千里之堤毁于蚁穴。

遇到瓶颈:

小小的我不满足于只靠一些已有的漏洞利用思路,固定流程的工具脚本来做渗透测试。碰到一些自己没接触过的技术栈,框架,可能就没办法继续下去了。渗透不仅仅只是拿工具一通乱扫。有些背后的东西,只有自己亲身用过,了解过,才知道什么地方容易出问题,什么地方隐藏着深不可测的可能导致千里之堤毁灭的“蚁穴”。于是现在更多时间花在了基础的学习上。

有句话叫做:学得越多,越觉得自己什么都不懂。很多年以前不太明白这句话究竟是神马意思。后来在看乌云,看知识库的时候彻底明白了这句话的含义。学习对的东西,是这个世界上永赚不赔的生意。

废话就说那么多啦,还有什么想聊的欢迎私信我。下面开始正题。

事发起因:

朋友听说花4W重做了一个官网主页

v2-da5b398fb9ad697738ec3d8717142354_720w.png我表示想要见识见识现在的四万块钱外包做的成果是什么样子。(当然应该是开玩笑的,这站我看了不需要那么多钱的)

信息收集:

一般准备对一个网站入手,首先都应该观察的是他的网站结构,URL,目录等等,这些地方一般都具有一些很明显的特征,很容易暴露出该网站使用的技术栈,框架。

于是当我鼠标移上“首页”链接的时候,看到了广大PHPer非常熟悉的URL结构。

这不就是ThinkPHP默认的URL样式嘛!

不过ThinkPHP有好几种版本,我们还得测试一下版本看看,最简单的就是报错。

ThinkPHP默认情况下的路由规则是[应用]/[控制器]/[操作],我们可以给他一个错误的应用,一般就会抱错。这里居然没有关闭debug显错,这是一个非常危险的行为。

在ThinkPHP,Yii,Symfony,Laravel安装了debug-bar等插件的情况下,debug信息会暴露非常多的关键信息。

老版本的ThinkPHP 3.2会暴露调用栈,通过调用栈信息可以判断版本号,文件物理路径。

新版本的ThinkPHP 5.0如果没有关闭debug显错,会暴露文件源码,一般源码里面会有很多关键信息,甚至会暴露硬编码在源码里面的密钥,签名,内网ip等等。如果该页面连接了数据库,ThinkPHP 5.0的调试栏甚至会直接暴露调用过的配置信息,其中就会有数据库的账户密码ip等等。

而Flask等python上的框架没有关闭debug那简直就是致命灾难,Flask的调试模式里面可以直接执行python语句,相当于给黑客直接免费赠送了一个webshell。

这些东西都是需要自己有开发经验,能看懂各种调试信息,对框架很熟悉,才能对于这种危险有所认识了解,否则近在眼前的利用点,可能都会被忽略,从而让你觉得拿下这个网站的目标远在天边。

分析服务器环境:

我们看到目录下有phpStudy,这是一个非常新手友好化的PHP集成开发环境,在这里我强烈推荐各位PHP新手使用,他把整个WAMP环境的部署配置都做的像IIS一样可视化操作,非常方便,而且这款软件是免费的,非常良心。

嗷跑题了,我们接着说分析服务器环境。

phpStudy默认是安装了phpmyadmin的,并且根目录下自带phpinfo.php文件和l.php这个探针文件,这又为我们刺探服务器信息提供了非常多的帮助。

不过这些都不是什么,我更关心的是phpmyadmin。

因为我们拿下一个站的最终目的就是放置webshell,提权获取服务器最高权限。所以我们需要找一些能够在服务器上放置文件的办法。

phpStudy默认的数据库帐号密码都是root,所以我们在phpmyadmin试试看。

果然还就真的进去了,我的天,这安全意识多差啊,root密码都不改的?

接着我们知道root帐号登录的情况下,可以使用OUTFILE的方式导出文件。从而在服务器上放置我们的webshell,并且我们由于通过ThinkPHP的报错已经知道了服务器的物理路径,所以我们可以直接将webshell放置在web目录下访问。当如果ThinkPHP没有报错也没关系,phpmyadmin是一个多入口的php程序,我们可以通过访问phpmyadmin本身一些非入口文件,让他报错来显示web目录的物理路径。

我们先执行
SELECT * FROM `mysql`.`user` INTO OUTFILE 'D://phpStudy//WWW//ThinkPHP//test.php';

发现报错为

#1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

一般出现这个报错是因为现在的MySQL考虑到安全原因,一般都禁止了这种文件导出功能,而要开启这个功能,必须修改my.ini等配置文件,而我们现在连webshell都没有拿到,根本无法修改,所以我们可以换个思路。

我之前曾经写过一个监控MySQL的SQL查询执行的程序cw1997/MySQL-Monitor,借助的就是MySQL的general_log,MySQL中这个general_log是用于记录MySQL中所有执行过的SQL查询,他的记录方式可以是数据表,也可以是文件,并且文件路径也可以指定。

并且最关键的一点是,这个功能是可以动态开启的,所谓动态开启,就是可以不需要重启MySQL。那么我们是不是可以通过开启这个功能,然后我们将这个文件路径设置到web目录下,并且文件名扩展名设置为.php,然后我们再手动查询一下webshell脚本的代码内容,这样这个执行记录就存储在了这个日志文件里面,所以我们只要一查询

<?php @ev(防和谐补丁)al($_POST[admin])?>

那么这段代码就被永久存储在了这个php文件中,并且由于我们将他设置了php扩展名,那么可以按照标准的php文件解析,不就实现了在服务器上放置webshell吗?

getwebshell:

执行如下sql,便可以写入成功webshell到网站web目录下,webshell访问地址为http://www.xxx.com.cn/ThinkPHP/test.php,密码为admin。

show global variables like '%general%';
set global general_log = on;
set global general_log_file = 'D://phpStudy//WWW//ThinkPHP//test.php';
select '<?php @ev(防和谐补丁)al($_POST[admin])?>';

我们这里注意一个细节,就是第一条sql执行的时候general_log已经是ON了。

默认情况下MySQL是关闭了这个功能的,所以我们高度怀疑这个网站可能已经有前辈先我一步拿下了。

这个时候你们猜猜用菜刀能连上吗?

细心一点回味前面的内容,仔细想想???

——————给你们10秒钟时间——————

肯定是连不上的,还记得前面那个l.php的探针截图里面,我测试了ev(防和谐补丁)al这个函数是执行不了的对吗?执行不了那肯定就连不上啦!

但是别忘了php还有一个assert断言函数照样可以动态执行php代码,这个assert就是一个漏网之鱼,也是一个能把千里之堤毁灭的“蚁穴”。

我们换一下执行语句。

这下就算是成功拿下了webshell。

参观比我先行一步的黑客前辈:

前面提到了general_log已经被开启,高度怀疑之前已经有人入侵成功过这个网站,现在直到看到这个文件,更加证实了我的判断。

看index.php正常文件的修改时间,再看看这个webshell的修改时间,果然这个网站上线12个小时,就有黑客来“光顾”了!!!真是无孔不入啊!

通过判断那个a.txt的时间,应该也是它留下的,打开一看是二进制乱码,应该是他的一个木马。

这就是典型的MySQL general_log日志格式,看来他也是用这种方法拿的webshell啊,从这里我们也可以看出这种方法拿webshell的原理。并且可以看出他的木马比我免杀做的更厉害。

在Windows环境下,MySQL,Apache等进程一般都是以administrator权限登录,这一点和iis,sql server不一样,所以意味着提权一般不会很难。

先看看服务器开放端口

公网开放了3389端口,可以直接连上。

查看进程,发现有安全狗,但是我这么多getwebshell等操作,居然没有报警和拦截,可能是老版本狗。

试了一下加账户提权,发现可以加帐号,但是提权失败。

应该是安全狗搞的鬼。

一个细节:

大家注意到了一个细节,为什么提权的时候我换到了Windows Server 2003下操作?

我给一张图大家就能明白了。

Windows 7下访问一般情况下为了安全起见只会显示一个小对话框,而Windows Server 2003是会直接进入远程桌面的欢迎界面,这样方便我们查看Windows版本,以及测试shift等后门。

像Windows 7一般用getpass.exe等工具是抓不到密码的,所以获取到了Windows版本可以方便我们对症下药。

提权失败:

因为有安全狗,所以我就懒得继续弄下去了,一般安全狗等防护软件和黑客之间的较量永远在不断升级,攻与防之间的博弈在时间的流逝中激烈的进行着,除非是在这一行有着非常深入的钻研和与时俱进的精神,不然还是比较难弄的。我这也算是一个半途而废的反面教材把。

一些社工:

俗话说得好,人心最难防。

也有俗话说得好,木桶里面的水取决于最短的那块木板。

而人,有的时候往往就是最短的那块木板。

很多时候软件,硬件防御措施做得很好,但是这种防御总归需要人去操作,有人的参与,那么就有可能存在漏洞。




前期我也通过社工,大致了解了一下他们服务器在五一节是否有值班人员维护。

以及判断一下安全狗的版本情况(因为老版本安全狗不需要用户登录安全狗帐号即可使用)。

讲到社工,那又是另一门学问了。安全界有一本社工圣经——《渗透的艺术》,无人不知,无人不晓。

从这个渗透案例来看,真的几乎是毫无水平,很多都是网站开发者自己的设置不当,安全意识不足埋下的定时炸弹,这个定时炸弹在仅仅12个小时之后就已经开始爆炸了。可见安全问题无处不在,我们整个渗透流程中,任何一环都可能存在“蚁穴”,他会将整个系统击溃。

其实网络安全问题无时无刻都发生在我们身边,“徐玉玉”事件发生,源头就是当地有关行业的系统网站被入侵导致信息泄漏,根本就是这些粗制滥造网站的开发者,对于安全问题的漠视。

作为一个WEB开发者,先不说别的,就光ThinkPHP默认的URL路由,都不知道将多少搜索引擎的爬虫拦在了门外,作为一个企业宣传站,连基本的SEO都成问题,这样的外包团队,这样的劣质开发者却仍然可以继续在各种垃圾外包公司“招摇撞骗”。靠着半吊子技术苟活于人间。

还有这个圈子的某些人浮躁的不像话,像个跳梁小丑一样,拿着别人的工具,别人写好的脚本或者metasploit模块弹个计算器,就敢在外面自称白帽子。批量扫了几个xss,弹了个窗提交了SRC,就开始打着各种旗号开办培训班收徒,或是各大展会露脸,朋友圈微博轮番来一波图片轰炸,结识几个老板,到处拉像“徐玉玉”案件源头这种卖数据的单子,靠着这种黑心钱发家致富。有些人,甚至成为了知乎,微博的大V,甚至就在我们的身边,打着安全培训的幌子,培养者一批又一批的黑手,继续残害着像“徐玉玉”一样的家庭。

稍微好一点的,也是黑吃黑,帮助菠菜,大人站做黑帽SEO,影响别的企业在搜索引擎的排名。我在第一次进这些webshell售卖群,看到的信息也是令我震惊,大到gov,edu,央企官网,小到批量来的企业站个人站博客站,标出的价格触目惊心。

最让我感到震惊的是某CTV,就是大家天天看电视都能看到的那个电视台的官网,有人在群里面卖这个官网的shell,权重很高价格也很贵。我一开始不信,但是后来他发了一张菜刀的连接截图,里面的目录结构我一个一个试了一下,果然都对上了,应该是真的。原来这么大的央企,在网络安全的防护仅仅如此。因为他们对于网络安全的漠视,导致这些权重极高的网站webshell流到了某些黑帽SEO之手,他们帮助菠菜,大人行业做SEO,借助大站的权重提升这些违法网站的权重和搜索引擎排名。这些央企,gov的网络部门由于自己的失职,导致自己的网站无形间成为了这些违法行业的帮凶。后来由于记者变多等种种原因,一般这些群都很快就会解散换阵地,后面是否卖出去了也就不得而知了。这些事情真的在后面完全改变了我的价值观,原来我们天天使用的各种网站,早已被各种黑手给渗透进去了。

请每一个准备进入开发者行列的同学,请在心理装着你的用户安全,用户从注册你的网站那一刻开始,就把他的隐私托付给了你,请用心对待!每一个曾经试图使用技术这把双刃剑在法律边缘行走的同学,请想想你的父母老师朋友,想想国家为我们的付出,他们可不希望我们在邪路上越走越远,造成一失足成千古恨。谢谢各位聆听我的感悟!

本文章由

原创,在知乎专栏-代码之美 https://zhuanlan.zhihu.com/codes 首发,转载请注明出处。大家喜欢和支持我的文章可以点开我的头像以及专栏名称进行关注,或是点击下方的打赏按钮进行支持,谢谢!

Recommend

  • 112
    • Engadget 中国版 cn.engadget.com 6 years ago
    • Cache

    iPhone 8 及 8 Plus 主站评测:看不到的大变化

    智能手机随着时间的进展,不仅屏幕愈来愈大,边框同时也愈来愈小。可以说我们使用者与信息间的距离无论是概念上还是事实上,都愈来愈近。看到了这样的趋势,苹果推出了 iPhone X 做为回应,但同时为了让转移不要那么突然,同时还发布了 iPhone 8 和 8 Plus 两款机...

  • 134
    • Engadget 中国版 cn.engadget.com 6 years ago
    • Cache

    Google Clips 主站动手玩:不光是相机,也是摄影师

    在昨天的发表会后,很多人都对 Pixel 2 强大的相机抱有高度的兴趣 -- 毕竟手机相机大家都用这么久了,在么样的场景下使用、有什么样的期望,大家心里多少都有数。相对来说,这个五公分见方,取名为「Clips」的相机,用处就显得不那么明白,特别是 Google 还为它加...

  • 183
    • Engadget 中国版 cn.engadget.com 6 years ago
    • Cache

    Nintendo Labo 主站动手玩:硬纸板从来没有这么好玩!

    说到任天堂,那毫无疑问的就是将「游戏性」放在画面或技术性之前的代表。从很大的程度上来说,老任上个月发表的「Labo」,可以说是将这个概念发挥到了极致,利用硬纸板组成了各种「配件」,配合 Switch 上的游戏软件,产生出各种新奇的玩法。利用这种方式,不仅可...

  • 75

    2月12日消息,在几天前A站ACFUN曾经由于部分原因突然无法访问,而且官方微博也发出了想要再活五百年的文字,不少网友猜测这个视频弹幕网站可能由于经营不利正式“凉了”。然而在今天下午A站却回复了访问,视频也可以正常播放,难道说事情有了转机?

  • 40

    YouTube 最近遭受各种丑闻的围攻,该公司当然希望加强仇恨言论审核。据 华尔街日报 报道,这家全球最大视频网站的高管...

  • 43
    • www.williamlong.info 4 years ago
    • Cache

    IIS子目录web.config与主站冲突解决方法

    IIS子目录web.config与主站冲突解决方法 2019-7-29 19:45:44 | 作者: 月光 | 分类:

  • 1

    为极致办公效率而生,石墨全新主站发布!近期打开石墨文档,你可能会发现它变了,变得有些陌生,甚至有点无从下手了。其实在最开始使用新主站时,小墨的内心也是有些拒绝,改变既定使用习惯总是让人有些难受。但深度体验几天之后,小墨不得不说...

  • 0

    开源深度学习计算平台ImJoy解析:10 -- ImJoy主站之入口文件 Posted on 2022-02-27...

  • 3

    前面讲了ImJoy主站的入口文件main.js,这一篇解析一下该主站的ImJoy组件,它也是整个app的“门面担当”,起到了统筹整个网站的作用。 为了便于分析,将很多高阶的暂时用不到的组件(比如工具栏、窗口管理、...

  • 3

    主站黄金流程ISV开放体系建设与实践-51CTO.COM 主站黄金流程ISV开放体系建设与实践 作者:平台研发曾雅希 2022-06-20 16:54:59 本文将从背景介绍、方案设计、质量管控、实践案例、共...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK