PT测试基础和工具的使用

来源:互联网 发布:现实爆炸录像软件 编辑:程序博客网 时间:2024/05/19 06:37

电脑里的kali和metasploitable晾了很久,很多知识都忘干净了。这些日子过得跟狗一样,挺长时间也没做笔记了,打开电脑发现很多工具都忘记怎么用了。必会的工具和方法应该常加练习。如果大家想了解和学习PT方面的知识,建议深读安全专家Patrick Engebretson的著作<<渗透测试实践指南-必知必会的工具与方法>>。

前两天打开metasploitable,然后发现root密码给忘记了。metasploitable是一个集成了很多服务软件和漏洞的靶机,有一个默认的登录用户msfadmin/msfadmin。忘记root密码这很尴尬,试了一些常用的密码都不对。后来就用想用kali远程拿下metasploitable的root权限,然后改掉password就行了。很尴尬的是没有root权限metasploitable的ip设置不了,在之前我在meta的/etc/network/interfaces里设置了开机的ip自动设置,最后只能改kali的ip,先把路由打通。这里讲讲拿下meta权限的过程和必会工具的使用。在测试之前已经设置好kali和meta了。kali的ip是10.10.10.10,meat的是10.10.10.100。

1.端口扫描工具nmap

关于工具的介绍就不多说了。介绍一下常用的参数。

0x1:扫描方式:1.-sS 默认方式,SYN扫描 2.-sT TCP连接扫描 3.-sX XMAS扫描 4.-sN NULL扫描 5.-sU UDP连接扫描

比较常用的只是sS和sT扫描,UDP其实不常用,不过有时候可能会有意想不到的效果。XMAS和NULL扫描都是发送的非常规数据包,这种扫描方式往往针对完全遵循RFC文档的系统有效,也就是说,在windows服务器下的扫描结果往往是不可靠的。

0x2:可选项 1. -p 指定端口范围 2. -O 扫描操作系统类型 3. --script 指定脚本(例如banner和vuln)4.-n指定不进行dns解析 5.-PN 指定扫描主机状态active 6.-sV  探测服务类型

上面是一些最常用的参数。在这里我们用nmap的TCP扫描meta的全端口(我发现TCP比SYN竟然更快),服务器的操作系统类型和服务的详细信息。

nmap -sS -sV  -n -p- -PN -O 10.10.10.100

下面是扫描结果。

Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2017-05-15 23:16 EDT
Stats: 0:02:30 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 96.67% done; ETC: 23:19 (0:00:04 remaining)
Stats: 0:02:35 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 96.67% done; ETC: 23:19 (0:00:04 remaining)
Stats: 0:02:57 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan
NSE Timing: About 98.81% done; ETC: 23:19 (0:00:00 remaining)
Nmap scan report for 10.10.10.100
Host is up (0.0025s latency).
Not shown: 65505 closed ports
PORT      STATE SERVICE     VERSION
21/tcp    open  ftp         vsftpd 2.3.4
22/tcp    open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp    open  telnet      Linux telnetd
25/tcp    open  smtp        Postfix smtpd
53/tcp    open  domain      ISC BIND 9.4.2
80/tcp    open  http        Apache httpd 2.2.8 ((Ubuntu) DAV/2)
111/tcp   open  rpcbind     2 (RPC #100000)
139/tcp   open  netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
445/tcp   open  netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
512/tcp   open  exec        netkit-rsh rexecd
513/tcp   open  login?
514/tcp   open  shell       Netkit rshd
1099/tcp  open  rmiregistry GNU Classpath grmiregistry
1524/tcp  open  shell       Metasploitable root shell
2049/tcp  open  nfs         2-4 (RPC #100003)
2121/tcp  open  ftp         ProFTPD 1.3.1
3306/tcp  open  mysql       MySQL 5.0.51a-3ubuntu5
3632/tcp  open  distccd     distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
5432/tcp  open  postgresql  PostgreSQL DB 8.3.0 - 8.3.7
5900/tcp  open  vnc         VNC (protocol 3.3)
6000/tcp  open  X11         (access denied)
6667/tcp  open  irc         Unreal ircd
6697/tcp  open  irc         Unreal ircd
8009/tcp  open  ajp13       Apache Jserv (Protocol v1.3)
8180/tcp  open  http        Apache Tomcat/Coyote JSP engine 1.1
8787/tcp  open  drb         Ruby DRb RMI (Ruby 1.8; path /usr/lib/ruby/1.8/drb)
33199/tcp open  status      1 (RPC #100024)
45358/tcp open  nlockmgr    1-4 (RPC #100021)
45750/tcp open  mountd      1-3 (RPC #100005)
47275/tcp open  unknown
MAC Address: 00:0C:29:C9:D6:EC (VMware)
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.9 - 2.6.33
Network Distance: 1 hop
Service Info: Hosts:  metasploitable.localdomain, localhost, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 184.23 seconds

完成了扫描其实meta也就沦陷了。我在重置meta密码的时候直接用nc连到meta的野shell,也就是1524端口。meta开放的端口相当多,所以漏洞也很多。后面会用nessus进行漏洞分析,nmap其实也自带脚本进行漏洞扫描。只需要在扫描端口时候添加参数--script vuln。但是通常使用nmap --script扫描出的漏洞和dos有关,并没有太大的利用价值,这有些令人沮丧。当然有些时候也有惊喜,例如injection。

2.爆破工具medusa

0x1:-u 单个用户名 -U 用户名文件 -p 单个密码 -P 密码文件 -M 服务名

medusa -u root -P /usr/share/passlist/rockyou.txt -M ssh

medusa爆破工具可以破解多种服务的密码,其实成功率并不高。在PT之前你应该收集网站各种信息然后制作针对该网站的用户名和密码库。

3.web服务评估工具nikto

nikto的使用方法很灵活,参数也很多。这里使用nikto -h 10.10.10.100 80进行web服务评估。

- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          10.10.10.100
+ Target Hostname:    10.10.10.100
+ Target Port:        80
+ Start Time:         2017-05-15 23:46:01 (GMT-4)
---------------------------------------------------------------------------
+ Server: Apache/2.2.8 (Ubuntu) DAV/2
+ Retrieved x-powered-by header: PHP/5.2.4-2ubuntu5.10
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ Uncommon header 'tcn' found, with contents: list
+ Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. Seehttp://www.wisec.it/sectou.php?id=4698ebdc59d15. The following alternatives for 'index' were found: index.php
+ Apache/2.2.8 appears to be outdated (current is at least Apache/2.4.12). Apache 2.0.65 (final release) and 2.2.29 are also current.
+ Web Server returns a valid response with junk HTTP methods, this may cause false positives.
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ /phpinfo.php?VARIABLE=<script>alert('Vulnerable')</script>: Output from the phpinfo() function was found.
+ OSVDB-3268: /doc/: Directory indexing found.
+ OSVDB-48: /doc/: The /doc/ directory is browsable. This may be /usr/doc.
+ OSVDB-12184: /?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY strings.
+ OSVDB-12184: /?=PHPE9568F36-D428-11d2-A769-00AA001ACF42: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY strings.
nitko的参数多,扫描出来的信息更多。之前使用nikto测试过一个网站,服务器开启了PUT和DELETE方法,这可以允许我们在服务器上上传和删除文件,但使用nc手动上传和metasploit载荷攻击都不成功,可能是服务器端有写保护。在进行分析时最值得我们注意的是CVE和OSVDB漏洞披露。然后可以使用metasploit进行漏洞利用。

4.漏洞扫描nessus

nessus是一款强大的..(此处省略1000个字)。我已经在csdn资源里上传了nessus.deb,去年的版本了,下载下来之后应该更新更新插件。nessus的安装,注册等还是挺麻烦的,网络上关于这些的介绍也很多。安装后启动服务: /etc/init.d/nessusd start

进行PT实验也是有方法论的,然而我忘了。一般来说首先进行dns解析,ip探测,网络架构分析,然后扫描端口,扫描服务漏洞,收集的信息自然越多越好。当然如果你是一个急于求成的脚本小子也可以跳过信息收集阶段直接进行漏洞扫描。不过结果往往会让我们碰一鼻子灰。https://127.0.0.1:8834/,登录nessus。

用户名和密码这些都是要去官网注册的。关于nessus的使用也不是一时半会能吃透的,像很多工具一样。在nessus中新建一个advanced扫描,扫描出的结果如下。

使用nessus扫描metasploitable检测出很多的漏洞。最令我们振奋的无非是高危和严重的。进到漏洞信息里查看漏洞的介绍。然后在右下方有CVE和osvdb漏洞码。有了这些就可以在metasploit中进行载荷攻击了。在这里选一个漏洞查看一些信息,稍后用metasploit进行一下攻击测试。前两个都是ssh的弱随机数漏洞,metasploit中没有相应的攻击模块,在这里我们选择了比较利于利用的vsftpd后门漏洞。这个漏洞并不是在advanced扫描中给出的,而是在basic network扫描类型中扫描出的,不同的nessus设置给出的扫描结果也是不一样的,如果遗漏了一些设置往往会尴尬地错过你想要的。大家应该多多熟悉这些软件,不断地学习理论知识后,应该可以自己开发一些模块,插件,并把它们更新到社区。下面是我们选择的漏洞。

上面是漏洞的一些介绍,产生的原因还有解决方案等。这些基本都是数年前的老洞了,一些老古董机可能还有存在,不过肯定也早是千疮百孔。这里仅仅进行试验,熟练下测试流程。我们应该仔细读读这些服务的描述,不断了解和积累经验。关于这个漏洞我们还要关注它的CVE和osvdb代码,这会帮助我们在metasploit中定位它的攻击载荷。

5.漏洞利用metasploit

当我们知道了要攻击的目标,目标的服务,目标存在的漏洞和该漏洞的id。我们便可以请metasploit出山,metasploitable服务器就是为metasploit而生的。在kali中启动metasploit的命令为msfconsole。每次启动都会显示一个"awesome flag",这是什么?你启动过才知道这个小惊喜。当然metasploit是有窗口界面的,如果你不喜欢console的话。要使用窗口界面操作metasploit你需要armitage。这个软件在kali2.0中有些尴尬,你需要自己重装。我已经在csdn资源中上传了该资源。armitage的使用你应该自己去探究。言归正传,我们继续刚才的测试流程。在msf>中可以使用命令帮助学习命令操作。这里我们首先使用search搜索漏洞相关。

msf> search osvdb:73573,结果如下。

接下来一气呵成。

上面的图片显示我们已经成功使用metasploit利用该漏洞拿下了目标服务器的shell。ifconfig显示的ip地址是靶机的IP。使用metasploit漏洞利用的流程为:

1.root@kalilinux#msfconsole //启动metasploit console版

2.msf> search cve:2008-1226 或search osvdb:95039 //搜索漏洞攻击程序,cve和osvdb等编号应该是搜索到的编号,同时支持名字搜索,请参阅帮助

3.msf> use exploit_name //选择漏洞攻击程序

4.msf> show payloads //显示可用的攻击载荷

5.msf> set payload_name //选择使用攻击载荷

6.msf> show options //显示设置项

7.msf> set option_name values //设置攻击向量

8.msf> exploit //完成上述设置后,进行代码攻击

在上附的两张截图中与上述步骤一一对应,请自行参阅。

6.瑞士军刀netcat

瑞士军刀是一个很好用的工具,前面提到过,我在重置metasploitable密码的时候直接使用该工具连接上了wild_shell。但是netcat的功能远远不止于此。两个非常有用的功能,上传下载文件以及盲连接。盲连接往往用于识别服务。这个工具适合有了一定基础和经验的使用者使用。例如使用nc连接上80端口,我们可以自行指定请求报头,这项工作也可以在代理器中完成,但是nc的console会一览无余地显示服务器端返回的信息。使用nc连上80端口,调用PUT,GET,POST,TRACE等方法,有时可能会有一些意想不到的效果。但目前有了很多的http扫描工具,我们应该先学会使用工具,然后理解工具的工作原理,然后脱离工具这个脚手架进行手动测试,最后甚至写出适合自己的工具。

后记:

上述介绍了菜鸟应该熟练掌握的几款工具,路途的遥远远不止于此。想成为一名合格的测试人员,我们应该精通一个操作系统-Kali。kali的前身是backtrack,里面包含了相当丰富的工具。从扫描,嗅探,社工,到逆向,破解,报告。上面介绍的6款只是kali这个系统中的冰山一角。但无论工具如何丰富,真正支撑起我们工作能力,学习能力的始终是理论知识。大道至简,知易行难。

原创粉丝点击