PTES流程
PTES:渗透测试标准过程执行规范或指南
* 前期交互
* 与用户交流沟通,以及了解测试需求、引导用户接受测试方案阶段。合同,保密协议,约定或约束,授权。收费:次,周期:安全服务类
* 情报或信息收集
* 收集组织下的有效资产:指纹识别、googlehacking、域名/子域挖掘、资产识别:设备、系统、数据、应用、网络、人员、制度....
* 威胁建模
* Att&ck的APT攻击链形成攻击模型,有效攻击的途径
* 如:由于发现目标主机开放445端口,且通过nmap发现服务为。。。。,又通过指纹识别技术结合。。。工具发现目标主机的操作系统为server 2008 r2,根据ms漏洞库比较得到存在ms17-010漏洞。因此可利用ms17010对目标展开主机系统访问控制。
* 漏洞分析
* CVE......445开放,。。
* 渗透测试
* 结合建模及分析实战,通过渗透测试技术,软件/工具,战术获得目标的访问控制权限
* 后渗透测试
* 在获得边界权限后,所做出的一系列操作:提权,横向,纵向,越权,会话维持,
* 报告
* 编写专业的方案/文档
根据PTES,渗透测试流程,
信息收集:
扫描IP地址
-p模拟真实环境采用被动模式,防止被检测出大规模扫描但耗时较久
扫描端口
扫出22端口对应版本
nmap采用不同命令,这里用-sV --script=auth提示了版本以及对应可能存在的利用方式
指纹识别
访问80端口,发现有wordpress但无法正确解析,修改hosts文件192.168.218.179 raven.local
成功访问
浏览器插件指纹识别
也可以用kali的whatweb命令进行指纹识别
目录探测
在尽可能不用dirsearch这一类大规模扫描插件的前提下,可以进行目录猜测,看看有没有加固,先下载一个wordpress,浏览他的自带目录看看会不会访问到,经过尝试,这里是可以的
为了直观,这里就用工具了
扫出登录页面
威胁建模
根据PTES步骤,收集信息的下一步是威胁建模
端口22的威胁建模
主机:192.168.218.179 -->22端口的威胁建模
发现的内容:
目的是为后续的渗透测试设计攻击链
通过nmap发现端口22开放,且版本对应openssh6.7,通过漏洞库比较发现该版本已知编号
SSV-90447的漏洞,该漏洞指向客户端信息泄漏和溢出漏洞,通过exploit-db发现用户名存在枚举问题,因此可以推测根据用户名来进行密码爆破,从而获得目标的访问控制权
战术:暴力破解
方法:
用户名如何枚举:利用msf的scanner/ssh/ssh_enumusers模块,设置RHOSTS为靶机地址,设置密码字典路径为rockyou.txt
密码字典如何获得:利用kali自带的rockyou的压缩包,cp到本地进行解压利用
软件:
kali虚拟机
msf
ssh暴力破解软件:hydra(海德拉),Medusa(美杜莎)
mysql的威胁建模
漏洞分析
根据威胁建模,选择ssh的威胁建模进行尝试能不能爆破,
尝试通过,ssh可以进行暴力破解
用locate看kali自带的rockyou地址,这个比较小,完全体有100G,小但也够了
通过枚举用户名出来的名字,只有michael和steven是可以用的,这里举个例子
通过cat /etc/passwd,可以看到在我本机kali里,就有nobody这个用户,但是是设置成nologin的也就是无法登录,其他扫出来的用户都是这样排除掉
渗透测试
在漏洞分析完成之后进行的下一步,目标是获取shell权限
漏洞验证成功,根据威胁建模的下一步,选择用海德拉(hydra)进行已知用户名的ssh密码爆破
1.新建一个user.txt,把刚才爆出来的两个用户名输进去
2.
hydra -L user.txt -P /home/kali/rockyou.txt 192.168.218.179 ssh -Vv -f
用kali尝试ssh登录
成功登录
登录就尝试能不能查看敏感信息,查看linux服务器默认的位置/var/www/
成功访问到了配置文件
尝试登录
成功登录,并且还得了两个账户的数据库账号信息
默认数据库加密都是md5,但我收藏的网站?
又去网上找了一个,我只能说你不解密,有的是人来解密
这是steven的密码
当然现在获取了数据库的管理员权限,我们可以直接更改密码,但为了隐蔽性,能直接破解密码就直接破解密码,从结果上来说,这里确实不好直接更改密码,因为这样我们还是会不知道steven的ssh密码,当然我们也可以照常提权,但是无法获得steven的ssh权限,就无法用常规的sudo -l维持系统权限提权了(只能用威胁建模的第二个mysql提权方式)
成功在前端登录了steven账号,尝试看看steven的ssh是不是也是这个密码
成功登录
接下来想干嘛?当然是想提权了
后渗透测试
提权属于后渗透测试内容,根据PTES,渗透测试下一步是后渗透测试
想尝试通过维持用户权限来提权执行sudo -l,发现michael没有权限执行
发现steven有sudo -l的执行权限,并且发现可以维持root权限的是python
好,那么这里就可以用常规提权方式'维持'
python -c 'import pty;pty.spawn("/bin/bash")'
这句话的意思就是用python(root权限)来调用出root权限下的bash终端,也就是维持了python的root权限进了root终端
成功获得root权限,之后就是用find查查flag,就不写了
MYSQL的UDF提权
1.locate mysql udf
2.cp到本地目录下
3.scp传到靶机(我为什么要传这个?,因为1581.c需要这个,我只是按照工具的需要与我自己的版本等信息进行选择)
目录路径可以改
4.靶机按照1581.c的步骤一步一步来,记得改路径(1581.c不需要编译,也不需要传到靶机上,只是提供一个如何使用udf提权的实例,就打ctf跟看wp一样)
5.mysql -uroot -pR@v3nSecurity
靶机登录数据库
6.然后就按照1581.c的步骤一步一步来,但是步骤这里有个问题,
create function do_system returns integer soname 'udf.so';这一句代码不能执行,提示没有这个函数,可以用create function sys_exec returns integer soname 'lib_mysqludf_sys_64.so';来替换
我这里只改了find命令的权限,根据1581.c,你也可以更改其他命令权限,这都是一样的,然后调用find
成功提权!
学习之余的笔记,udf提权难但其实也不难,因为现在还只是在用各种工具,而工具连自己怎么用,工具我需要什么,其实工具自己都有写(1581.c),主要学的还是一个想法,一个思路,感觉就像是写数学题,怎么想到的,威胁建模是怎么写的,PTES的过程比较重要.
链接:https://pan.baidu.你com/s/170P8wG_ZuaOC好Ale4FZN3BQ?pwd=zlmn
提取码:zlmn